在CentOS上搭建RabbitMQ集群需要以下几个步骤:
1. 安装Erlang
RabbitMQ是用Erlang编写的,因此首先需要安装Erlang。
sudo yum install -y erlang
验证Erlang安装:
erl -version
2. 安装RabbitMQ
使用Erlang的包管理器erlang来安装RabbitMQ。
sudo yum install -y rabbitmq-server
启动RabbitMQ服务:
sudo systemctl start rabbitmq-server
设置RabbitMQ开机自启动:
sudo systemctl enable rabbitmq-server
3. 配置Erlang Cookie
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 scp /var/lib/rabbitmq/.erlang.cookie user@node3:/var/lib/rabbitmq/
在每个节点上设置正确的权限:
sudo chmod 400 /var/lib/rabbitmq/.erlang.cookie
4. 配置RabbitMQ集群
假设你有三个节点:node1, node2, node3。
在node1上配置集群
-
启动RabbitMQ管理插件(可选):
sudo rabbitmq-plugins enable rabbitmq_management -
将node2加入集群:
sudo rabbitmqctl stop_app sudo rabbitmqctl reset sudo rabbitmqctl join_cluster rabbit@node1 sudo rabbitmqctl start_app
在node2上配置集群
-
停止RabbitMQ服务:
sudo systemctl stop rabbitmq-server -
将node2加入node1的集群:
sudo rabbitmqctl stop_app sudo rabbitmqctl reset sudo rabbitmqctl join_cluster rabbit@node1 sudo rabbitmqctl start_app
在node3上配置集群
-
停止RabbitMQ服务:
sudo systemctl stop rabbitmq-server -
将node3加入node1的集群:
sudo rabbitmqctl stop_app sudo rabbitmqctl reset sudo rabbitmqctl join_cluster rabbit@node1 sudo rabbitmqctl start_app
5. 验证集群状态
在任意一个节点上运行以下命令来验证集群状态:
sudo rabbitmqctl cluster_status
你应该能看到所有节点都加入了集群。
6. 配置镜像队列(可选)
为了提高高可用性,可以配置镜像队列,使得队列中的消息在多个节点上进行复制。
在任意一个节点上运行以下命令来启用镜像队列:
sudo rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
这会将所有队列设置为镜像队列,并在所有节点上进行复制。
7. 配置防火墙
确保防火墙允许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集群应该已经搭建完成并可以正常工作了。
以上就是关于“rabbitmq集群在centos上如何搭建”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm