rabbitmq集群搭建和镜像队列
集群搭建
准备三台服务器
- 172.16.140.133 Jan
- 172.16.140.132 Feb
- 172.16.140.133 Mar
修改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.cookie
scp /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
-
就算整个集群只剩下一台机器了,依然能消费队列里面的消息