centos

rabbitmq集群在centos上如何搭建

小樊
38
2025-10-02 18:50:26
栏目: 智能运维

在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上配置集群

  1. 启动RabbitMQ管理插件(可选):

    sudo rabbitmq-plugins enable rabbitmq_management
    
  2. 将node2加入集群:

    sudo rabbitmqctl stop_app
    sudo rabbitmqctl reset
    sudo rabbitmqctl join_cluster rabbit@node1
    sudo rabbitmqctl start_app
    

在node2上配置集群

  1. 停止RabbitMQ服务:

    sudo systemctl stop rabbitmq-server
    
  2. 将node2加入node1的集群:

    sudo rabbitmqctl stop_app
    sudo rabbitmqctl reset
    sudo rabbitmqctl join_cluster rabbit@node1
    sudo rabbitmqctl start_app
    

在node3上配置集群

  1. 停止RabbitMQ服务:

    sudo systemctl stop rabbitmq-server
    
  2. 将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集群应该已经搭建完成并可以正常工作了。

0
看了该问题的人还看了