当前位置: 首页 > 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 集群,支持高可用性和横向扩展。

相关文章:

  • ISCSI存储
  • STaR: Self-Taught Reasoner Bootstrapping Reasoning With Reasoning论文笔记
  • RSYNC+IONTIFY数据实时同步
  • 设备故障预测与健康管理技术:从数据到决策的工业智能进化之路​
  • 【编译原理】期末复习
  • MySQL基础函数篇
  • 二刷苍穹外卖 day03
  • 没掌握的知识点记录
  • SCP拷贝文件命令以及其它上传下载文件方式总结
  • 查询消耗 IO 多的 SQL -达梦
  • 国产12537穿甲弹侵彻仿真(显式动力学)
  • Python期末速成
  • UMAP:用于降维的均匀流形近似和投影实验
  • MongoDB 8.0.10 windows11安装记录
  • Python SQLModel 简单使用
  • 《计算机网络:自顶向下方法(第8版)》Chapter 8 课后题
  • 链接脚本基础语法
  • 面试150 除自身以外数组的乘积
  • 今日推荐:data-engineer-handbook
  • 包教包会,ES6类class的基本入门
  • 宁波高新区建设局网站/东莞网站推广运营公司
  • 域名转移影响网站访问吗/广东最新消息
  • 400网站建设/免费手机网站建站平台
  • 网站建设域名怎么收费的/一个新手怎么做电商
  • 网站备案 换域名/推广引流吸引人的标题
  • 东莞企业网站建设/营销型网站建站推广