RabbitMQ–生产环境docker搭建–02–集群部署
前提
使用hd用户登陆
完成基础环境搭建
https://blog.csdn.net/zhou920786312/article/details/118212302
1、机器
服务器地址 | 端口 | 节点名称 | 备注 |
---|---|---|---|
192.168.187.171 | 15672 | mq1 | 基准节点 |
192.168.187.172 | 15672 | mq2 | 加入基准节点 |
192.168.187.173 | 15672 | mq3 | 加入基准节点 |
2、公共操作
所有节点都要做
2.1、下载docker
docker pull rabbitmq:3.8-management-alpine
2.2、创建配置文件和日志文件
cd
mkdir -p ./data/rabbitmq/{logs,conf,data}
2.3、创建部署脚本
cd
mkdir -p shell
vi ./shell/rabbitmq.sh
内容
#!/bin/sh
echo "空脚本"
2.4、授权,测试脚本
cd
# 授权
chmod +x ./shell/rabbitmq.sh
# 执行脚本
./shell/rabbitmq.sh
3、基准节点(mq1)部署
3.1、编辑部署脚本
cd
vi ./shell/rabbitmq.sh
内容
#!/bin/sh
NAME=mq1
PORT=5672
PORT_WEB1=15672
PORT_WEB2=25672
VERSION=3.8-management-alpine
docker run -d \
--name ${NAME} \
--hostname ${NAME}\
--add-host mq1:192.168.187.171 \
--add-host mq2:192.168.187.172 \
--add-host mq3:192.168.187.173 \
-p ${PORT}:5672 \
-p ${PORT_WEB1}:15672 \
-p ${PORT_WEB2}:25672 \
-p 4369:4369 \
-p 35197:35197 \
-e "RABBITMQ_LOGS=/var/log/rabbitmq/rabbit.log" \
-v /etc/localtime:/etc/localtime \
-v /home/hd/data/rabbitmq:/var/lib/rabbitmq \
-v /home/hd/data/rabbitmq/logs:/var/log/rabbitmq \
--restart=unless-stopped rabbitmq:${VERSION}
3.2、执行启动脚本
cd
# 启动
./shell/rabbitmq.sh
#查看docker实例启动情况
docker ps | grep rabbitmq
3.3、拷贝 erlang.cookie 给 其他节点
# 修改cookie文件权限,方便传输
sudo chmod 777 /home/hd/data/rabbitmq/.erlang.cookie
# 拷贝给 其他节点
scp /home/hd/data/rabbitmq/.erlang.cookie root@192.168.187.172:/home/hd/data/rabbitmq/.erlang.cookie
scp /home/hd/data/rabbitmq/.erlang.cookie root@192.168.187.173:/home/hd/data/rabbitmq/.erlang.cookie
# 设置.erlang.cookie权限
sudo chmod 600 /home/hd/data/rabbitmq/.erlang.cookie
3.4、建立可远程访问的管理员admin,密码为123456
# 添加用户 admin,密码 123456
docker exec mq1 rabbitmqctl add_user admin 123456
# 给admin用户分配 administrator角色
docker exec mq1 rabbitmqctl set_user_tags admin administrator
# 设置 分区为/,拥有对所有资源的 读写配置权限
docker exec mq1 rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
3.5、建立应用使用的普通用户bpm,密码为bpm
docker exec mq1 rabbitmqctl add_user bpm bpm
docker exec mq1 rabbitmqctl set_permissions -p / bpm ".*" ".*" ".*"
4、其他节点 部署
4.1、设置.erlang.cookie权限
# 设置.erlang.cookie权限
sudo chmod 600 /home/hd/data/rabbitmq/.erlang.cookie
4.2、编辑部署脚本
cd
vi ./shell/rabbitmq.sh
内容
#!/bin/sh
# NAME是唯一改动点
NAME=mq2
PORT=5672
PORT_WEB1=15672
PORT_WEB2=25672
VERSION=3.8-management-alpine
docker run -d \
--name ${NAME} \
--hostname ${NAME}\
--add-host mq1:192.168.187.171 \
--add-host mq2:192.168.187.172 \
--add-host mq3:192.168.187.173 \
-p ${PORT}:5672 \
-p ${PORT_WEB1}:15672 \
-p ${PORT_WEB2}:25672 \
-p 4369:4369 \
-p 35197:35197 \
-e "RABBITMQ_LOGS=/var/log/rabbitmq/rabbit.log" \
-v /etc/localtime:/etc/localtime \
-v /home/hd/data/rabbitmq:/var/lib/rabbitmq \
-v /home/hd/data/rabbitmq/logs:/var/log/rabbitmq \
--restart=unless-stopped rabbitmq:${VERSION}
4.3、执行启动脚本
cd
# 启动
./shell/rabbitmq.sh
#查看docker实例启动情况
docker ps | grep rabbitmq
4.4、其他节点(mq2,mq3) 加入 基准节点(mq1)的集群中
—ram参数:表示从节点为内存结点,无此参数为磁盘节点
# mq2机器
docker exec mq2 rabbitmqctl stop_app
docker exec mq2 rabbitmqctl reset
docker exec mq2 rabbitmqctl join_cluster --ram rabbit@mq1
docker exec mq2 rabbitmqctl start_app
# mq3机器
docker exec mq3 rabbitmqctl stop_app
docker exec mq3 rabbitmqctl reset
docker exec mq3 rabbitmqctl join_cluster --ram rabbit@mq1
docker exec mq3 rabbitmqctl start_app
4.5、设置镜像策略
- 在集群中,只需要在一个节点上设置镜像队列,设置操作会同步到其他节点。
- 我这里在mq1节点上操作
- 没有配置就是普通集群
# 匹配所有队列,并将镜像配置到集群中的所有节点
docker exec mq1 rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
4.6、查看集群状态
docker exec mq1 rabbitmqctl cluster_status
5、验证
http://192.168.187.172:15672/#/