Ubuntu 上搭建 RabbitMQ 集群的标准流程
一 环境准备与网络要求
192.168.1.11 rmq1
192.168.1.12 rmq2
192.168.1.13 rmq3
以上为后续所有步骤的基础前提。二 安装 Erlang 与 RabbitMQ
sudo apt update
sudo apt install -y erlang-nox
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/keyrings/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
sudo rabbitmq-plugins enable rabbitmq_management
sudo ufw allow 5672/tcp
sudo ufw allow 15672/tcp
sudo ufw allow 25672/tcp
sudo ufw enable
sudo rabbitmqctl add_user admin <StrongPassword>
sudo rabbitmqctl set_user_tags admin administrator
sudo rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
完成后可通过 http://<节点IP>:15672 访问管理界面。三 配置集群核心要点
# 在 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
sudo rabbitmqctl stop_app # 仅停止应用层
sudo rabbitmqctl reset # 首次加入或清库时使用
sudo rabbitmqctl join_cluster rabbit@rmq1 # 默认以磁盘节点加入;如需内存节点,追加 --ram
sudo rabbitmqctl start_app # 启动应用
sudo rabbitmqctl cluster_status
输出应包含所有节点且状态为 running。四 高可用与负载均衡
sudo rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all","ha-sync-mode":"automatic"}'
sudo rabbitmqctl set_policy ha-quorum "^" \
'{"ha-mode":"exactly","ha-params":3,"ha-sync-mode":"automatic"}' \
--priority 0 --apply-to queues
sudo apt install -y haproxy
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
五 常见问题与快速排查