Docker|Docker 部署 RabbitMQ集群
作者信息
Author:VincentE-Mail:46603415@qq.com
去查看RabbitMQ最新的Docker镜像Tag
https://hub.docker.com/_/rabbitmq?tab=tags
计划规划集群规模信息
192.168.1.221 rabbit1192.168.1.222 rabbit2192.168.1.223 rabbit3
分别在分布式集群三台机器拉取最新Tag的image,management是集成管理页面的镜像
docker pull rabbitmq:3.7.27-rc.1-management
在集群三台服务器都创建rabbitmq的持久化目录
mkdir -p /home/data/rabbitmq
在集群三台服务器写入集群配置配置信息到持久化目录
cat <>/home/data/rabbitmq/hosts192.168.1.221 rabbit1192.168.1.222 rabbit2192.168.1.223 rabbit3EOF
rabbit1 执行启动
--net=host是直列利用宿主机网络,大家可以-p 5672:5672 -p 15672:15672
-e RABBITMQ_DEFAULT_USER=root 指定账号
-e RABBITMQ_DEFAULT_PASS=12345 指定密码
docker run -d \--name rabbit1 \--net=host \-h rabbit1 \--log-opt max-size=10m \--log-opt max-file=3 \-v /home/data/rabbitmq:/var/lib/rabbitmq:z \-v /home/data/rabbitmq/hosts:/etc/hosts \-e RABBITMQ_DEFAULT_USER=root \-e RABBITMQ_DEFAULT_PASS=12345 \-e RABBITMQ_ERLANG_COOKIE='cookie' \rabbitmq:3.7.27-rc.1-management
rabbit2 执行启动
docker run -d \--name rabbit2 \--net=host \-h rabbit2 \--log-opt max-size=10m \--log-opt max-file=3 \-v /home/data/rabbitmq:/var/lib/rabbitmq:z \-v /home/data/rabbitmq/hosts:/etc/hosts \-e RABBITMQ_DEFAULT_USER=root \-e RABBITMQ_DEFAULT_PASS=12345 \-e RABBITMQ_ERLANG_COOKIE='cookie' \rabbitmq:3.7.27-rc.1-management
rabbit3 执行启动
docker run -d \--name rabbit3 \--net=host \-h rabbit3 \--log-opt max-size=10m \--log-opt max-file=3 \-v /home/data/rabbitmq:/var/lib/rabbitmq:z \-v /home/data/rabbitmq/hosts:/etc/hosts \-e RABBITMQ_DEFAULT_USER=root \-e RABBITMQ_DEFAULT_PASS=12345 \-e RABBITMQ_ERLANG_COOKIE='cookie' \rabbitmq:3.7.27-rc.1-management
假设为了效果节点都是内存型节点而非硬盘存储型
--ram指定此节点加入集群方式为内存类型,非硬盘节点不持久化数据到硬盘
rabbitmqctl join_cluster --ram rabbit@rabbit1
节点2加入到集群
docker exec -it rabbit2 /bin/bashrabbitmqctl stop_apprabbitmqctl resetrabbitmqctl join_cluster rabbit@rabbit1rabbitmqctl start_appexit
节点3加入到集群
docker exec -it rabbit3 /bin/bashrabbitmqctl stop_apprabbitmqctl resetrabbitmqctl join_cluster rabbit@rabbit1rabbitmqctl start_appexit
开启 policy(策略)
1、策略policy概念
为了使队列成为镜像队列,需要创建一个策略来匹配队列,设置策略有两个键“ha-mode和 ha-params(可选)”。ha-params根据ha-mode设置不同的值,下表说明这些key的选项。

文章图片
image.png name:随便取,策略名称
Pattern:^ 匹配符,只有一个^代表匹配所有
Definition:ha-mode=all 为匹配类型,分为3种模式:all(表示所有的queue)
或者使用命令:
rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
2、添加策略

文章图片
image
3、查看效果

文章图片
image
推荐阅读
- Docker应用:容器间通信与Mariadb数据库主从复制
- Beego打包部署到Linux
- 私有化轻量级持续集成部署方案--03-部署web服务(下)
- Spring|Spring Boot部署到Resin遇到的问题
- docker镜像探索----dive工具
- 如何在阿里云linux上部署java项目
- 部署专题集合
- jar|springboot项目打成jar包和war包,并部署(快速打包部署)
- 一键编译部署Mysql
- 8月16日|8月16日 全网备份