首页主机资讯RabbitMQ在Ubuntu上的负载均衡

RabbitMQ在Ubuntu上的负载均衡

时间2025-12-03 12:57:04发布访客分类主机资讯浏览337
导读:Ubuntu 上 RabbitMQ 的负载均衡实践 一 架构与前置条件 建议采用“RabbitMQ 集群 + 负载均衡器”的架构:集群提供容量与冗余,负载均衡器对外提供统一的 AMQP 5672 入口与健康检查。 节点命名必须唯一,常见形...

Ubuntu 上 RabbitMQ 的负载均衡实践

一 架构与前置条件

  • 建议采用“RabbitMQ 集群 + 负载均衡器”的架构:集群提供容量与冗余,负载均衡器对外提供统一的 AMQP 5672 入口与健康检查。
  • 节点命名必须唯一,常见形式为 rabbit@< 主机名> ;同一主机多实例需通过环境变量设置不同的 RABBITMQ_NODE_PORTRABBITMQ_NODENAME,避免端口冲突。
  • 多机部署需保证各节点 Erlang Cookie 一致(权限建议 400,属主 rabbitmq:rabbitmq),并正确配置 /etc/hosts 或 DNS 解析,以便节点互通。

二 快速搭建集群与必要检查

  • 单机三节点示例(便于本地验证,端口分别为 5672/5673/5674,管理端口 15672/15673/15674):
    • 启动节点
      • RABBITMQ_NODE_PORT=5672 RABBITMQ_SERVER_START_ARGS=“-rabbitmq_management listener [{ port,15672} ]” RABBITMQ_NODENAME=rabbit rabbitmq-server -detached
      • RABBITMQ_NODE_PORT=5673 RABBITMQ_SERVER_START_ARGS=“-rabbitmq_management listener [{ port,15673} ]” RABBITMQ_NODENAME=rabbit1 rabbitmq-server -detached
      • RABBITMQ_NODE_PORT=5674 RABBITMQ_SERVER_START_ARGS=“-rabbitmq_management listener [{ port,15674} ]” RABBITMQ_NODENAME=rabbit2 rabbitmq-server -detached
    • 查看状态
      • rabbitmqctl status
      • rabbitmqctl -n rabbit1 status
      • rabbitmqctl -n rabbit2 status
    • 组建集群(示例将 rabbit1、rabbit2 加入 rabbit)
      • rabbitmqctl -n rabbit1 stop_app
      • rabbitmqctl -n rabbit1 reset
      • rabbitmqctl -n rabbit1 join_cluster rabbit@< 你的主机名>
      • rabbitmqctl -n rabbit1 start_app
      • rabbitmqctl -n rabbit2 stop_app
      • rabbitmqctl -n rabbit2 reset
      • rabbitmqctl -n rabbit2 join_cluster rabbit@< 你的主机名>
      • rabbitmqctl -n rabbit2 start_app
    • 验证
      • rabbitmqctl cluster_status
  • 多机部署要点
    • 同步 Erlang Cookie、配置 /etc/hosts、确保 4369(epmd)、25672(集群分发)等端口放通,再按上述 join_cluster 步骤组建集群。

三 使用 HAProxy 进行负载均衡

  • 安装与启用
    • sudo apt-get update & & sudo apt-get install haproxy
    • sudo systemctl enable --now haproxy(安装后通常已自动启动)
  • 配置示例(/etc/haproxy/haproxy.cfg)
    • 统计页面
      • listen stats
        • bind *:8100
        • mode http
        • stats enable
        • stats realm Haproxy\ Statistics
        • stats uri /
        • stats auth admin:admin
    • AMQP 负载均衡(TCP 转发,轮询,健康检查)
      • listen rabbitmq
        • bind *:5670
        • mode tcp
        • balance roundrobin
        • server rabbit1 127.0.0.1:5672 check inter 5000 rise 2 fall 3
        • server rabbit2 127.0.0.1:5673 check inter 5000 rise 2 fall 3
        • server rabbit3 127.0.0.1:5674 check inter 5000 rise 2 fall 3
  • 应用与验证
    • sudo systemctl restart haproxy
    • 客户端连接 5670 端口即可被轮询分发到后端节点;访问 http://< 负载均衡器IP> :8100/ 查看状态与健康检查情况。

四 高可用与队列镜像

  • 在仅“集群”形态下,队列默认只存在于创建它的节点,其他节点故障会导致不可达。为提升可用性,配置队列镜像(策略示例):
    • rabbitmqctl set_policy ha-all “^” ‘{ “ha-mode”:“all”,“ha-sync-mode”:“automatic”} ’
    • 说明:上述策略会对匹配 ^ 的所有队列做全量镜像,生产环境可按需调整匹配规则与策略名称,以平衡一致性与性能。

五 生产注意事项与常见问题

  • 单点防护:单个 HAProxy 仍可能成为单点,建议部署 Keepalived + VIP 或多实例 HAProxy 做主备/集群。
  • 节点类型:集群中应保证至少一个 磁盘节点(disc),通常将 RAM 节点disc 节点 混合部署;节点类型可在停机后通过 rabbitmqctl change_cluster_node_type 调整。
  • 用户与权限:远程访问管理界面需创建管理员用户(默认 guest/guest 仅本地可登录),并为应用分配最小权限的专用账户。
  • 端口与连通性:放通 5672(AMQP)、15672(管理)、4369/25672(集群/分发)及负载均衡器与健康检查端口;多机环境优先使用主机名或内网 IP,避免依赖 localhost。
  • 健康检查与观察:HAProxy 的 inter/rise/fall 参数可调节探测频率与恢复条件;结合 /stats 页面与 rabbitmqctl cluster_status 持续观察节点与队列状态。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: RabbitMQ在Ubuntu上的负载均衡
本文地址: https://pptw.com/jishu/762272.html
Informix在Linux上如何实现高可用 Ubuntu RabbitMQ内存配置技巧

游客 回复需填写必要信息