Rabbitmq集群搭建


1、部署环境

事先准备三台机器,并配置相应的hosts解析文件,如下所示:

vim /etc/hosts
192.168.0.108 node1
192.168.0.105 node2
192.168.0.107 node3

2、安装并启动rabbitmq

分别在三台服务器上安装并启动rabbitmq-server

yum install -y epel-release
yum install -y erlang
yum install -y rabbitmq-server
systemctl start rabbitmq-server
systemctl status rabbitmq-server

3、配置并启动集群

将node1的erlang.cookie文件同步复制到其他两台节点(该文件是rabbitmq服务启动时自动生成),因为节点之间需要通过此文件来判断是否允许交流(判断是否属于集群内部节点),如果三台机器的此文件内容不一致则集群无法启动成功。

scp /var/lib/rabbitmq/.erlang.cookie node2:/var/lib/rabbitmq/
scp /var/lib/rabbitmq/.erlang.cookie node3:/var/lib/rabbitmq/

同步完后,分别在node2和node3上执行下述命令,加入集群

#先停止服务(注:这里的参数stop_app和stop是不一样的,stop是停掉服务,stop_app是停掉这个节点,但是并没有停止rabbitmq依赖的erlang进程)
rabbitmqctl stop_app
#重置rabbitmq状态(注意这里会将该节点下的所有数据全部清除,包括队列、交换器、虚拟主机和用户等)
rabbitmqctl reset
#加入集群
rabbitmqctl join_cluster rabbit@node1
#启动服务
rabbitmqctl start_app
#查询集群状态
rabbitmqctl cluster_status

4、管理集群

重启节点

systemctl restart rabbitmq-server

重置节点

rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@node3
rabbitmqctl start_app

拆分/删除集群节点,在对应节点上执行

rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app

创建内存节点

rabbitmqctl join_cluster --ram rabbit@node3

改变节点类型

rabbitmqctl stop_app
rabbitmqctl change_cluster_node_type disc
# disc是磁盘节点,ram是内存节点
rabbitmqctl start_app

5、其他常用操作

#修改集群名称
rabbitmqctl set_cluster_name rabbitmq_test_cluster
#配置镜像队列同步
rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
#配置镜像队列的副本数
rabbitmqctl set_policy ha-two "^" ‘{"ha-mode":"exactly","ha-params":"2","ha-sync-mode":"automatic"}’
#指定ha开头的队列开启镜像复制
rabbitmqctl set_policy ha-all "^ha." ‘{"ha-mode":"all"}’


来自为知笔记(Wiz)