首页主机资讯RabbitMQ Linux集群如何搭建

RabbitMQ Linux集群如何搭建

时间2025-10-21 17:31:03发布访客分类主机资讯浏览579
导读:RabbitMQ Linux集群搭建详细步骤 1. 环境准备 服务器要求:至少准备3台Linux服务器(推荐CentOS 7/8或Ubuntu 20.04+),确保网络互通(同一局域网或公网可达)。 基础配置: 统一时间同步(安装ntp...

RabbitMQ Linux集群搭建详细步骤

1. 环境准备

  • 服务器要求:至少准备3台Linux服务器(推荐CentOS 7/8或Ubuntu 20.04+),确保网络互通(同一局域网或公网可达)。
  • 基础配置
    • 统一时间同步(安装ntpchrony服务,避免集群因时间差异引发问题);
    • 配置/etc/hosts文件,将所有节点的IP与主机名映射(如192.168.1.101 node1192.168.1.102 node2192.168.1.103 node3),避免DNS解析问题。

2. 安装Erlang与RabbitMQ

RabbitMQ基于Erlang语言开发,需先安装兼容版本的Erlang(可通过rabbitmq-server官方文档查询对应版本)。

  • CentOS系统
    # 安装Erlang(以Erlang 25为例)
    sudo yum install -y epel-release
    sudo yum install -y erlang
    
    # 安装RabbitMQ
    sudo yum install -y rabbitmq-server
    
  • Ubuntu/Debian系统
    # 安装Erlang
    sudo apt update
    sudo apt install -y erlang
    
    # 安装RabbitMQ
    sudo apt install -y rabbitmq-server
    

安装完成后,启动RabbitMQ服务并设置开机自启:

sudo systemctl start rabbitmq-server
sudo systemctl enable rabbitmq-server

3. 配置Erlang Cookie(集群认证核心)

RabbitMQ节点间通过Erlang Cookie进行身份验证,所有节点的Cookie文件必须完全一致(包括内容与权限)。

  • Cookie位置:默认路径为/var/lib/rabbitmq/.erlang.cookie(若为root用户安装,路径可能为/root/.erlang.cookie)。
  • 配置步骤
    1. 主节点(如node1)生成Cookie(若已有则跳过):
      sudo rm -f /var/lib/rabbitmq/.erlang.cookie  # 清除旧Cookie(可选)
      echo "your_secure_cookie_string" | sudo tee /var/lib/rabbitmq/.erlang.cookie  # 替换为自定义字符串
      
    2. 同步Cookie到所有节点:
      sudo scp /var/lib/rabbitmq/.erlang.cookie root@node2:/var/lib/rabbitmq/
      sudo scp /var/lib/rabbitmq/.erlang.cookie root@node3:/var/lib/rabbitmq/
      
    3. 设置Cookie权限(所有节点执行):
      sudo chmod 400 /var/lib/rabbitmq/.erlang.cookie  # 仅所有者可读写
      sudo chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie  # 归属rabbitmq用户
      

4. 启动RabbitMQ服务并启用管理插件

  • 启动服务:在所有节点执行以下命令,启动RabbitMQ并设置为后台运行:
    sudo systemctl start rabbitmq-server
    sudo systemctl status rabbitmq-server  # 检查服务状态(需显示“active (running)”)
    
  • 启用管理插件(可选但推荐):通过Web界面管理集群(默认端口15672):
    sudo rabbitmq-plugins enable rabbitmq_management
    
    默认管理员账号为guest(仅限本地访问),建议创建新用户:
    sudo rabbitmqctl add_user admin your_password  # 创建用户
    sudo rabbitmqctl set_user_tags admin administrator  # 设置管理员权限
    sudo rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"  # 授权所有权限
    

5. 组建RabbitMQ集群

  • 步骤1:确认主节点状态:在node1(主节点)执行以下命令,确保节点处于running状态:
    sudo rabbitmqctl cluster_status
    
  • 步骤2:将其他节点加入集群
    1. node2node3上停止RabbitMQ应用(无需停止服务):
      sudo rabbitmqctl stop_app
      
    2. 重置节点(首次加入集群时执行,清除本地元数据):
      sudo rabbitmqctl reset
      
    3. 加入主节点集群(node1为主节点,主机名需与/etc/hosts一致):
      sudo rabbitmqctl join_cluster rabbit@node1  # 若为内存节点,添加--ram参数(如`--ram`)
      
    4. 启动节点应用:
      sudo rabbitmqctl start_app
      
  • 步骤3:验证集群状态:在任意节点执行以下命令,检查所有节点是否已加入:
    sudo rabbitmqctl cluster_status
    
    输出应包含所有节点的disc(磁盘节点)或ram(内存节点)信息,例如:
    Cluster status of node rabbit@node1
    [{
    nodes,[{
    disc,[rabbit@node1,rabbit@node2,rabbit@node3]}
    ]}
    ]
    

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

默认情况下,RabbitMQ队列仅在单个节点存储,若需提高可用性,需配置镜像队列(将队列复制到多个节点)。

  • 设置镜像策略(在任意节点执行):
    sudo rabbitmqctl set_policy ha-all "^" '{
    "ha-mode":"all","ha-sync-mode":"automatic"}
        '
    
    参数说明:
    • ha-mode="all":队列将在所有节点同步复制;
    • ha-sync-mode="automatic":自动同步队列内容(可选manual手动同步)。
  • 验证镜像效果:创建队列后,在管理界面或通过命令rabbitmqctl list_queues name policy查看队列策略,确认ha-all已生效。

7. 防火墙与端口配置

确保防火墙允许RabbitMQ的默认端口通行:

  • CentOS系统(firewalld)
    sudo firewall-cmd --permanent --zone=public --add-port=5672/tcp  # AMQP协议端口
    sudo firewall-cmd --permanent --zone=public --add-port=15672/tcp  # 管理界面端口
    sudo firewall-cmd --reload
    
  • Ubuntu系统(ufw)
    sudo ufw allow 5672/tcp
    sudo ufw allow 15672/tcp
    sudo ufw reload
    

8. 关键注意事项

  • 节点类型
    • 磁盘节点(disc):存储元数据(队列、交换机等),推荐至少2个,确保集群元数据不丢失;
    • 内存节点(ram):仅缓存元数据,提升性能,适合高并发场景(但重启后数据丢失)。
      加入集群时通过--ram参数指定内存节点,例如:sudo rabbitmqctl join_cluster --ram rabbit@node1
  • 网络分区处理
    配置集群分区处理策略,避免网络分区引发脑裂(集群分裂为多个独立集群)。在/etc/rabbitmq/rabbitmq.conf中添加:
    cluster_partition_handling = pause_minority  # 暂停少数派节点(推荐)
    
    或使用自动恢复插件(rabbitmq_autoheal)。
  • 数据持久化
    创建队列时设置durable=true(队列持久化),发送消息时设置delivery_mode=2(消息持久化),确保重启后数据不丢失。

通过以上步骤,即可完成RabbitMQ Linux集群的搭建。集群搭建后,可通过管理界面(http://< 节点IP> :15672)监控节点状态、队列信息及连接情况。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: RabbitMQ Linux集群如何搭建
本文地址: https://pptw.com/jishu/731340.html
RabbitMQ Linux客户端如何使用 Linux RabbitMQ如何监控与调试

游客 回复需填写必要信息