在CentOS上搭建RabbitMQ集群需要以下几个步骤:
RabbitMQ是用Erlang编写的,因此首先需要安装Erlang环境。
# 添加Erlang解决方案库 sudo yum install -y epel-release sudo yum install -y erlang # 验证安装 erl -version
接下来安装RabbitMQ服务器。
# 添加RabbitMQ解决方案库 sudo wget -O /etc/yum.repos.d/rabbitmq-server.repo https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/el/7/x86_64/rabbitmq-server.repo sudo yum install -y rabbitmq-server # 启动RabbitMQ服务 sudo systemctl start rabbitmq-server sudo systemctl enable rabbitmq-server
RabbitMQ集群中的所有节点必须共享相同的Erlang cookie。默认情况下,cookie文件位于/var/lib/rabbitmq/.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/ # 确保cookie文件的权限正确 sudo chmod 400 /var/lib/rabbitmq/.erlang.cookie
假设你有三个节点:node1, node2, node3。
# 启动RabbitMQ服务 sudo systemctl start rabbitmq-server # 设置RabbitMQ为集群模式 sudo rabbitmqctl stop_app sudo rabbitmqctl reset sudo rabbitmqctl join_cluster rabbit@node1 sudo rabbitmqctl start_app
# 启动RabbitMQ服务 sudo systemctl start 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_management sudo rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
确保防火墙允许RabbitMQ的默认端口(5672和15672)。
# 允许RabbitMQ端口 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管理界面可以通过浏览器访问http://your_node_ip:15672
,默认用户名和密码是guest/guest
。
通过以上步骤,你应该能够在CentOS上成功搭建一个RabbitMQ集群。