RabbitMQ 集群部署方案

RabbitMQ

一、安装 RabbitMQ

记得配置yum源,避免不必要的错误

在三台服务器上分别安装 erlang 和 rabbitmq-server

  1. 安装 RabbitMQ 运行环境

    复制代码
    yum install -y erlang
  2. 安装软件 RabbitMQ

    复制代码
    yum install -y rabbitmq-server

二、更改配置文件

一下配置在三台服务器上都要修改

  1. 更改 RabbitMQ 配置文件

    复制代码
    vim /etc/rabbitmq/rabbitmq.config

    找到 %%{loopback_users, []}, 改为下面内容,大概在 53 行

    复制代码
    {loopback_users, []}
  2. 更改 hosts 配置主机名解析

    复制代码
    192.168.152.71 rabbitmq1
    192.168.152.72 rabbitmq2
    192.168.152.73 rabbitmq3

    可以 ping 一下看是否配置成功

三、配置集群

  1. 改主机名,对照 hosts 配置的主机名解析,把对用服务器的主机名改为相应的解析

    如:192.168.152.71

    复制代码
    hostnamectl set-hostname rabbitmq1

    192.168.152.72

    复制代码
    hostnamectl set-hostname rabbitmq2

    192.168.152.73

    复制代码
    hostnamectl set-hostname rabbitmq3

    然后全部都 exit 重新登录

  2. 启动三台服务器的 RabbitMQ 服务

    复制代码
    systemctl start rabbitmq-server
    systemctl enable rabbitmq-server
  3. 统一三台服务器的 erlang.cookie,把 rabbitmq1 的 erlang.cookie 传输到其它两台

    复制代码
    scp /var/lib/rabbitmq/.erlang.cookie rabbitmq2:/var/lib/rabbitmq/.erlang.cookie
    scp /var/lib/rabbitmq/.erlang.cookie rabbitmq3:/var/lib/rabbitmq/.erlang.cookie
  4. 运行 cat /var/lib/rabbitmq/.erlang.cookie,查看三台服务器的值是否一致,一致后再重启 rabbitmq2 和 rabbitmq3 的 RabbitMQ 服务

    复制代码
    systemctl restart rabbitmq-server
  5. 查看 RabbitMQ 的节点状态

    复制代码
    rabbitmqctl cluster_status

    结果如下即为正确

    复制代码
    # rabbitmq1 的结果:
    Cluster status of node rabbit@rabbitmq1 ...
    [{nodes,[{disc,[rabbit@rabbitmq1]}]},
     {running_nodes,[rabbit@rabbitmq1]},
     {cluster_name,<<"rabbit@rabbitmq1">>},
     {partitions,[]}]
    ...done.
    
    # rabbitmq2 的结果:
    Cluster status of node rabbit@rabbitmq2 ...
    [{nodes,[{disc,[rabbit@rabbitmq2]}]},
     {running_nodes,[rabbit@rabbitmq2]},
     {cluster_name,<<"rabbit@rabbitmq2">>},
     {partitions,[]}]
    ...done.
    
    # rabbitmq3 的结果:
    Cluster status of node rabbit@rabbitmq3 ...
    [{nodes,[{disc,[rabbit@rabbitmq3]}]},
     {running_nodes,[rabbit@rabbitmq3]},
     {cluster_name,<<"rabbit@rabbitmq3">>},
     {partitions,[]}]
    ...done.
  6. 停止 rabbitmq2 和 rabbitmq3 主机的 RabbitMQ 应用

    复制代码
    rabbitmqctl stop_app
  7. 让 rabbitmq2 和 rabbitmq3 加入 rabbitmq1 的集群

    复制代码
    rabbitmqctl join_cluster rabbit@rabbitmq1	
  8. 启动 rabbitmq2 和 rabbitmq3 主机的 RabbitMQ 应用,并再次查看 RabbitMQ 的节点状态

    复制代码
    rabbitmqctl start_app

    再三台服务器上执行 rabbitmqctl cluster_status 命令,结果就会变为下面这样

    复制代码
    # rabbitmq1 的结果:
    Cluster status of node rabbit@rabbitmq1 ...
    [{nodes,[{disc,[rabbit@rabbitmq1,rabbit@rabbitmq2,rabbit@rabbitmq3]}]},
     {running_nodes,[rabbit@rabbitmq2,rabbit@rabbitmq3,rabbit@rabbitmq1]},
     {cluster_name,<<"rabbit@rabbitmq1">>},
     {partitions,[]}]
    ...done.
    
    # rabbitmq2 的结果:
    Cluster status of node rabbit@rabbitmq2 ...
    [{nodes,[{disc,[rabbit@rabbitmq1,rabbit@rabbitmq2,rabbit@rabbitmq3]}]},
     {running_nodes,[rabbit@rabbitmq1,rabbit@rabbitmq3,rabbit@rabbitmq2]},
     {cluster_name,<<"rabbit@rabbitmq1">>},
     {partitions,[]}]
    ...done.
    
    # rabbitmq3 的结果:
    Cluster status of node rabbit@rabbitmq3 ...
    [{nodes,[{disc,[rabbit@rabbitmq1,rabbit@rabbitmq2,rabbit@rabbitmq3]}]},
     {running_nodes,[rabbit@rabbitmq2,rabbit@rabbitmq1,rabbit@rabbitmq3]},
     {cluster_name,<<"rabbit@rabbitmq1">>},
     {partitions,[]}]
    ...done.

    此时集群配置成功

四、测试

可以可以启用 RabbitMQ 可视化web管理插件,更直观的看到集群状态,也方便测试

三台服务器都要开启

复制代码
rabbitmq-plugins enable rabbitmq_management
systemctl restart rabbitmq-server

通过IP地址加端口号访问,端口号为 15672

如:192.168.152.71:15672,默认的用户名:guest,密码:guest

可以再其中一台添加用户,看其它几台是否有变化,有则配置成功

相关推荐
jyOverQ4 小时前
RabbitMQ 延迟消息怎么实现?TTL 与死信队列
分布式·后端·rabbitmq·ruby
zcmodeltech5 小时前
工程车模型多车型动作控制系统设计与实现方案——基于STM32与Modbus RTU的挖掘机、装载机、自卸车、起重机、电力工程车全场景控制方案,服务范围覆盖全国
分布式·stm32·单片机·嵌入式硬件·交互
StevenSurpass8 小时前
智能工厂场景:FastPrintAgent 分布式打印中间件落地应用方案
分布式·mqtt·http·中间件·打印·fastreport
江畔柳前堤1 天前
具身智能全景深度指南(2026年9月版):从“会聊天的AI“到“能干活的机器“
大数据·javascript·图像处理·人工智能·分布式·智慧城市·原型模式
夕除1 天前
redis--010
笔记·分布式·学习
寻求出路的程序媛1 天前
分布式 & 高性能 & 高可用 体系、学习重点、面试点
分布式·后端·面试·性能优化
东小黑1 天前
mac安装RabbitMQ
分布式·rabbitmq
zhougl9961 天前
从ZooKeeper到微服务生态:分布式协调核心原理
分布式·微服务·zookeeper
FakeOccupational1 天前
【p2p、分布式,区块链笔记 IPFS】网关+多地址+HTTP RPC API+kubo-rpc-client
分布式·区块链·p2p
bgy66661 天前
Ceph 分布式存储完整实战指南:架构、部署与全场景运维
分布式·ceph·架构