温馨提示×

rabbitmq集群搭建centos步骤

小樊
58
2025-09-01 18:39:01
栏目: 智能运维

RabbitMQ集群搭建(CentOS系统)详细步骤

1. 准备工作

  • 服务器要求:至少3台CentOS服务器(建议),确保网络互通(能互相ping通)。
  • 时间同步:所有节点安装ntp服务并同步时间(避免集群因时间差异出现问题):
    sudo yum install -y ntp
    sudo systemctl start ntpd
    sudo systemctl enable ntpd
    

2. 安装Erlang(RabbitMQ依赖)

RabbitMQ基于Erlang语言编写,需先安装兼容版本的Erlang。

  • 添加Erlang官方YUM源
    sudo rpm -Uvh https://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm
    
  • 安装Erlang
    sudo yum install -y erlang
    
  • 验证安装
    erl -version  # 应显示Erlang版本信息
    

3. 安装RabbitMQ

  • 添加RabbitMQ官方YUM源
    sudo rpm --import https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey
    sudo rpm --import https://packagecloud.io/rabbitmq/erlang/gpgkey
    curl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.rpm.sh | sudo bash
    curl -s https://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm.sh | sudo bash
    
  • 安装RabbitMQ
    sudo yum install -y rabbitmq-server
    
  • 启动服务并设置开机自启
    sudo systemctl start rabbitmq-server
    sudo systemctl enable rabbitmq-server
    

4. 配置Erlang Cookie(集群认证关键)

RabbitMQ节点通过Erlang Cookie(位于/var/lib/rabbitmq/.erlang.cookie)实现身份认证,所有节点的Cookie内容必须完全一致。

  • 获取主节点Cookie(以node1为例):
    cat /var/lib/rabbitmq/.erlang.cookie
    
  • 复制Cookie到其他节点
    scp /var/lib/rabbitmq/.erlang.cookie user@node2:/var/lib/rabbitmq/
    scp /var/lib/rabbitmq/.erlang.cookie user@node3:/var/lib/rabbitmq/
    
  • 设置Cookie权限(所有节点执行):
    sudo chmod 400 /var/lib/rabbitmq/.erlang.cookie
    sudo chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie
    

5. 配置主机名解析

确保所有节点能通过主机名互相访问(需修改/etc/hosts文件)。

  • 编辑/etc/hosts(所有节点执行):
    sudo vi /etc/hosts
    
    添加以下内容(替换为实际IP和主机名):
    192.168.1.101 rabbitmq01
    192.168.1.102 rabbitmq02
    192.168.1.103 rabbitmq03
    
  • 验证解析
    ping rabbitmq02  # 应能ping通
    

6. 启动集群

  • 选择主节点(如rabbitmq01),启动RabbitMQ服务并重置(首次配置需重置):
    sudo systemctl stop rabbitmq-server
    sudo rabbitmqctl stop_app
    sudo rabbitmqctl reset
    sudo rabbitmqctl start_app
    
  • 加入从节点(如rabbitmq02rabbitmq03):
    sudo systemctl stop rabbitmq-server
    sudo rabbitmqctl stop_app
    sudo rabbitmqctl join_cluster rabbit@rabbitmq01  # 加入主节点集群
    sudo rabbitmqctl start_app
    
  • 验证集群状态(任意节点执行):
    sudo rabbitmqctl cluster_status
    
    输出应显示所有节点(rabbitmq01rabbitmq02rabbitmq03)均已加入集群。

7. 配置管理插件(可选但推荐)

启用Web管理界面(默认端口15672),方便可视化操作。

  • 启用插件
    sudo rabbitmq-plugins enable rabbitmq_management
    
  • 创建管理员用户(替换adminAdmin@123为实际用户名密码):
    sudo rabbitmqctl add_user admin Admin@123
    sudo rabbitmqctl set_user_tags admin administrator
    sudo rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
    
  • 访问管理界面
    浏览器输入http://<节点IP>:15672,使用admin/Admin@123登录。

8. 配置镜像队列(高可用可选)

镜像队列将队列数据复制到多个节点,提升高可用性。

  • 设置镜像策略(所有节点执行):
    sudo rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all", "ha-sync-mode":"automatic"}'
    
    • ha-mode=all:队列在所有节点上复制。
    • ha-sync-mode=automatic:自动同步队列数据。
  • 验证镜像队列
    在管理界面查看队列详情,应显示“Mirrored”状态。

9. 防火墙配置(可选但推荐)

开放RabbitMQ默认端口(5672:AMQP协议;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

常见问题排查

  • 节点无法加入集群:检查Erlang Cookie是否一致、主机名解析是否正确、防火墙是否放行端口。
  • 集群状态异常:使用sudo rabbitmqctl cluster_status查看节点状态,若节点处于down状态,尝试重启服务或重置节点(sudo rabbitmqctl reset)。

通过以上步骤,即可在CentOS系统上搭建高可用的RabbitMQ集群。

0