在CentOS上搭建RabbitMQ集群需要以下几个步骤:
RabbitMQ是用Erlang编写的,因此首先需要安装Erlang。
sudo yum install -y erlang
安装RabbitMQ服务器。
sudo yum install -y rabbitmq-server
启动RabbitMQ服务并设置开机自启动。
sudo systemctl start rabbitmq-server
sudo systemctl enable rabbitmq-server
RabbitMQ节点之间通过Erlang Cookie进行身份验证。确保所有节点的Erlang Cookie相同。
在每个节点上找到Erlang Cookie文件:
sudo find / -name ".erlang.cookie"
将其中一个节点的Cookie复制到其他节点的相同路径下,并确保权限正确:
sudo scp /var/lib/rabbitmq/.erlang.cookie user@node2:/var/lib/rabbitmq/
sudo chmod 400 /var/lib/rabbitmq/.erlang.cookie
假设你有两个节点:node1
和 node2
。
启用管理插件(可选):
sudo rabbitmq-plugins enable rabbitmq_management
将第二个节点加入集群:
sudo rabbitmqctl stop_app
sudo rabbitmqctl reset
sudo rabbitmqctl join_cluster rabbit@node1
sudo rabbitmqctl start_app
停止RabbitMQ服务:
sudo systemctl stop rabbitmq-server
将第二个节点加入集群:
sudo rabbitmqctl stop_app
sudo rabbitmqctl reset
sudo rabbitmqctl join_cluster rabbit@node1
sudo rabbitmqctl start_app
在任意一个节点上,使用以下命令检查集群状态:
sudo rabbitmqctl cluster_status
你应该能看到所有节点都加入了集群。
为了提高高可用性,可以配置镜像队列,使得队列中的消息在多个节点上进行复制。
在任意一个节点上,启用镜像队列插件:
sudo rabbitmq-plugins enable rabbitmq_mirroring_queue
然后配置镜像队列策略:
sudo rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
这会将所有队列设置为镜像队列,并在所有节点上进行复制。
确保防火墙允许RabbitMQ的默认端口(5672)和HTTP管理界面端口(15672)。
sudo firewall-cmd --permanent --zone=public --add-port=5672/tcp
sudo firewall-cmd --permanent --zone=public --add-port=15672/tcp
sudo firewall-cmd --reload
在任意一个节点上,使用RabbitMQ管理界面或命令行工具测试集群是否正常工作。
通过以上步骤,你应该能够在CentOS上成功搭建一个RabbitMQ集群。