准备三台服务器
修改3台机器的hosts文件
vim /etc/hosts
添加以下内容
172.16.140.130 Jan
172.16.140.131 Feb
172.16.140.132 Mar
确保各个节点的cookie文件使用的是同一个值
scp /root/.erlang.cookie root@Feb:/root/.erlang.cookie

.erlang.cookie的位置,如果是二进制安装的话是在$HOME下,可以用ll -a去查看rpm安装的话,在/var/lib/rabbitmq/.erlang.cookiescp /root/.erlang.cookie root@Mar:/root/.erlang.cookie

查看各个节点的文件内容是否一致

在三台服务器上都启动rabbitmq服务
rabbitmq-server -detached
在Feb上执行
关闭rabbitmq服务
rabbitmqctl stop会将erlang虚拟机关闭,rabbitmqctl stop_app只关闭rabbitmq服务rabbitmqctl stop_app
重置服务
rabbitmqctl reset
加入节点Jan
rabbitmqctl join_cluster rabbit@Jan
Jan要开启25672和4369端口
firewall-cmd --add-port=25672/tcp --permanent
firewall-cmd --add-port=4369/tcp --permanent
重新启动应用服务
rabbitmqctl start_app
在Mar上执行
关闭rabbitmq服务
rabbitmqctl stop会将erlang虚拟机关闭,rabbitmqctl stop_app只关闭rabbitmq服务rabbitmqctl stop_app
重置服务
rabbitmqctl reset
加入节点Feb
rabbitmqctl join_cluster rabbit@Feb
重新启动应用服务
rabbitmqctl start_app
查看集群状态
rabbitmqctl cluster_status

解除集群状态(需要解除的机器上)
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
rabbitmqctl cluster_status
或者
在需要解除的机器上
rabbitmqctl stop_app
在主节点上
rabbitmqctl forget_cluster_node rabbit@Feb
镜像队列的机制,可以将队列镜像到底集群中的其他Broker节点之上,如果集群中的一个节点失效了,队列能自动的切换到镜像中的另一个节点上以保证服务的可用性
启动三台集群节点
随便找一个节点添加policy

新建一个队列,队列的名称应当符合定义的policy的pattern
新建一个队列

关闭rabbit@Jan之后,发现node变成了rabbit@Mar,Mirrors 变成了rabbit@Feb
就算整个集群只剩下一台机器了,依然能消费队列里面的消息