温馨提示×

Linux环境下RabbitMQ集群搭建步骤

小樊
46
2025-12-26 11:34:03
栏目: 智能运维

Linux环境下RabbitMQ集群搭建步骤

一 环境准备与版本选择

  • 准备至少3台 Linux 主机(同一网段,建议内网互通),安装相同版本的 ErlangRabbitMQ,并确保版本兼容(参考官方兼容矩阵)。
  • 统一主机名与解析:设置每台机器的 /etc/hostname/etc/hosts,保证节点间可用短主机名互相解析(如:192.168.10.11 rabbit1、192.168.10.12 rabbit2、192.168.10.13 rabbit3)。
  • 开放必要端口或临时关闭防火墙(生产环境建议精细放通):4369(Erlang 端口映射/发现)、5672(AMQP)、15672(管理 UI)、25672(节点间通信)。

二 安装与基础配置

  • 安装方式(二选一或按发行版选择):
    • Ubuntu/Debian:sudo apt update && sudo apt install -y rabbitmq-server
    • CentOS/RHEL:sudo yum install -y rabbitmq-server
  • 启用管理插件(可选,便于可视化管理):sudo rabbitmq-plugins enable rabbitmq_management
  • 配置远程登录:编辑 /etc/rabbitmq/rabbitmq.config,将 {loopback_users, []} 以合适方式配置(或按需添加特定用户到回环白名单),保存后重启服务。
  • 自定义数据与日志目录(可选):创建目录并赋权,然后在 /etc/rabbitmq/rabbitmq-env.conf 中设置
    • RABBITMQ_MNESIA_BASE=/data/rabbitmq/data
    • RABBITMQ_LOG_BASE=/data/rabbitmq/logs
      重启服务生效。

三 集群搭建关键步骤

  • 统一 Erlang Cookie(节点间认证关键):
    • Cookie 常见路径:$HOME/.erlang.cookie/var/lib/rabbitmq/.erlang.cookie;所有节点必须完全一致。
    • 建议用 scp/rsync 从一台节点分发到其他节点,并设置权限为 400、属主为 rabbitmq:rabbitmq
  • 启动各节点应用:
    • 方式一(推荐 systemd):sudo systemctl start rabbitmq-server
    • 方式二(直接启动):rabbitmq-server -detached
  • 组建集群(以 rabbit1 为种子节点,在 rabbit2/rabbit3 上执行):
    • rabbitmqctl stop_app
    • rabbitmqctl reset(如需清空本地数据)
    • rabbitmqctl join_cluster rabbit@rabbit1(节点名格式为“rabbit@主机名”)
    • rabbitmqctl start_app
  • 验证集群状态:rabbitmqctl cluster_status,应能看到所有节点及运行状态。

四 高可用与运维要点

  • 高可用队列:
    • 经典镜像队列(策略方式,适合存量应用):
      • 启用策略:rabbitmqctl set_policy ha-all “^” ‘{“ha-mode”:“all”}’(将“^”匹配的所有队列镜像到所有节点)。
    • Quorum 队列(推荐,RabbitMQ 3.8+):创建队列时设置 x-queue-type=quorum,具备更强的复制一致性与故障恢复能力。
  • 用户与权限:
    • 创建管理员并赋权(示例):
      • rabbitmqctl add_user admin StrongPass!
      • rabbitmqctl set_user_tags admin administrator
      • rabbitmqctl set_permissions -p “/” admin “." ".” “.*”
    • 注意:guest/guest 默认仅允许本地登录,远程访问需创建新用户。
  • 常用运维命令:
    • 查看状态:rabbitmqctl cluster_status
    • 停止/启动应用:rabbitmqctl stop_app / rabbitmqctl start_app
    • 重置节点:rabbitmqctl reset(清数据,谨慎)
    • 查看节点名:rabbitmqctl status | grep “Node name”

五 常见问题排查

  • 节点无法加入集群:
    • 检查 /etc/hosts 与主机名是否一致、网络是否互通;
    • 核对 .erlang.cookie 内容、权限(400)与属主是否一致;
    • 确保 4369/25672/5672 等端口未被拦截。
  • 管理界面无法远程登录:
    • 确认已启用 rabbitmq_management
    • 检查 loopback_users 配置与新建用户权限是否正确。
  • 端口冲突(单机多实例):
    • 通过 rabbitmq-env.conf / rabbitmq.conf 调整节点端口或改用不同主机部署。

0