温馨提示×

centos怎么设置rabbitmq集群

小樊
45
2026-10-14 17:10:22
栏目: 智能运维

下面以 CentOS 7/8 为例,说明如何搭建 RabbitMQ 集群(常用的是普通集群 + 镜像队列,这里先讲集群基础搭建)。


一、环境准备

假设有 3 台 CentOS 服务器:

主机名 IP
node1 192.168.1.11
node2 192.168.1.12
node3 192.168.1.13

1. 设置主机名(每台都做)

hostnamectl set-hostname node1
hostnamectl set-hostname node2
hostnamectl set-hostname node3

2. 配置 hosts(每台都做)

cat >> /etc/hosts <<EOF
192.168.1.11 node1
192.168.1.12 node2
192.168.1.13 node3
EOF

3. 关闭防火墙(测试环境)

systemctl stop firewalld
systemctl disable firewalld

或开放端口(生产建议):

  • 4369(epmd)
  • 5672(AMQP)
  • 15672(管理页面)
  • 25672(集群通信)

二、安装 RabbitMQ(每台都做)

1. 安装 Erlang

yum install -y epel-release
yum install -y erlang

2. 安装 RabbitMQ

rpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc
yum install -y https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.12.0/rabbitmq-server-3.12.0-1.el8.noarch.rpm

版本可自行替换

3. 启动 RabbitMQ

systemctl enable rabbitmq-server
systemctl start rabbitmq-server

4. 启用管理插件

rabbitmq-plugins enable rabbitmq_management

三、配置 RabbitMQ 集群(关键点)

1. 同步 cookie(非常重要)

RabbitMQ 节点之间通过 .erlang.cookie 认证

在 node1 上:

cat /var/lib/rabbitmq/.erlang.cookie

将内容复制,覆盖 node2 / node3:

scp /var/lib/rabbitmq/.erlang.cookie node2:/var/lib/rabbitmq/
scp /var/lib/rabbitmq/.erlang.cookie node3:/var/lib/rabbitmq/

权限必须正确:

chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie
chmod 400 /var/lib/rabbitmq/.erlang.cookie

四、加入集群

在 node2 / node3 上执行:

rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@node1
rabbitmqctl start_app

rabbit@node1 中的 node1 是主机名


五、查看集群状态

在任意节点:

rabbitmqctl cluster_status

应看到 3 个节点。


六、设置镜像队列(推荐)

在任意节点执行:

rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'

表示所有队列在集群中镜像。


七、验证

浏览器访问:

http://192.168.1.11:15672

默认账号:

  • 用户名:guest
  • 密码:guest

注意:guest 只能本地登录,远程需新建用户


八、常见问题

1. 节点无法加入

  • cookie 不一致
  • 主机名解析失败
  • 防火墙未关

2. 节点名不对

rabbitmqctl status | grep node

如果你需要:

  • Docker 方式搭建
  • RabbitMQ + Keepalived / HAProxy
  • CentOS 6 老版本

可以继续问我。

0 踩