RabbitMQ是基于Erlang语言开发的,因此所有集群节点必须先安装兼容版本的Erlang。在Debian上可通过以下命令安装:
sudo apt update
sudo apt install -y erlang-nox # 安装基础Erlang环境(包含必要模块)
注:部分旧版本RabbitMQ可能需要特定Erlang版本,建议参考RabbitMQ官方Erlang版本要求。
为确保安装最新稳定版RabbitMQ,建议添加官方APT仓库:
# 导入RabbitMQ官方GPG密钥(用于验证软件包完整性)
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
# 添加RabbitMQ仓库(以Debian 11/focal为例,根据实际系统版本调整)
echo "deb [signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] http://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] http://ppa.launchpad.net/rabbitmq/rabbitmq-server/ubuntu focal main" | sudo tee -a /etc/apt/sources.list.d/rabbitmq.list
# 更新软件包列表并安装RabbitMQ
sudo apt update
sudo apt install -y rabbitmq-server
RabbitMQ节点通过Erlang Cookie(位于/var/lib/rabbitmq/.erlang.cookie)验证身份,所有节点的Cookie内容必须完全一致。
# 在主节点(如node1)上查看Cookie内容
sudo cat /var/lib/rabbitmq/.erlang.cookie # 复制输出的字符串
# 将Cookie复制到其他节点(如node2、node3)
sudo scp /var/lib/rabbitmq/.erlang.cookie user@node2:/var/lib/rabbitmq/
sudo scp /var/lib/rabbitmq/.erlang.cookie user@node3:/var/lib/rabbitmq/
# 所有节点设置Cookie权限(确保仅root和rabbitmq用户可访问)
sudo chmod 400 /var/lib/rabbitmq/.erlang.cookie
sudo chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie # 注意:部分系统用户为rabbitmq
在所有集群节点上启动RabbitMQ服务并设置开机自启:
sudo systemctl start rabbitmq-server
sudo systemctl enable rabbitmq-server
选择主节点(如node1),其他节点通过join_cluster命令加入集群。
# 在主节点(node1)上重置节点状态(首次配置无需执行,若已运行过集群需清理)
sudo rabbitmqctl stop_app
sudo rabbitmqctl reset
sudo rabbitmqctl start_app
# 在从节点(如node2)上执行以下命令加入集群
sudo rabbitmqctl stop_app
sudo rabbitmqctl reset
sudo rabbitmqctl join_cluster rabbit@node1 # "node1"为主节点的主机名(需与/etc/hosts或DNS解析一致)
sudo rabbitmqctl start_app
# 重复上述步骤将其他节点(如node3)加入集群
在任意节点上执行以下命令,查看集群是否正常运行:
sudo rabbitmqctl cluster_status
输出应显示所有节点(如node1@hostname、node2@hostname)均已加入集群。
镜像队列可将队列消息复制到多个节点,避免单点故障。以下命令将所有队列设置为全镜像(所有节点均有副本):
sudo rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all","ha-sync-mode":"automatic"}'
ha-mode="all":表示所有节点同步消息;ha-sync-mode="automatic":自动同步队列内容(可选manual手动同步)。启用RabbitMQ管理插件,可通过Web界面查看集群状态、队列、连接等信息:
sudo rabbitmq-plugins enable rabbitmq_management
默认访问地址:http://<节点IP>:15672,使用默认账号guest/guest登录(生产环境建议修改默认密码)。
/etc/hosts文件包含集群节点的IP和主机名映射(如192.168.1.101 node1),避免rabbit@node1无法解析。sudo ufw allow 5672/tcp
sudo ufw allow 15672/tcp
sudo ufw enable
guest),并配置SSL/TLS加密通信。通过以上步骤,即可在Debian系统上搭建一个高可用的RabbitMQ集群。根据实际需求,可进一步调整镜像策略、分区处理等配置。