单机多节点搭建 RabbitMQ 集群
在开发或测试环境中,我们往往不需要多台物理机就能模拟高可用集群。通过配置不同的端口和节点名,完全可以在一台机器上启动多个 RabbitMQ 实例并组建集群。下面以 Ubuntu 和 CentOS 为例,演示如何操作。
环境准备与端口说明
RabbitMQ 基于 Erlang 语言开发,涉及三个关键端口:
- 25672:Erlang 分布式通信端口(默认),用于节点间心跳和消息路由。
- 15672:Web 管理控制台端口,用于可视化监控和管理。
- 5672:AMQP 协议端口,客户端连接服务使用的标准端口。
首次安装后,通常占用 5672 和 15672。要启动多节点,我们需要手动指定后续节点的端口。
Ubuntu 环境部署
1. 确认基础状态
先检查当前主节点的状态,确认节点名称和端口占用情况:
rabbitmqctl status
输出首行会显示当前节点名,例如 rabbit@hcss-ecs-2618。记下这个名称,后续加入集群时需要用到。
2. 启动额外节点
假设我们要再启动两个节点,分别命名为 rabbit2 和 rabbit3,并分配不同的端口:
| 节点名称 | AMQP 端口 | Web 管理端口 |
|---|---|---|
| rabbit2 | 5673 | 15673 |
| rabbit3 | 5674 | 15674 |
使用环境变量控制启动参数,命令如下(注意空格和换行):
RABBITMQ_NODE_PORT=5673 RABBITMQ_SERVER_START_ARGS="rabbitmq_management listener [{port,15673}]" RABBITMQ_NODENAME=rabbit2 rabbitmq-server -detached
RABBITMQ_NODE_PORT=5674 RABBITMQ_SERVER_START_ARGS="rabbitmq_management listener [{port,15674}]" RABBITMQ_NODENAME=rabbit3 rabbitmq-server -detached
提示:复制命令时务必小心,尤其是引号和空格。如果启动失败,建议直接粘贴到终端逐字输入,避免从网页复制时丢失特殊字符(如连字符)。
启动成功后,可以通过浏览器访问 http://IP:15673 和 http://IP:15674 验证管理界面是否就绪。
3. 组建集群
将新节点加入主节点所在的集群。首先停止并重置新节点,清除其本地数据:
rabbitmqctl -n rabbit2 stop_app
rabbitmqctl -n rabbit2 reset
rabbitmqctl -n rabbit3 stop_app
rabbitmqctl -n rabbit3 reset
接着执行加入集群命令。注意:请将 rabbit@<主节点名> 替换为你第一步中查到的实际节点名称:
rabbitmqctl -n rabbit2 join_cluster rabbit@hcss-ecs-2618
rabbitmqctl -n rabbit3 join_cluster rabbit@hcss-ecs-2618


