RabbitMQ在CentOS系统上部署HA集群

随着互联网技术的快速发展,消息队列已成为许多分布式系统中不可或缺的组件,RabbitMQ作为一款高性能、可伸缩的消息队列,在分布式系统中得到了广泛应用,本文将介绍如何在CentOS系统上部署RabbitMQ的HA集群,确保系统的高可用性和稳定性。
HA集群概述
HA(High Availability)集群是指通过多台服务器共同工作,以提高系统的可用性和可靠性,在RabbitMQ中,HA集群通常由至少两台服务器组成,通过镜像队列(mirrored queues)实现数据的冗余和故障转移。
环境准备
- 准备两台CentOS服务器,确保操作系统版本一致。
- 安装Erlang语言环境,RabbitMQ是基于Erlang语言开发的。
- 安装RabbitMQ软件包。
RabbitMQ安装
在每台服务器上,通过以下命令安装Erlang语言环境:
sudo yum install erlang
下载RabbitMQ软件包,解压并安装:

wget https://www.rabbitmq.com/releases/rabbitmq-server/v3.8.9/rabbitmq-server-3.8.9-1.el7.noarch.rpm sudo rpm -ivh rabbitmq-server-3.8.9-1.el7.noarch.rpm
启动RabbitMQ服务:
sudo systemctl start rabbitmq-server
配置RabbitMQ HA集群
- 编辑RabbitMQ配置文件(通常位于
/etc/rabbitmq/目录下),添加以下内容:
rabbitmqctl set_cluster_name my_cluster
rabbitmqctl set_policy ha_all ".*" '{"ha-mode":"exactly","ha-params":{"nodes":"rabbit@node1,rabbit@node2"}}' 在第二台服务器上,执行以下命令:
sudo rabbitmqctl stop_app sudo rabbitmqctl reset sudo rabbitmqctl join_cluster rabbit@node1 sudo rabbitmqctl start_app
确保两台服务器上的RabbitMQ集群状态一致:
sudo rabbitmqctl status
验证HA集群
在任意一台服务器上创建一个队列,并查看另一台服务器上的队列状态:
sudo rabbitmqctl list_queues
停止第一台服务器上的RabbitMQ服务,观察第二台服务器上的队列状态:

sudo systemctl stop rabbitmq-server
sudo rabbitmqctl list_queues
第二台服务器上的队列状态应该与第一台服务器相同。
FAQs
问题:如何查看RabbitMQ集群状态?解答: 使用以下命令查看RabbitMQ集群状态:
sudo rabbitmqctl status
问题:如何删除RabbitMQ集群中的节点?解答: 在删除节点之前,确保该节点上的RabbitMQ服务已停止,使用以下命令删除节点:
sudo rabbitmqctl stop_app sudo rabbitmqctl reset sudo rabbitmqctl forget_cluster_node rabbit@node_to_remove sudo rabbitmqctl start_app
