RabbitMQ 高可用集群配置,
·
产环境标准、可直接复制部署的 RabbitMQ 3.8+ 高可用集群(镜像队列 + 镜像 HA 策略 + 负载均衡)
最稳定、企业最常用模式:普通集群 + 镜像队列。
一、架构说明(生产标配)
- 3 台节点:
rmq1、rmq2、rmq3 - 磁盘节点,所有队列全镜像同步
- 任意一台挂掉,业务不中断、不丢消息
- 前端用 HAProxy / Nginx 做负载均衡(4 层转发)
二、主机规划(直接改 IP 即可)
rmq1 192.168.1.101
rmq2 192.168.1.102
rmq3 192.168.1.103
所有节点先配置 hosts(3 台都执行)
echo "192.168.1.101 rmq1
192.168.1.102 rmq2
192.168.1.103 rmq3" >> /etc/hosts
三、3 台都安装 RabbitMQ(相同版本)
yum install -y rabbitmq-server
启动并设置 cookie(集群关键!cookie 必须完全一致)
systemctl start rabbitmq-server
systemctl enable rabbitmq-server
同步 cookie(只在 rmq1 执行)
scp /var/lib/rabbitmq/.erlang.cookie root@rmq2:/var/lib/rabbitmq/
scp /var/lib/rabbitmq/.erlang.cookie root@rmq3:/var/lib/rabbitmq/
rmq2、rmq3 改权限
chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie
chmod 400 /var/lib/rabbitmq/.erlang.cookie
3 台都重启
systemctl restart rabbitmq-server
四、组建集群
在 rmq2 执行
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@rmq1
rabbitmqctl start_app
在 rmq3 执行
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@rmq1
rabbitmqctl start_app
查看集群状态(任意节点)
出现 3 个 rabbit@rmq1/2/3 即成功。
rabbitmqctl cluster_status
五、设置高可用镜像队列策略
一条命令:所有队列自动全镜像同步
rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all","ha-sync-mode":"automatic","ha-sync-batch-size":10000}' --priority 1
策略解释(运维必懂)
^匹配所有队列ha-mode: all:所有节点镜像ha-sync-mode: automatic:新节点自动同步消息- 任何节点宕机,队列不丢失、不中断
查看策略
rabbitmqctl list_policies
六、开启后台、创建 admin 用户(3 台都执行)
rabbitmq-plugins enable rabbitmq_management
rabbitmqctl add_user admin 123456
rabbitmqctl set_user_tags admin administrator
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
后台访问:http://任意节点IP:15672
七、负载均衡(生产必须)
用 HAProxy 做 4 层转发(最稳定,不破坏长连接)
haproxy.cfg 关键配置
listen rabbitmq
bind 0.0.0.0:5672
mode tcp
balance roundrobin
server rmq1 192.168.1.101:5672 check inter 2000 rise 2 fall 3
server rmq2 192.168.1.102:5672 check inter 2000 rise 2 fall 3
server rmq3 192.168.1.103:5672 check inter 2000 rise 2 fall 3
Spring Boot 连接 LB IP:5672 即可,实现高可用。
八、Spring Boot 连接高可用集群
spring:
rabbitmq:
host: 192.168.1.100 # LB VIP
port: 5672
username: admin
password: 123456
virtual-host: /
# 高可用可靠配置
publisher-confirm-type: correlated
publisher-returns: true
template:
mandatory: true
listener:
simple:
acknowledge-mode: manual
prefetch: 1
concurrency: 5
max-concurrency: 10
九、这套集群保证什么?
✅ 3 节点互为镜像
✅ 任何单节点宕机,服务不中断
✅ 消息不丢失(持久化 + 镜像
✅ 队列高可用
✅ 负载均衡自动转发
✅ 运维简单、稳定、经过大规模验证
更多推荐



所有评论(0)