理解了上面的概念之后,我们再搭建 RabbitMQ Server 高可用集群,就非常容易了。

默认.erlang.cookie文件是隐藏的,ls命令并不能查看,你也可以手动搜索下文件:

[root@node1 ~]# find / -name ".erlang.cookie"/var/lib/rabbitmq/.erlang.cookie
[root@node1 ~]# cat /var/lib/rabbitmq/.erlang.cookieLBOTELUJAMXDMIXNTZMB

node1服务器中的.erlang.cookie文件,拷贝到node2服务器上:

[root@node1 ~]# scp /var/lib/rabbitmq/.erlang.cookie root@node2:/var/lib/rabbitmq

先停止运行节点,然后以后台方式启动 RabbitMQ Server(node1node2分别执行):

[root@node1 ~]# rabbitmqctl stop[root@node1 ~]# rabbitmq-server -detached

然后我们以node1作为集群中心,在node2上执行加入集群中心命令(节点类型为磁盘节点):

[root@node1 ~]# rabbitmqctl stop_app[root@node1 ~]# rabbitmqctl reset [root@node1 ~]# rabbitmqctl join_cluster rabbit@node1//默认是磁盘节点,如果是内存节点的话,需要加--ram参数
[root@node1 ~]# rabbitmqctl start_app

查看集群的状态(包含node1node2节点):

[root@node1 ~]# rabbitmqctl cluster_statusCluster status of node rabbit@node1
[{nodes,[{disc,[rabbit@node1,rabbit@node2]}]},
 {running_nodes,[rabbit@node2,rabbit@node1]},
 {cluster_name,<<"rabbit@node1">>},
 {partitions,[]},
 {alarms,[{rabbit@node2,[]},{rabbit@node1,[]}]}]
 
 
 
 
 
 https://www.cnblogs.com/knowledgesea/archive/2017/03/11/6535766.html
 搭建rabbitmq的镜像高可用模式集群
写到这里,接下来,有朋友要请我吃饭啦,我就速战速决赴会去啦,即便如此该有的也会都有的。go,go,go。
这一节要参考的文档是:http://www.rabbitmq.com/ha.html
首先镜像模式要依赖policy模块,这个模块是做什么用的呢?
policy中文来说是政策,策略的意思,那么他就是要设置,那些Exchanges或者queue的数据需要复制,同步,如何复制同步?对就是做这些的。
这里有点内容的,我先上例子慢慢说:
[root@G ~]# ./rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
参数意思为:
ha-all:为策略名称。
^:为匹配符,只有一个^代表匹配所有,^zlh为匹配名称为zlh的exchanges或者queue。
ha-mode:为匹配类型,他分为3种模式:all-所有(所有的queue),exctly-部分(需配置ha-params参数,此参数为int类型比如3,众多集群中的随机3台机器),nodes-指定(需配置ha-params参数,此参数为数组类型比如["3rabbit@F","rabbit@G"]这样指定为F与G这2台机器。)。
参考示例如下
当然在web管理界面也能配置:
配置完看队列如下,其中表示ha-haall的说明用我的ha-haall策略啦,属于镜像模式,没有表示的就是普通模式:
 
总结