当前位置: 首页 > news >正文

RabbitMQ 集群部署方案

RabbitMQ

  • 一、安装 RabbitMQ
  • 二、更改配置文件
  • 三、配置集群
  • 四、测试

  • 环境准备:三台服务器,系统是 CentOS7
  • IP地址分别是:
    • rabbitmq1:192.168.152.71
    • rabbitmq2:192.168.152.72
    • rabbitmq3:192.168.152.73

一、安装 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
在这里插入图片描述
可以再其中一台添加用户,看其它几台是否有变化,有则配置成功
在这里插入图片描述

相关文章:

  • 精彩回顾 | 风丘科技亮相2024名古屋汽车工程博览会
  • Python爬虫——爬取某网站的视频
  • 2024年高教社杯数学建模国赛A题思路解析+代码+论文
  • 开源数据库同步工具monstache
  • Hbase图形化界面
  • 2024-08-16升级记录:使用Android RecyclerView控件显示列表型信息
  • nc的多种使用场景和各种反向shell方法
  • 类加载与双亲委派
  • 安卓平板电脑定制方案_MTK联发科智能终端方案开发
  • 【数据结构】-----红黑树
  • 搭建高可用OpenStack(Queen版)集群(九)之部署nova计算节点
  • Service服务在Android中的使用
  • Go语言基础--数据类型(整型、字符型)
  • 升级软文发稿开源系统源码论文期刊一键发布
  • Python环境安装及PIP安装(Mac OS版)
  • 【初阶数据结构】通讯录项目(可用作课程设计)
  • PHP多项目多场景排队叫号系统源码
  • [000-01-030].Zookeeper学习大纲
  • 基础 - 前端知识体系详解
  • Windows编程:图标资源、光标资源、字符串资源、加速键资源、WM_PAINT消息、绘图
  • 印对巴军事打击后,巴外交部召见印度驻巴临时代办
  • 苹果用户,安卓来“偷心”
  • 巴基斯坦:印度向巴3处地点发射导弹
  • 胡祥|人工智能时代:文艺评论何为?
  • 当AI开始谋财害命:从骗钱到卖假药,人类该如何防范?
  • 巴基斯坦宣布禁止与印度的进口贸易