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

Ubuntu RabbitMQ如何进行集群搭建

时间2025-11-05 12:27:03发布访客分类主机资讯浏览218
导读:Ubuntu环境下RabbitMQ集群搭建详细步骤 一、前置准备 环境要求 至少3台Ubuntu服务器(推荐生产环境使用3节点及以上,确保高可用); 所有节点安装相同版本的Erlang(RabbitMQ依赖,版本需匹配,如Rabbit...

Ubuntu环境下RabbitMQ集群搭建详细步骤

一、前置准备

  1. 环境要求

    • 至少3台Ubuntu服务器(推荐生产环境使用3节点及以上,确保高可用);
    • 所有节点安装相同版本的Erlang(RabbitMQ依赖,版本需匹配,如RabbitMQ 3.11.x需Erlang 25.x)和RabbitMQ(建议从官方仓库安装最新稳定版);
    • 节点间网络互通(能通过主机名互相ping通,可通过/etc/hosts文件配置主机名解析)。
  2. 安装Erlang与RabbitMQ
    在所有节点执行以下命令安装:

    # 更新软件源
    sudo apt update
    # 安装Erlang(通过Erlang Solutions仓库安装,确保版本兼容)
    wget https://packages.erlang-solutions.com/erlang-solutions_2.0_all.deb &
        &
         sudo dpkg -i erlang-solutions_2.0_all.deb
    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. 配置主机名与hosts文件

    • 在每台节点上设置主机名(如node1node2node3):
      sudo hostnamectl set-hostname node1  # 替换为对应主机名
      
    • 编辑/etc/hosts文件,添加所有节点的IP与主机名映射(所有节点需一致):
      sudo vim /etc/hosts
      # 示例(替换为实际IP):
      192.168.1.101 node1
      192.168.1.102 node2
      192.168.1.103 node3
      
  4. 同步Erlang Cookie
    Erlang Cookie是RabbitMQ节点间认证的关键(位于/var/lib/rabbitmq/.erlang.cookie),所有节点的Cookie文件内容必须完全一致

    • node1上复制Cookie文件到其他节点(如node2node3):
      # 在node1执行:
      scp /var/lib/rabbitmq/.erlang.cookie node2:/var/lib/rabbitmq/
      scp /var/lib/rabbitmq/.erlang.cookie node3:/var/lib/rabbitmq/
      
    • 在所有节点上修改Cookie权限(确保RabbitMQ进程可读):
      sudo chmod 400 /var/lib/rabbitmq/.erlang.cookie
      sudo chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie
      

二、搭建集群

  1. 启动RabbitMQ服务
    在所有节点执行以下命令,确保服务处于运行状态:

    sudo systemctl start rabbitmq-server
    sudo systemctl status rabbitmq-server  # 检查状态(应为"active (running)")
    
  2. 启用管理插件(可选但推荐)
    为方便远程管理,启用RabbitMQ Web管理界面:

    sudo rabbitmq-plugins enable rabbitmq_management
    # 默认访问地址:http://<
        节点IP>
    :15672(初始用户:guest/guest,仅限本地访问)
    
  3. 将节点加入集群

    • 步骤1:停止目标节点的RabbitMQ应用
      node2node3上执行(主节点node1无需停止):
      sudo rabbitmqctl stop_app
      
    • 步骤2:重置目标节点(首次加入集群时执行)
      重置会清除节点的本地数据(如队列、交换机),仅首次加入集群时需要:
      sudo rabbitmqctl reset
      
    • 步骤3:加入主节点集群
      node2node3上执行(以node1为主节点):
      sudo rabbitmqctl join_cluster rabbit@node1  # node1为主节点主机名
      

      注:若需将节点设置为内存节点(仅缓存元数据,提升性能但不持久化),可使用--ram参数:
      sudo rabbitmqctl join_cluster --ram rabbit@node1(推荐至少保留1个磁盘节点,确保元数据不丢失)。

    • 步骤4:启动目标节点应用
      sudo rabbitmqctl start_app
      
  4. 验证集群状态
    在任意节点(如node1)上执行以下命令,查看集群节点列表:

    sudo rabbitmqctl cluster_status
    

    输出示例(表示集群搭建成功):

    Cluster status of node rabbit@node1
    [{
    nodes,[{
    disc,[rabbit@node1,rabbit@node2,rabbit@node3]}
    ]}
    ]
    

三、配置镜像队列(可选,提升高可用)

镜像队列会将队列数据复制到集群中的多个节点,避免单点故障。配置所有队列镜像到所有节点的策略:

# 在任意节点执行(如node1):
sudo rabbitmqctl set_policy ha-all "^" '{
"ha-mode":"all"}
    '
  • ha-all:策略名称(可自定义);
  • "^":匹配所有队列(正则表达式);
  • "ha-mode":"all":表示队列数据同步到所有节点。

四、访问管理界面

  • 任意节点的管理界面地址:http://< 节点IP> :15672
  • 初始用户:guest(密码:guest),默认仅限本地访问;
  • 若需远程访问,可创建新用户并授权:
    # 创建用户(如admin)
    sudo rabbitmqctl add_user admin your_password
    # 设置用户标签(administrator为管理员权限)
    sudo rabbitmqctl set_user_tags admin administrator
    # 授权用户管理所有虚拟主机
    sudo rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
    

五、关键注意事项

  1. 节点类型

    • 磁盘节点(disc):元数据存储在磁盘,重启后数据不丢失(推荐至少2个,确保集群元数据安全);
    • 内存节点(ram):元数据存储在内存,读写速度快,但重启后数据丢失(适合提升性能,但不建议作为唯一节点类型)。
  2. 网络分区处理
    配置集群的分区处理策略,避免网络分区导致脑裂(集群分裂为多个独立部分):

    echo 'cluster_partition_handling = pause_minority' >
        >
         /etc/rabbitmq/rabbitmq.conf
    sudo systemctl restart rabbitmq-server
    

    pause_minority:当网络分区发生时,暂停少数派节点的服务,待网络恢复后同步数据。

  3. 数据持久化
    镜像队列仅保证元数据同步,若需队列中的消息持久化,需在声明队列时设置durable=true(生产者端配置):

    # Python示例(使用pika库)
    channel.queue_declare(queue='my_queue', durable=True)
    
  4. 扩容与缩容

    • 扩容:将新节点加入集群(步骤同“将节点加入集群”);
    • 缩容:从集群中移除节点(需先停止节点应用,再执行forget_cluster_node命令)。

按照以上步骤操作,即可完成Ubuntu环境下RabbitMQ集群的搭建。集群搭建后,可通过管理界面或命令行验证节点状态、队列镜像情况,确保高可用性。

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


若转载请注明出处: Ubuntu RabbitMQ如何进行集群搭建
本文地址: https://pptw.com/jishu/742799.html
Ubuntu如何更新RabbitMQ版本 Debian Dolphin如何安装新软件包

游客 回复需填写必要信息