RabbitMQ集群-镜像模式搭建
- 准备两台服务器
rabbitmq1 服务器
rabbitmq2 服务器 - 修改主机名称
vi /etc/hosts 在两台服务器上分别添加如下内容
10.188.1.172 rabbitmq1
10.188.1.174 rabbitmq2 - 在rabbitmq1、rabbitmq2服务器上安装rabbitmq
rabbitmq安装参考地址:https://blog.youkuaiyun.com/yj735972447/article/details/136471639 - 拷贝.erlang.cookie
将rabbitmq1作为主节点,将/var/lib/rabbitmq/.erlang.cookie文件拷贝到rabbitmq2中/var/lib/rabbitmq目录中 - 停止rabbitmq2上的服务
rabbitmqctl stop_app
- 重置rabbitmq2节点,将RabbitMQ节点重置还原到最初状态
rabbitmqctl reset
- 将rabbitmq2加入集群
以下两种方式根据自己情况选择:
rabbitmqctl join_cluster rabbit@rabbitmq1
默认是以硬盘方式加入
rabbitmqctl join_cluster --ram rabbit@rabbitmq1
--ram是以内存方式加入 - 启动rabbitmq2上的服务
rabbitmqctl start_app
- 查看群集状态
rabbitmqctl cluster_status
- 将集群设为镜像模式
rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
rabbitmqctl set_policy [-p Vhost] Name Pattern Definition [Priority] -p Vhost: 可选参数,针对指定vhost下的queue进行设置 Name: policy的名称 Pattern: exchanges或queue的匹配模式(正则表达式) Definition:镜像定义,包括三个部分ha-mode, ha-params, ha-sync-mode ha-mode:指明镜像队列的模式,有效值为 all/exactly/nodes all:表示在集群中所有的节点上进行镜像 exactly:表示在指定个数的节点上进行镜像,节点的个数由ha-params指定 nodes:表示在指定的节点上进行镜像,节点名称通过ha-params指定 ha-params:ha-mode模式需要用到的参数 ha-sync-mode:进行队列中消息的同步方式,有效值为automatic和manual。 automatic:新增加节点自动同步全量数据。manual: 新增节点只同步新增数据, 全量数据需要手工同步。 Priority:可选参数,policy的优先级