首页主机资讯RabbitMQ在Ubuntu上如何进行集群搭建

RabbitMQ在Ubuntu上如何进行集群搭建

时间2025-10-03 09:42:03发布访客分类主机资讯浏览1143
导读:RabbitMQ在Ubuntu上的集群搭建步骤 1. 环境准备 节点规划:至少准备2台Ubuntu服务器(如rabbit1、rabbit2),确保IP可达(如192.168.1.101、192.168.1.102)。 网络配置:修改所有节...

RabbitMQ在Ubuntu上的集群搭建步骤

1. 环境准备

  • 节点规划:至少准备2台Ubuntu服务器(如rabbit1rabbit2),确保IP可达(如192.168.1.101192.168.1.102)。
  • 网络配置:修改所有节点的/etc/hosts文件,添加集群节点IP与主机名映射(如192.168.1.101 rabbit1192.168.1.102 rabbit2),并通过ping命令验证连通性。
  • 时间同步:安装ntpchrony服务,确保所有节点时间一致(避免集群因时间差异出现问题)。

2. 安装Erlang与RabbitMQ

RabbitMQ基于Erlang开发,需先安装相同版本的Erlang(建议使用RabbitMQ官方推荐的Erlang版本,可通过rabbitmq-server官方文档查询兼容版本)。

  • 安装Erlang:在所有节点执行以下命令(以Ubuntu 22.04为例):

    sudo apt update
    sudo apt install -y erlang
    
  • 安装RabbitMQ:添加RabbitMQ官方APT源(替换为最新版本链接),然后安装:

    # 导入RabbitMQ签名密钥
    wget -O- https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey | sudo apt-key add -
    echo "deb https://packagecloud.io/rabbitmq/rabbitmq-server/ubuntu $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/rabbitmq.list
    sudo apt update
    sudo apt install -y rabbitmq-server
    
  • 启动服务:安装完成后,RabbitMQ会自动启动,验证状态:

    sudo systemctl status rabbitmq-server  # 应显示"active (running)"
    
  • 启用管理插件(可选但推荐):为方便远程管理,启用Web管理界面:

    sudo rabbitmq-plugins enable rabbitmq_management
    

    管理界面默认端口为15672(如http://< 节点IP> :15672),初始账号为guest(仅本地访问)。

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

Erlang通过Cookie文件实现节点间认证,所有集群节点的Cookie内容必须完全一致。

  • Cookie位置:默认路径为/var/lib/rabbitmq/.erlang.cookie(属主为rabbitmq,权限400)。

  • 同步步骤

    1. 在主节点(如rabbit1)上复制Cookie文件到其他节点:
      scp /var/lib/rabbitmq/.erlang.cookie rabbit2:/var/lib/rabbitmq/
      
    2. 在所有从节点上修改Cookie权限(确保RabbitMQ进程可读取):
      sudo chmod 400 /var/lib/rabbitmq/.erlang.cookie
      sudo chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie
      
  • 验证Cookie一致性:通过cat命令检查所有节点的Cookie内容是否相同。

4. 加入集群

rabbit1为主节点,将rabbit2加入集群:

  • 在从节点(rabbit2)上执行

    1. 停止RabbitMQ应用(保持Erlang虚拟机运行):
      sudo rabbitmqctl stop_app
      
    2. 重置节点(清除原有集群配置,首次加入无需执行):
      sudo rabbitmqctl reset
      
    3. 加入主节点集群(rabbit@< 主节点主机名> ):
      sudo rabbitmqctl join_cluster rabbit@rabbit1
      
    4. 启动RabbitMQ应用:
      sudo rabbitmqctl start_app
      
  • 验证集群状态:在任意节点执行以下命令,查看所有节点是否加入:

    sudo rabbitmqctl cluster_status
    

    输出应包含所有节点的disc(磁盘节点)或ram(内存节点)状态。

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

默认情况下,队列仅在单个节点存储,若需实现队列冗余(所有节点都有队列副本),需配置镜像队列策略:

  • 设置镜像策略(将所有队列镜像到所有节点):

    sudo rabbitmqctl set_policy ha-all "^" '{
    "ha-mode":"all"}
        '
    
    • ha-all:策略名称(可自定义)。
    • "^":匹配所有队列(正则表达式)。
    • ha-mode":"all":表示所有节点都存储队列副本。
  • 验证镜像效果:创建队列后,通过管理界面或rabbitmqctl list_queues命令查看队列的Mirrored状态。

6. 关键注意事项

  • 节点类型:至少配置2个磁盘节点(存储元数据,避免单点故障),内存节点(--ram)用于提升性能(但重启后数据丢失)。
  • 网络分区处理:在/etc/rabbitmq/rabbitmq.conf中添加以下配置,避免网络分区导致脑裂:
    cluster_partition_handling = pause_minority
    
  • 数据持久化:创建队列时设置durable=true,消息设置delivery_mode=2(持久化消息),确保节点重启后数据不丢失。

7. 扩展与维护

  • 扩容:将新节点加入集群(重复“加入集群”步骤)。
  • 缩容:从集群中移除节点(sudo rabbitmqctl forget_cluster_node rabbit@< 节点主机名> )。
  • 监控:集成Prometheus+Grafana监控集群指标(如消息堆积、节点状态)。

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


若转载请注明出处: RabbitMQ在Ubuntu上如何进行集群搭建
本文地址: https://pptw.com/jishu/718426.html
Ubuntu RabbitMQ如何优化性能 Ubuntu RabbitMQ如何监控性能

游客 回复需填写必要信息