首页主机资讯RabbitMQ集群Ubuntu如何搭建

RabbitMQ集群Ubuntu如何搭建

时间2025-11-25 10:58:03发布访客分类主机资讯浏览1486
导读:Ubuntu 上搭建 RabbitMQ 集群实操指南 一 环境准备与前置条件 准备至少 3 台 Ubuntu 22.04/20.04 服务器,建议在同一局域网,主机名唯一(如:rmq1、rmq2、rmq3),并相互可解析(推荐在每台机器的...

Ubuntu 上搭建 RabbitMQ 集群实操指南

一 环境准备与前置条件

  • 准备至少 3 台 Ubuntu 22.04/20.04 服务器,建议在同一局域网,主机名唯一(如:rmq1、rmq2、rmq3),并相互可解析(推荐在每台机器的 /etc/hosts 写入 IP 与主机名映射)。
  • 安装匹配的 Erlang/OTPRabbitMQ 版本,生产环境建议各节点版本完全一致。
  • 开放必要端口:5672(AMQP)、15672(管理插件)、25672(集群通信/节点间通信)。
  • 建议创建专用管理用户,避免使用默认 guest/guest(默认仅允许本机访问)。

二 安装与基础配置

  • 安装 Erlang 与 RabbitMQ(Ubuntu 推荐使用官方 APT 仓库):
# 更新索引
sudo apt update
# 安装 Erlang(版本需与 RabbitMQ 兼容)
sudo apt install -y erlang-nox
# 导入 RabbitMQ 仓库密钥与源(示例为 Ubuntu 20.04 focal;若为 22.04,请将 focal 替换为 jammy)
curl -sLf "https://keys.openpgp.org/vks/v1/by-fingerprint/0A9AF2115F4687BD29803A206B73A36E6026DFCA" \
  | sudo gpg --dearmor | sudo tee /usr/share/keyrings/com.rabbitmq.team.gpg >
    /dev/null
echo "deb [signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://ppa.launchpad.net/rabbitmq/rabbitmq-erlang/ubuntu focal main" \
  | sudo tee /etc/apt/sources.list.d/rabbitmq.list
echo "deb [signed-by=/usr/share/keyrefs/com.rabbitmq.team.gpg] https://ppa.launchpad.net/rabbitmq/rabbitmq-server/ubuntu focal main" \
  | sudo tee -a /etc/apt/sources.list.d/rabbitmq.list
sudo apt update
sudo apt install -y rabbitmq-server
  • 启用管理插件(便于 Web 可视化管理与监控):
sudo rabbitmq-plugins enable rabbitmq_management
  • 防火墙放行(如使用 UFW):
sudo ufw allow 5672/tcp
sudo ufw allow 15672/tcp
sudo ufw allow 25672/tcp
sudo ufw enable
  • 创建管理员用户(示例用户名为 admin,密码自定义):
sudo rabbitmqctl add_user admin <
    StrongPassword>

sudo rabbitmqctl set_user_tags admin administrator
sudo rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
  • 注意:默认 guest/guest 仅允许从 localhost 登录,远程管理请使用自建管理员账户。

三 集群搭建步骤

  • 统一 Erlang Cookie(节点间认证密钥,必须一致):
    • 选择一台作为种子节点(如 rmq1),将它的 Cookie 复制到其它节点,保持文件权限为 400,属主为 rabbitmq:rabbitmq
    • Cookie 默认路径:/var/lib/rabbitmq/.erlang.cookie
    • 操作示例(在 rmq2 上执行,从 rmq1 拷贝):
sudo systemctl stop rabbitmq-server
sudo scp rmq1:/var/lib/rabbitmq/.erlang.cookie /var/lib/rabbitmq/.erlang.cookie
sudo chmod 400 /var/lib/rabbitmq/.erlang.cookie
sudo chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie
sudo systemctl start rabbitmq-server
  • 将节点加入集群(在待加入节点上执行,示例以 rmq2 加入 rmq1):
# 仅停止应用层,不终止 Erlang 节点
sudo rabbitmqctl stop_app
# 重置节点元数据(首次加入或清库时使用)
sudo rabbitmqctl reset
# 加入集群(默认以磁盘节点加入;如需内存节点,追加 --ram)
sudo rabbitmqctl join_cluster rabbit@rmq1
# 启动应用
sudo rabbitmqctl start_app
  • 验证集群状态(在任意节点执行):
sudo rabbitmqctl cluster_status
  • 节点类型说明:未指定 –ram磁盘节点(disc),指定后为 内存节点(ram);通常建议至少保留 1 个磁盘节点 以持久化元数据。

四 高可用与负载均衡

  • 镜像队列(队列数据多副本,提升可用性):
    • 在任意节点设置策略,将队列镜像到所有节点(示例为匹配所有队列):
sudo rabbitmqctl set_policy ha-all "^" '{
"ha-mode":"all","ha-sync-mode":"automatic"}
    '
  • 也可按业务前缀精细化策略,例如仅镜像以 ^my_queue$ 开头的队列。
  • 负载均衡(以 HAProxy 为例,提供 AMQP 与管理面的统一入口):
    • 安装 HAProxy:sudo apt install -y haproxy
    • 示例配置片段(/etc/haproxy/haproxy.cfg):
frontend rabbitmq-amqp
  bind *:5672
  default_backend rabbitmq_nodes

backend rabbitmq_nodes
  balance roundrobin
  server rmq1 192.168.1.11:5672 check
  server rmq2 192.168.1.12:5672 check
  server rmq3 192.168.1.13:5672 check

frontend rabbitmq-mgmt
  bind *:15672
  default_backend rabbitmq_mgmt_nodes

backend rabbitmq_mgmt_nodes
  balance roundrobin
  server rmq1 192.168.1.11:15672 check
  server rmq2 192.168.1.12:15672 check
  server rmq3 192.168.1.13:15672 check
  • 重启 HAProxy:sudo systemctl restart haproxy
  • 访问管理界面:打开浏览器访问 http://< HAProxy_IP> :15672,使用前述 admin 账户登录。

五 常见问题与排查

  • 节点无法加入集群
    • 检查各节点 Erlang Cookie 是否完全一致(路径与权限),以及 /etc/hosts 或 DNS 是否能正确解析节点名(形如 rabbit@rmq1)。
    • 确保 防火墙/安全组 已放行 5672/15672/25672
    • 加入前在目标节点执行 stop_app + reset,再 join_cluster,最后 start_app
  • 版本不一致导致异常
    • 生产环境务必保证所有节点的 RabbitMQ 与 Erlang/OTP 版本一致
  • 管理界面无法远程登录
    • 默认 guest/guest 仅限本机;请使用自建管理员账户,并确保访问端口 15672 已放行。
  • 单机多实例端口冲突
    • 如需在一台机器上模拟多节点,需通过环境变量设置不同的 RABBITMQ_NODE_PORTRABBITMQ_NODENAME,并为管理插件指定不同端口(如 15673/15674)。

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


若转载请注明出处: RabbitMQ集群Ubuntu如何搭建
本文地址: https://pptw.com/jishu/755352.html
Ubuntu RabbitMQ插件如何管理 Debian swap设置过大好吗

游客 回复需填写必要信息