Docker搭建RabbitMQ集群
集群搭建方式:使用docker搭建的集群,在三台服务器上,每台服务器都映射了四个端口,4369,5672,15672,25672,服务器中的docker容器名称分别为myrabbitmq1,myrabbitmq2,myrabbitmq3,容器中的主机名称分别为rabbit1,rabbit2,rabbit3,挂载出来的文件并没有用到。
rabbitmq版本: 3.8.1-alpine
docker版本:20.10.7
集群ip:
172.21.29.140 myrabbitmq1所在服务器
172.21.29.139 myrabbitmq2所在服务器
172.21.29.138 myrabbitmq3所在服务器
可视化界面的端口 15672
三台服务器中的rabbitmq需要拥有相同的.erlang.cookie才能够联通。
首先是搭建rabbitmq普通集群
1.首先是拉取rabbitmq的docker镜像,三台服务器都需要拉取。
docker pull rabbitmq:3.8.1-alpine
2.执行启动命令,命令中包含容器内的主机名,容器名称,开机自启,容器中端口域名映射,数据挂载,端口映射等信息
这里需要注意的是,启动主rabbit和启动从rabbit的启动命令稍有区别,因为从rabbit启动后需要在配置文件中配置和主rabbit相同的.erlang.cookie字符串,从容器才能够加入到主rabbit的集群当中。
主rabbit(172.21.29.140)的启动命令如下:
docker run -d --hostname rabbit1 --name myrabbit1 --restart=always --add-host="rabbit1":172.21.29.140 --add-host="rabbit2":172.21.29.139 --add-host="rabbit3":172.21.29.138 -v /home/rabbitmq/data:/var/lib/rabbitmq -p 15672:15672 -p 5672:5672 -p 4369:4369 -p 25672:25672 rabbitmq:3.8.1-alpine
主rabbit启动好了之后,需要进入主rabbit的容器当中去查看.erlang.cookie的字符串值,路径为/var/lib/rabbitmq/.erlang.cookie,使用cat命令查看,这个字符串会在后面的从rabbit中的启动命令当中使用到
主rabbit进入容器中可以查看一下集群的状态,主rabbit无需过多配置。
$ docker exec -it myrabbitmq1 bin/bash
# 查看集群信息
$ rabbitmqctl cluster_status
两个从rabbit(172.21.29.139 172.21.29.138)的启动命令如下:注意这里.erlang.cookie需要替换为自己主rabbit上的
docker run -d --hostname rabbit2 --name myrabbit2 --restart=always --add-host="rabbit1":172.21.29.140 --add-host="rabbit2":172.21.29.139 --add-host="rabbit3":172.21.29.138 -v /home/rabbitmq/data:/var/lib/rabbitmq -e .erlang.cookie=KNCXIZKFFLTNERDPMDJV -p 15672:15672 -p 5672:5672 -p 4369:4369 -p 25672:25672 rabbitmq:3.8.1-alpine
docker run -d --hostname rabbit3 --name myrabbit3 --restart=always --add-host="rabbit1":172.21.29.140 --add-host="rabbit2":172.21.29.139 --add-host="rabbit3":172.21.29.138 -v /home/rabbitmq/data:/var/lib/rabbitmq -e .erlang.cookie=KNCXIZKFFLTNERDPMDJV -p 15672:15672 -p 5672:5672 -p 4369:4369 -p 25672:25672 rabbitmq:3.8.1-alpine
从rabbit需要先停掉rabbit服务,再将其加入到集群当中,再启动服务。进入到容器中执行命令如下:
$ docker exec -it myrabbitmq2 bin/bash
$ rabbitmqctl stop_app
$ rabbitmqctl reset
#加入集群
$ rabbitmqctl join_cluster rabbit@rabbit1
$ rabbitmqctl start_app
# 查看集群信息
$ rabbitmqctl cluster_status
$ docker exec -it myrabbitmq3 bin/bash
$ rabbitmqctl stop_app
$ rabbitmqctl reset
#加入集群
$ rabbitmqctl join_cluster rabbit@rabbit1
$ rabbitmqctl start_app
# 查看集群信息
$ rabbitmqctl cluster_status
需要进入到三个rabbit容器当中,下载可视化工具,指令如下: 不激活可视化工具将导致通过ip:端口无法访问rabbitmq的可视化界面
rabbitmq-plugins enable rabbitmq_management
至此普通集群搭建完成
搭建镜像集群(高可用)
搭建镜像集群是在普通集群已经搭建好的情况下进行的,所以到这里的前提是你已经搭建好了普通集群
需要做的任务也很简单:
进入到集群中任意一个rabbit容器当中执行如下命令:
rabbitmqctl set_policy ha-all "^rabbitmq" '{"ha-mode":"all","ha-sync-mode":"automatic"}'
至此高可用镜像集群搭建完成
附录
主要参考博客:
(103条消息) rabbitmq详解hmb↑的博客-CSDN博客rabbitmq
(103条消息) Docker + RabbitmQ 集群版(多台机器)sanduo112的博客-CSDN博客docker rabbitmq集群 多主机
(103条消息) docker rabbitmq_docker快速部署rabbitmq多机集群_weixin_39735166的博客-CSDN博客
(103条消息) docker run 命令详解(新手入门必备)运维@小兵的博客-CSDN博客docker run