使用Docker Swarm部署RabbitMQ3.9.11(三节点-镜像模式)
- 准备工作
-
- 镜像下载
- 机器信息
- 集群部署
-
- 初始化集群
- 创建数据卷
- 创建网络
- 创建服务
- 创建集群
- 镜像队列配置
准备工作
镜像下载
#下载带UI版本的MQ
docker pull rabbitmq:management
#导出image
docker save -o rabbitmq.tar {ID}
#导入image
docker load -i rabbitmq.tar
#更新包
apt-get update
apt install iputils-ping net-tools
机器信息
| 机器名称 | IP | 角色 |
|---|---|---|
| bc0 | 192.168.48.136 | master |
| bc1 | 192.168.48.138 | worker |
集群部署
初始化集群
登录bc0
#初始化集群
docker swarm init --advertise-addr=192.168.48.136
#输出信息如下
Swarm initialized: current node (dvubde276cls9bzr3j1ibc7vj) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join --token SWMTKN-1-6bj51nau8qo03gpdfqrxk5ao6yeli6y0bkxpgnsi71efbyovyb-7qlyybyx03kk1q5mhpfaxbpwi 192.168.48.136:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
注意事项
#放行命令
firewall-cmd --zone=public --add-port=2377/tcp --permanent #放行2377端口
#2377:用于集群管理通信的TCP端口
#7946:TCP和UDP的端口,用于节点间通信
#4789:UDP端口,用于覆盖网络流量。
firewall-cmd --query-port=2377/tcp
#重载防火墙
firewall-cmd --reload
创建数据卷
每个节点都要执行
#创建数据卷
# 初始化一个本地目录做数据共享
mkdir -p /AMT/rabbitmq-data
# 执行挂载挂载映射指令
docker volume create --driver local
--opt type=none
--opt device=/AMT/rabbitmq-data
--opt o=bind
cluster-rabbitmq-data
创建网络
主节点执行
docker network create -d overlay --attachable rabbitmq_network
创建服务
#主节点执行
docker run -d
--hostname bc0
--name bc0
-e RABBITMQ_ERLANG_COOKIE="rabbitcookie"
-e RABBITMQ_DEFAULT_USER="admin"
-e RABBITMQ_DEFAULT_PASS="admin"
-v cluster-rabbitmq-data:/var/lib/rabbitmq
-p 5672:5672
-p 15672:15672
--net=rabbitmq_network
6c3c2a225947
#二节点执行
docker run -d
--hostname bc1
--name bc1
-e RABBITMQ_ERLANG_COOKIE="rabbitcookie"
-v cluster-rabbitmq-data:/var/lib/rabbitmq
-p 5672:5672
-p 15672:15672
--net=rabbitmq_network
6c3c2a225947
创建集群
#主节点执行 docker exec -ti bc0 /bin/bash rabbitmqctl stop_app rabbitmqctl reset rabbitmqctl start_app #二节点执行 docker exec -ti bc1 bash rabbitmqctl stop_app rabbitmqctl reset rabbitmqctl join_cluster rabbit@bc0 (报错忽略) rabbitmqctl start_app
镜像队列配置
#设置镜像模式
rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
#查看集群状态
rabbitmqctl cluster_status
参考连接