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
搭建完毕!!!
标签:
RabbitMQ
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!