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

 

搭建完毕!!!


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM