使用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
参考连接