Docker Swarm RabbitMQ集群离线模式

准备工作

环境准备

docker安装详见(离线版):Docker

镜像下载

#下载带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角色
bc0192.168.48.139master
bc1192.168.48.140worker

【抱歉】由于虚拟机配置有限,这里只列出了一个worker节点——bc1,如果要添加第三个节点参考bc1的流程,操作一毛一样(很简单就两步)

集群部署

防火墙设置(建议关闭)

登录bc0、bc1设置防火墙策略并重启docker

#2377:用于集群管理通信的TCP端口
#7946:TCP和UDP的端口,用于节点间通信
#4789:UDP端口,用于覆盖网络流量。
#放行docker端口
sudo firewall-cmd --zone=public --add-port=2377/tcp --permanent 
sudo firewall-cmd --zone=public --add-port=7946/tcp --permanent 
sudo firewall-cmd --zone=public --add-port=7946/udp --permanent
sudo firewall-cmd --zone=public --add-port=4789/tcp --permanent 
sudo firewall-cmd --zone=public --add-port=4789/udp --permanent
#放行rabbitmq端口
sudo firewall-cmd --zone=public --add-port=4369/tcp --permanent 
sudo firewall-cmd --zone=public --add-port=25672/tcp --permanent 
sudo firewall-cmd --zone=public --add-port=5672/tcp --permanent 
sudo firewall-cmd --zone=public --add-port=5671/tcp --permanent 
sudo firewall-cmd --zone=public --add-port=15672/tcp --permanent 
sudo firewall-cmd --zone=public --add-port=61613/tcp --permanent 
sudo firewall-cmd --zone=public --add-port=61614/tcp --permanent 
sudo firewall-cmd --zone=public --add-port=1883/tcp --permanent 
sudo firewall-cmd --zone=public --add-port=8883/tcp --permanent 
#重载防火墙
sudo firewall-cmd --reload   
#查询端口是否开放
sudo firewall-cmd --query-port=2377/tcp  
#查看开放端口的信息
sudo firewall-cmd --list-ports
#查看状态
sudo systemctl status firewalld
#重启docker
sudo systemctl restart docker
#其他rabbitmq端口
4369 (epmd), 25672 (Erlang distribution)
5672, 5671 (AMQP 0-9-1 without and with TLS)
15672 (if management plugin is enabled)
61613, 61614 (if STOMP is enabled)
1883, 8883 (if MQTT is enabled)

iptables参考文章:iptables
端口介绍:RabbitMQ Port

初始化集群

登录bc0

#初始化集群
 docker swarm init --advertise-addr=192.168.48.139
#输出信息如下
Swarm initialized: current node (qe3z4iwjfnkbrapr6co0jyt17) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-14z6qyqng6d2fa5lfq1e4fpc1vxa0ap4xw7nvvsb3j959y2ylv-8eribq58zumwcto5t6n3bjjuj 192.168.48.139:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

#查看集群状态
docker node ls
ID                            HOSTNAME   STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
qe3z4iwjfnkbrapr6co0jyt17 *   bc0        Ready     Active         Leader           24.0.7
m8r9n5cyh6eeydxqbumjutu8d     bc1        Ready     Active                          24.0.7

登录bc1

docker swarm join --token SWMTKN-1-14z6qyqng6d2fa5lfq1e4fpc1vxa0ap4xw7nvvsb3j959y2ylv-8eribq58zumwcto5t6n3bjjuj 192.168.48.139:2377

创建数据卷

每个节点bc0、bc1都要执行

#创建数据卷
# 初始化一个本地目录做数据共享
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 volume ls

创建网络

主节点执行

docker network create -d overlay --attachable rabbitmq_network
#查看网络
docker network ls

创建服务

#主节点执行
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

登录验证:
http://192.168.48.139:15672/#/
http://192.168.48.140:15672/#/
任意节点都可以登录

镜像队列配置

登录bc0

#设置镜像模式
rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
#查看集群状态
rabbitmqctl cluster_status

如下代表镜像配置成功:

参考资料

参考文章

  • 13
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值