centos

centos下rabbitmq集群如何搭建

小樊
54
2025-09-20 02:31:28
栏目: 智能运维

在CentOS系统下搭建RabbitMQ集群,可以按照以下步骤进行:

1. 安装Erlang

RabbitMQ依赖于Erlang,因此首先需要安装Erlang。

# 添加Erlang解决方案库
sudo yum install -y epel-release

# 安装Erlang
sudo yum install -y erlang

# 验证Erlang安装
erl -version

2. 安装RabbitMQ

在所有节点上安装RabbitMQ。

# 添加RabbitMQ解决方案库
sudo tee /etc/yum.repos.d/rabbitmq.repo <<EOF
[rabbitmq-server]
name=RabbitMQ repository for CentOS/\$releasever/\$basearch
baseurl=https://packagecloud.io/rabbitmq/rabbitmq-server/el/\$releasever/\$basearch
repo_gpgcheck=1
enabled=1
gpgcheck=1
gpgkey=https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey
EOF

# 安装RabbitMQ
sudo yum install -y rabbitmq-server

# 启动RabbitMQ服务
sudo systemctl start rabbitmq-server

# 设置开机自启动
sudo systemctl enable rabbitmq-server

3. 配置Erlang Cookie

RabbitMQ集群中的所有节点必须共享相同的Erlang cookie。默认情况下,cookie文件位于/var/lib/rabbitmq/.erlang.cookie

# 在第一个节点上找到cookie文件
sudo cat /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

4. 启动并启用RabbitMQ管理插件(可选)

RabbitMQ管理插件可以帮助你更方便地管理RabbitMQ。

# 启用管理插件
sudo rabbitmq-plugins enable rabbitmq_management

# 访问管理界面
http://your_node_ip:15672/

5. 配置集群

在第一个节点上配置集群。

# 启动RabbitMQ管理界面
sudo rabbitmqctl stop_app

# 设置集群节点名称
sudo rabbitmqctl reset

# 加入集群
sudo rabbitmqctl join_cluster rabbit@node1

# 启动RabbitMQ服务
sudo rabbitmqctl start_app

在其他节点上重复上述步骤,但将rabbit@node1替换为第一个节点的名称。

6. 验证集群状态

在任意一个节点上验证集群状态。

# 查看集群节点信息
sudo rabbitmqctl cluster_status

7. 配置镜像队列(可选)

为了提高消息的可靠性,可以配置镜像队列。

# 在任意一个节点上配置镜像队列
sudo rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'

8. 配置防火墙

确保防火墙允许RabbitMQ的默认端口(5672和15672)。

# 允许5672端口
sudo firewall-cmd --permanent --zone=public --add-port=5672/tcp
sudo firewall-cmd --reload

# 允许15672端口
sudo firewall-cmd --permanent --zone=public --add-port=15672/tcp
sudo firewall-cmd --reload

完成以上步骤后,你就成功地在CentOS系统下搭建了一个RabbitMQ集群。

0
看了该问题的人还看了