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)