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

RabbitMQ搭建集群

要在 Windows 或 Linux(CentOS 7.9) 上搭建 RabbitMQ 集群,基本思路是:


🗂️ 架构说明

主机角色IP节点名称
A主节点10.152.132.1rabbit@node1
B备节点10.152.132.2rabbit@node2

集群目标:两台 RabbitMQ 节点加入同一个集群。


🧱 搭建 RabbitMQ 集群步骤(Linux/CentOS)

说明:默认你已安装好 RabbitMQ 和 Erlang,并能访问 rabbitmqctl 命令。


✅ 1. 设置主机名 & 配置 hosts

在两台机器上,设置好各自主机名,并写入 /etc/hosts 文件:

🖥️ 节点 A(主节点:10.152.132.1)
hostnamectl set-hostname node1
echo "10.152.132.1 node1" >> /etc/hosts
echo "10.152.132.2 node2" >> /etc/hosts
🖥️ 节点 B(备节点:10.152.132.2)
hostnamectl set-hostname node2
echo "10.152.132.1 node1" >> /etc/hosts
echo "10.152.132.2 node2" >> /etc/hosts

✅ 2. 保证 Erlang Cookie 一致

在 RabbitMQ 中,Erlang Cookie 是集群通信的“密码”。必须在所有节点中一致。

在主节点 node1 上执行:

cat /var/lib/rabbitmq/.erlang.cookie

将内容复制到备节点 node2 的相同位置,命令如下:

scp /var/lib/rabbitmq/.erlang.cookie root@10.152.132.2:/var/lib/rabbitmq/

复制后请确保权限正确:

chmod 400 /var/lib/rabbitmq/.erlang.cookie
chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie

✅ 3. 启动主节点

在主节点 10.152.132.1 启动 RabbitMQ:

systemctl start rabbitmq-server
rabbitmqctl status

✅ 4. 加入备节点到主节点的集群

备节点 执行:

# 停止 rabbitmq 应用
rabbitmqctl stop_app# 将本节点重置(清空现有状态)
rabbitmqctl reset# 加入主节点的集群
rabbitmqctl join_cluster rabbit@node1# 启动 rabbitmq 应用
rabbitmqctl start_app

✅ 5. 查看集群状态

在任意一个节点执行:

rabbitmqctl cluster_status

应看到:

{nodes,[{disc,[rabbit@node1,rabbit@node2]}]}

✅ 6. 开启 Web 管理插件并访问

rabbitmq-plugins enable rabbitmq_management

访问地址:

  • 节点1: http://10.152.132.1:15672
  • 节点2: http://10.152.132.2:15672
    默认账号:guest / guest

✅ 7. 添加 HA 队列策略(可选)

让所有队列在两个节点间自动同步复制:

rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'

🚨 注意事项

问题原因 / 解决方式
加入失败Cookie 不一致,或 /etc/hosts 未配置
连接被拒绝RabbitMQ 未启动,或防火墙阻止了端口
Web 访问不了端口 15672 未开放,或服务未启用

✅ 所需开放端口(两节点之间必须互通)

端口号说明
4369epmd(Erlang 分布式端口管理)
5672RabbitMQ AMQP 服务端口
15672Web UI 管理端口(HTTP)
25672RabbitMQ 节点间通信端口

http://www.lryc.cn/news/2391867.html

相关文章:

  • 时间序列预测算法中的预测概率化笔记
  • 2025-05-28 Python深度学习8——优化器
  • 篇章二 数据结构——前置知识(二)
  • 如果是在服务器的tty2终端怎么查看登陆服务器的IP呢
  • Java求职面试:从核心技术到AI与大数据的全面考核
  • ubuntu24.04与ubuntu22.04比,有什么新特性?
  • Flutter Container组件、Text组件详解
  • Telegram平台分发其聊天机器人Grok
  • STM32 定时器输出比较深度解析:从原理到电机控制应用 (详解)
  • 用 NGINX 还原真实客户端 IP ngx_mail_realip_module
  • Mysql中索引B+树、最左前缀匹配
  • Python训练营打卡 Day38
  • 【机器学习基础】机器学习入门核心算法:K均值(K-Means)
  • Python Day37
  • RabbitMQ集群与负载均衡实战指南
  • 怎么开机自动启动vscode项目
  • Unity 中 Update、FixedUpdate 和 LateUpdate 的区别及使用场景
  • linux安装ffmpeg7.0.2全过程
  • Java中的设计模式实战:单例、工厂、策略模式的最佳实践
  • DexGarmentLab 论文翻译
  • Elasticsearch性能优化全解析
  • 2025.05.28【Parallel】Parallel绘图:拟时序分析专用图
  • tc3975开发板上有ft2232这块的电路,我想知道这个开发板有哪些升级方式,重点关注是怎样通过ft2232实现的烧录升级的
  • 自动驾驶与智能交通:构建未来出行的智能引擎
  • Kotlin Multiplatform与Flutter深度对比:跨平台开发方案的实战选择
  • ELectron 中 BrowserView 如何进行实时定位和尺寸调整
  • 深兰科技董事长陈海波率队考察南京,加速AI大模型区域落地应用
  • 《深度关系-从建立关系到彼此信任》
  • IT选型指南:电信行业需要怎样的服务器?
  • 【ConvLSTM第二期】模拟视频帧的时序建模(Python代码实现)