大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
一 普通集群
以如下两台服务器为例
ip: 172.16.9.8 hostname: rabbitmq1 (master)
ip: 172.16.9.9 hostname: rabbitmq2 (slave)
1. 修改host文件
编辑/etc/hosts文件,添加
172.16.9.8 rabbitmq1 172.16.9.9 rabbitmq2 两台机器分别设置hostname hostnamectl set-hostname rabbitmq1(对应的名字)
2. 复制cookie内容
打开文件然后需要先把172.16.9.8 服务器的 /var/lib/rabbitmq/.erlang.cookie中的内容复制到172.16.9.9上
cd /var/lib/rabbimq
scp .erlang.cookie root@172.16.9.9:/var/lib/rabbitmq/.erlang.cookie
赋予权限
chmod 600 .erlang.cookie
chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie
3. 服务器配置
主服务执行:
rabbitmqctl stop_app rabbitmqctl reset rabbitmqctl start_app
如果启动不成功,因为修改了hosts文件,可以重启试试
节点服务执行:
rabbitmqctl stop_app rabbitmqctl reset rabbitmqctl join_cluster --ram rabbit@rabbitmq1 (--ram表示内存节点) rabbitmqctl start_app
和主服务配置脚本的唯一区别是多了第三行的内容,其中–ram指的是作为内存节点,要是想做为磁盘节点的话,就不用加–ram这个参数了
4.只要在节点列表里包含了本身,它就成为一个磁盘节点。在RabbitMQ集群里,必须至少有一个磁盘节点存在。
现在先执行主节点上的脚本,等待执行完成之后再执行服务节点的脚本,顺序不要错了
执行完之后分别在每台机器上查看节点状态
rabbitmqctl cluster_status
往任意一台集群节点里写入消息队列,会复制到另一个节点上。
对于Queue来说,消息实体只存在于其中一个节点,A、B两个节点仅有相同的元数据,即队列结构。当消息进入A节点的Queue中后,consumer从B节点拉取时,RabbitMQ会临时在A、B间进行消息传输,把A中的消息实体取出并经过B发送给consumer。
所以consumer应尽量连接每一个节点,从中取消息。即对于同一个逻辑队列,要在多个节点建立物理Queue。否则无论consumer连A或B,出口总在A,会产生瓶颈。
该模式存在一个问题就是当A节点故障后,B节点无法取到A节点中还未消费的消息实体。如果做了消息持久化,那么得等A节点恢复,然后才可被消费;如果没有持久化的话,然后就没有然后了……
二 设置镜像队列策略
上面配置RabbitMQ默认集群模式,并不能保证队列的高可用性,尽管交换机、绑定这些可以复制到集群里的任何一个节点,但是队列内容不会复制,虽然该模式解决一部分节点压力,但队列节点宕机直接导致该队列无法使用,只能等待重启,所以要想在队列节点宕机或故障也能正常使用,就要复制队列内容到集群里的每个节点,需要创建镜像队列并使用负载均衡器。
在普通集群的中任意节点启用策略,策略会自动同步到集群节点
rabbitmqctl set_policy -p vhost名称 ha-all "^" '{"ha-mode":"all"}'
这行命令在名称为“/”的vhost创建了一个策略,策略名称为ha-all,策略模式为 all 即复制到所有节点,包含新增节点,策略正则表达式为 “^” 表示所有匹配所有队列名称。
例如rabbitmqctl set_policy -p ewmsinfo ha-all “^message” ‘{“ha-mode”:”all”}’
注意:”^message” 这个规则要根据自己修改,这个是指同步”message”开头的队列名称,配置时使用的应用于所有队列,所以表达式为”^”
set_policy使用方式如下:
set_policy [-p vhostpath] {name} {pattern} {definition} [priority]
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/195140.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...