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

docker启动的rabbitmq搭建并集群和高可用

Docker 搭建 RabbitMQ 集群步骤

以下是使用 Docker 快速搭建 RabbitMQ 集群的详细步骤,包含配置文件、网络设置和集群组建过程。

1. 创建自定义网络

首先创建一个 Docker 网络,使容器间可以通过名称互相访问:

docker network create rabbitmq-cluster

2. 准备配置文件

创建一个配置目录(例如 ~/rabbitmq-config),并在其中创建以下文件:

rabbitmq.conf(所有节点共用)
loopback_users.guest = false
listeners.tcp.default = 5672
cluster_formation.peer_discovery_backend = rabbit_peer_discovery_classic_config
cluster_formation.classic_config.nodes.1 = rabbit@rabbitmq1
cluster_formation.classic_config.nodes.2 = rabbit@rabbitmq2
cluster_formation.classic_config.nodes.3 = rabbit@rabbitmq3
cluster_partition_handling = autoheal
management.tcp.port = 15672
.erlang.cookie(所有节点共用,需保证相同)
echo "YOUR_SECRET_COOKIE" > ~/rabbitmq-config/.erlang.cookie
chmod 400 ~/rabbitmq-config/.erlang.cookie  # 重要:权限必须为 400

3. 启动第一个节点(rabbitmq1)

docker run -d --name rabbitmq1 \--net rabbitmq-cluster \-p 5672:5672 \-p 15672:15672 \-v ~/rabbitmq-config/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf \-v ~/rabbitmq-config/.erlang.cookie:/var/lib/rabbitmq/.erlang.cookie \-e RABBITMQ_NODENAME=rabbit@rabbitmq1 \rabbitmq:3.11-management

4. 启动第二个节点(rabbitmq2)

docker run -d --name rabbitmq2 \--net rabbitmq-cluster \-p 5673:5672 \-p 15673:15672 \-v ~/rabbitmq-config/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf \-v ~/rabbitmq-config/.erlang.cookie:/var/lib/rabbitmq/.erlang.cookie \-e RABBITMQ_NODENAME=rabbit@rabbitmq2 \rabbitmq:3.11-management

5. 启动第三个节点(rabbitmq3)

docker run -d --name rabbitmq3 \--net rabbitmq-cluster \-p 5674:5672 \-p 15674:15672 \-v ~/rabbitmq-config/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf \-v ~/rabbitmq-config/.erlang.cookie:/var/lib/rabbitmq/.erlang.cookie \-e RABBITMQ_NODENAME=rabbit@rabbitmq3 \rabbitmq:3.11-management

6. 组建集群

进入第二个节点容器并加入集群:

docker exec -it rabbitmq2 bash# 在容器内执行
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@rabbitmq1
rabbitmqctl start_app
exit

类似地,对第三个节点执行相同操作:

docker exec -it rabbitmq3 bash# 在容器内执行
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@rabbitmq1
rabbitmqctl start_app
exit

7. 验证集群状态

可以通过以下方式验证集群是否成功组建:

方法1:通过命令行
docker exec -it rabbitmq1 rabbitmqctl cluster_status
方法2:通过管理界面

访问任一节点的管理界面(例如:http://localhost:15672),使用默认用户名 guest 和密码 guest 登录,查看 Admin → Nodes 页面。

8. 启用镜像队列(可选)

为保证消息高可用,可以配置镜像队列:

docker exec -it rabbitmq1 rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all","ha-sync-mode":"automatic"}'

9. 客户端连接

客户端可以连接到任意节点:

  • amqp://localhost:5672(rabbitmq1)
  • amqp://localhost:5673(rabbitmq2)
  • amqp://localhost:5674(rabbitmq3)

注意事项

  1. Cookie 文件权限.erlang.cookie 文件权限必须为 400,否则节点间无法通信

  2. 节点命名:使用 Docker 网络中的容器名称(如 rabbit@rabbitmq1

  3. 端口映射:生产环境建议使用负载均衡器(如 Nginx、HAProxy)统一暴露端口

  4. 持久化存储:生产环境应挂载数据卷,避免容器重启导致数据丢失

  5. 集群脑裂:配置 cluster_partition_handling = autoheal 避免网络分区时的脑裂问题

通过以上步骤,你可以快速搭建一个三节点的 RabbitMQ 集群,支持高可用性和横向扩展。

http://www.lqws.cn/news/486703.html

相关文章:

  • AS32系列MCU芯片I2C模块性能解析与调试
  • 秘塔AI搜索:国产无广告智能搜索引擎,重塑高效信息获取体验
  • 1 Studying《Systems.Performance》1-6
  • 跨域视角下强化学习重塑大模型推理:GURU框架与多领域推理新突破
  • 黑马python(十三)
  • 二刷苍穹外卖 day03
  • K8s入门指南:架构解析浓缩版与服务间调用实战演示
  • C#Halcon从零开发_Day14_AOI缺陷检测策略1_Bolb分析+特征分析_饼干破损检测
  • 国产12537穿甲弹侵彻仿真(显式动力学)
  • DeepSeek15-揭密模型上下文协议(MCP)
  • 从零开始手写redis(15)实现自己的 HashMap
  • 大模型LoRA微调实践
  • C语言:位段
  • Python期末速成
  • 没掌握的知识点记录
  • day39/60
  • 链接脚本基础语法
  • Python打卡训练营Day56
  • 给同一个wordpress网站绑定多个域名的实现方法
  • ICML 2025 | 时空数据(Spatial-Temporal)论文总结
  • C++智能指针编程实例
  • 消息队列:基本知识
  • 【破局痛点,赋能未来】领码 SPARK:铸就企业业务永续进化的智慧引擎—— 深度剖析持续演进之道,引领数字化新范式
  • 【RocketMQ 生产者和消费者】- 消费者的订阅关系一致性
  • 【RocketMQ 生产者和消费者】- 消费者重平衡(3)- 消费者 ID 对负载均衡的影响
  • 7.4.1_2B树的插入删除
  • 【大模型微调】6.模型微调实测与格式转换导出
  • 微服务中分布式事务:Saga模式、TCC模式与消息队列
  • MySQL学习(1)——基础库操作
  • 【时时三省】(C语言基础)指针变量例子