Docker搭建RabbitMQ集群(多台服务器)

前言:本文章是基于docker在多台服务器下搭建的普通集群环境

 

一、准备工作

集群所需要的服务器环境(根据自身的集群需要来准备),我这里测试用的是3台;机器准备好后,安装好docke环境等集群所需要的依赖

 

二、拉取RabbitMQ镜像

在线拉取镜像:

docker pull rabbitmq:management

查看镜像信息:

[root@VM-12-6-centos ~]# docker images
REPOSITORY      TAG          IMAGE ID       CREATED         SIZE
rabbitmq        management   4b5f4b2a3227   28 hours ago    256MB

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  #集群节点1
cluster_formation.classic_config.nodes.2 = rabbit@rabbitmq2  #集群节点2
cluster_formation.classic_config.nodes.3 = rabbit@rabbitmq3  #集群节点3

.erlang.cookie文件:

WVNQHBGKPJFHPXZCGSPN  #cookie值

cookie获取:

从之前启动的rabbitMQ容器获取cookie值
docker exec -it mq cat /var/lib/rabbitmq/.erlang.cookie

Tips:将以上rabbitmq.conf文件和.erlang.cookie文件存放到各台服务器的/home/rabbitmq目录下(自定义目录存放)

[root@VM-12-6-centos rabbitmq]# ll -a
总用量 16
drwxr-xr-x   2 root    root 4096 3月  17 17:33 .
drwxr-xr-x. 10 root    root 4096 3月  17 15:08 ..
-rw-------   1 polkitd root   21 3月  17 15:08 .erlang.cookie
-rw-r--r--   1 root    root  257 3月  18 10:34 rabbitmq.conf
[root@VM-12-6-centos rabbitmq]# pwd
/home/rabbitmq

 

三、在集群机器上进行部署

  • 服务器1  42.192.139.111
  • 服务器2  106.13.27.111
  • 服务器3  120.77.239.111

创建mq-net网络:

docker network create mq-net

服务器1执行:

复制代码
docker run  -d --hostname rabbitmq1 \
--add-host rabbitmq2:42.192.139.111 \
--add-host rabbitmq3:120.77.239.111 \
--restart unless-stopped \
--name rabbitmq1 \
--net mq-net \
-p 4369:4369 \
-p 25672:25672 \
-p 15672:15672 \
-p 5672:5672 \
-e RABBITMQ_DEFAULT_USER=admin \
-e RABBITMQ_DEFAULT_PASS=admin \
-v mq-plugins:/plugins \
-v /home/rabbitmq/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf \
-v /home/rabbitmq/.erlang.cookie:/var/lib/rabbitmq/.erlang.cookie \
4b5f4b2a3227
复制代码

服务器2执行:

复制代码
docker run -d --hostname rabbitmq2 \
--add-host rabbitmq3:120.77.239.111 \
--add-host rabbitmq1:106.13.27.111 \
--restart unless-stopped \
--name rabbitmq2 \
--net mq-net \
-p 4369:4369 \
-p 25672:25672 \
-p 15672:15672 \
-p 5672:5672 \
-e RABBITMQ_DEFAULT_USER=root \
-e RABBITMQ_DEFAULT_PASS=root \
-v mq-plugins:/plugins \
-v /home/rabbitmq/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf \
-v /home/rabbitmq/.erlang.cookie:/var/lib/rabbitmq/.erlang.cookie \
4b5f4b2a3227
复制代码

服务器3执行:

复制代码
docker run  -d --hostname rabbitmq3 \
--add-host rabbitmq2:42.192.139.111 \
--add-host rabbitmq1:106.13.27.111 \
--restart unless-stopped \
--name rabbitmq3 \
--net mq-net \
-p 4369:4369 \
-p 25672:25672 \
-p 15672:15672 \
-p 5672:5672 \
-e RABBITMQ_DEFAULT_USER=admin \
-e RABBITMQ_DEFAULT_PASS=admin \
-v mq-plugins:/plugins \
-v /home/rabbitmq/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf \
-v /home/rabbitmq/.erlang.cookie:/var/lib/rabbitmq/.erlang.cookie \
4b5f4b2a3227
复制代码

参数解析:

复制代码
-d 容器后台运行
--hostname rabbitmq1 容器的主机名为 rabbitmq1
--add-host rabbitmq2:42.192.139.111  修改容器内部的hosts,添加的集群服务器都需要添加进来
--restart=unless-stopped docker 容器重启后重启MQ
--name rabbitmq1 容器名为rabbitma1,在宿主机上运行“docker ps”命令时显示的名称
-p "5672:5672" 消息通讯端口
-p "15672:15672" 后台管理端口
-p "4369:4369" 在 Erlang 集群中相当于 dns 的作用,绑定在4369端口上
-p "25672:25672" 25672端口用于节点间和CLI工具通信(Erlang分发服务器端口)
-e RABBITMQ_DEFAULT_USER=admin 设置rabbitmq默认用户为admin
-e RABBITMQ_DEFAULT_PASS=admin 设置rabbitmq默认密码为admin
复制代码

 

搭建完毕!!!

posted @   市井丛林  阅读(2153)  评论(2编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示