RabbitMQ 集群部署解决方案

 更新时间:2025年12月04日 08:41:02   作者:i***7195  
这篇文章详细介绍了如何在三台CentOS 7服务器上配置和设置RabbitMQ集群,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
  • 环境准备:三台服务器,系统是 CentOS7
  • IP地址分别是:
    • rabbitmq1:192.168.152.71
    • rabbitmq2:192.168.152.72
    • rabbitmq3:192.168.152.73

一、安装 RabbitMQ

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

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

安装 RabbitMQ 运行环境

yum install -y erlang

安装软件 RabbitMQ

yum install -y rabbitmq-server

二、更改配置文件

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

更改 RabbitMQ 配置文件

vim /etc/rabbitmq/rabbitmq.config

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

{loopback_users, []}

更改 hosts 配置主机名解析

192.168.152.71 rabbitmq1
192.168.152.72 rabbitmq2
192.168.152.73 rabbitmq3

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

三、配置集群

改主机名,对照 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 重新登录

启动三台服务器的 RabbitMQ 服务

systemctl start rabbitmq-server
systemctl enable rabbitmq-server

统一三台服务器的 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

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

systemctl restart rabbitmq-server

查看 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.

停止 rabbitmq2 和 rabbitmq3 主机的 RabbitMQ 应用

rabbitmqctl stop_app

让 rabbitmq2 和 rabbitmq3 加入 rabbitmq1 的集群

rabbitmqctl join_cluster rabbit@rabbitmq1

启动 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

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

到此这篇关于RabbitMQ集群部署解决方案的文章就介绍到这了,更多相关RabbitMQ 集群部署方案内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • spring整合shiro框架的实现步骤记录

    spring整合shiro框架的实现步骤记录

    Shiro是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理等功能。下面这篇文章主要给大家介绍了关于spring整合shiro框架的实现步骤,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2018-05-05
  • Window搭建部署RocketMQ步骤详解

    Window搭建部署RocketMQ步骤详解

    这篇文章主要介绍了Window搭建部署RocketMQ步骤详解,RocketMq是一个由阿里巴巴开源的消息中间件,脱胎去阿里每部使用的MetaQ,在设计上借鉴了Kafka。,需要的朋友可以参考下
    2019-06-06
  • java date类与string类实例代码分享

    java date类与string类实例代码分享

    这篇文章主要介绍了java date类与string类实例代码分享,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • java接口性能从20s优化到500ms示例详解

    java接口性能从20s优化到500ms示例详解

    这篇文章主要为大家介绍了java接口性能从20s优化到500ms的操作技巧示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • 在SpringBoot项目中连接SQL Server的几种实现方式

    在SpringBoot项目中连接SQL Server的几种实现方式

    本文介绍了在SpringBoot项目中连接SQLServer的三种常见方法:使用Microsoft官方的JDBC驱动、第三方的jTDS驱动以及Microsoft提供的官方SpringBootStarter,每种方法均提供了对应的依赖配置和YAML配置示例,帮助开发者轻松实现数据库连接
    2025-09-09
  • Java8函数式编程应用小结

    Java8函数式编程应用小结

    Java8非常重要的就是引入了函数式编程的思想,使得这门经典的面向对象语言有了函数式的编程方式,弥补了很大程度上的不足,函数式思想在处理复杂问题上有着更为令人称赞的特性,本文给大家介绍Java8函数式编程应用小结,感兴趣的朋友一起看看吧
    2023-12-12
  • Java基础之三大控制流程结构

    Java基础之三大控制流程结构

    这篇文章主要介绍了Java基础之三大控制流程结构,文中有非常详细的代码示例,对正在学习java基础的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-04-04
  • 泛型的类型擦除后fastjson反序列化时如何还原详解

    泛型的类型擦除后fastjson反序列化时如何还原详解

    这篇文章主要为大家介绍了泛型的类型擦除后fastjson反序列化时如何还原详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • springboot2中使用@JsonFormat注解不生效的解决

    springboot2中使用@JsonFormat注解不生效的解决

    这篇文章主要介绍了springboot2中使用@JsonFormat注解不生效的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • 在Mac上安装JDK21的详细流程

    在Mac上安装JDK21的详细流程

    在macOS上安装JDK(Java Development Kit)21是相对简单的过程,这篇文章主要给大家介绍了关于在Mac上安装JDK21的详细流程,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2024-08-08

最新评论