温馨提示×

RabbitMQ Linux集群怎么搭建

小樊
40
2025-12-06 18:50:48
栏目: 智能运维

Linux 上搭建 RabbitMQ 集群的标准流程

一 环境准备与版本兼容

  • 准备至少 3 台 Linux 服务器(同一网段,建议内网互通),安装相同版本的 ErlangRabbitMQ,并确认版本兼容(参考官方兼容矩阵)。
  • 建议统一主机名并配置 /etc/hosts 解析,例如:
    192.168.1.11 rabbit1
    192.168.1.12 rabbit2
    192.168.1.13 rabbit3
  • 开放必要端口或临时关闭防火墙/SELinux:
    • 4369(Erlang 端口映射/发现)
    • 5672(AMQP 客户端)
    • 15672(管理插件 Web)
    • 25672(节点间通信)
  • 安装方式示例:
    • Ubuntu/Debian:sudo apt update && sudo apt install rabbitmq-server
    • CentOS/RHEL:sudo yum install rabbitmq-server
  • 启用管理插件(可选,便于可视化管理):sudo rabbitmq-plugins enable rabbitmq_management。

二 统一 Erlang Cookie 与节点加入

  • 在所有节点确保 Erlang Cookie 一致(同一字符串),Cookie 文件常见路径:
    • /var/lib/rabbitmq/.erlang.cookie
    • 或 ~/.erlang.cookie
  • 建议用安全方式复制 Cookie 并设置权限:
    • scp /var/lib/rabbitmq/.erlang.cookie user@node2:/var/lib/rabbitmq/.erlang.cookie
    • chmod 400 /var/lib/rabbitmq/.erlang.cookie
    • chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie
  • 启动各节点服务:
    • systemctl 方式:sudo systemctl start rabbitmq-server
    • 或后台启动:rabbitmq-server -detached
  • 将节点加入集群(以 rabbit1 为主节点,在 rabbit2/rabbit3 执行):
    • rabbitmqctl stop_app
    • rabbitmqctl reset
    • rabbitmqctl join_cluster rabbit@rabbit1(如需内存节点:join_cluster --ram rabbit@rabbit1)
    • rabbitmqctl start_app
  • 查看集群状态:rabbitmqctl cluster_status(应能看到所有节点的 disc/ram 类型与运行状态)。

三 高可用与运维要点

  • 创建管理员用户(在任一节点执行即可,集群内自动同步):
    • rabbitmqctl add_user admin StrongPass!
    • rabbitmqctl set_user_tags admin administrator
    • rabbitmqctl set_permissions -p “/” admin “." ".” “.*”
  • 启用镜像队列(HA,示例为对所有队列全量镜像):
    • rabbitmqctl set_policy ha-all “^” ‘{“ha-mode”:“all”}’
  • 节点维护与退出:
    • 节点主动离开:rabbitmqctl stop_app → rabbitmqctl reset → rabbitmqctl start_app
    • 主节点剔除故障节点:rabbitmqctl forget_cluster_node rabbit@nodeX
  • 数据目录与日志(可选,便于独立存储与排障):
    • 在 /etc/rabbitmq/rabbitmq-env.conf 中设置:
      RABBITMQ_MNESIA_BASE=/data/rabbitmq/data
      RABBITMQ_LOG_BASE=/data/rabbitmq/logs
    • 重启服务后生效。

四 快速验证与常见问题

  • 验证清单:
    • 管理界面:访问 http://任一节点IP:15672,使用新建管理员登录,查看 Nodes 页面是否全量在线。
    • 集群状态:rabbitmqctl cluster_status 输出包含 running_nodesdisk_nodes/ram_nodes 且无分区告警。
    • 连通性:客户端连接 5672 端口能正常发布/消费。
  • 常见问题与处理:
    • 节点无法加入集群:检查 /etc/hosts 解析、主机名一致、Cookie 一致且权限为 400、相关端口开放。
    • 管理界面无法登录:默认 guest/guest 仅允许本机登录,需创建远程管理员账户。
    • 节点类型调整:先 rabbitmqctl stop_app,再 rabbitmqctl change_cluster_node_type disc|ram,最后 start_app。
    • 跨网段/高延迟网络:集群稳定性与分区处理会变差,建议同机房部署并使用镜像队列提升可用性。

0