产环境标准、可直接复制部署的 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 节点互为镜像

任何单节点宕机,服务不中断

✅ 消息不丢失(持久化 + 镜像

✅ 队列高可用

✅ 负载均衡自动转发

✅ 运维简单、稳定、经过大规模验证

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐