Docker搭建多机多节点haproxy+keepalived负载均衡的高可用RabbitMQ集群

本文为多宿主搭建,单机搭建可参考下方文章
https://www.cnblogs.com/CaesarLinsa/p/11037613.html

  坑很多,配置要求比较严苛,请注意

  多物理机搭建最大的问题是,默认bridge网络模式下docker容器使用的是bridge按照DHCP协议动态分配的子网IP,容器是虚拟网络容器,相对于外部网络是隔离的,所以无法通过hosts解析到外部IP,也无从连接其他mq节点

多宿主集群当前已知的搭建模式有:
① host的网络模式(- -net host)
② 插件(Calico flannel weave Docker Overlay)
③ overlay的网络模式
④ 内网DNS服务器提供域名解析

  这里提供host网络模式的集群搭建,以两台物理机为例,网络环境为内网

172.16.22.72 (主机)
172.16.22.59 (备机)
172.16.22.240(VIP)

(零)、架构图

(一)、创建MQ容器

  两种方法均可,均为增加hosts映射关系进行节点寻址,最终产出相同。建议采用方法一 ,后续节点扩增更灵活

  • 方法一

1.创建hosts
两台机器都创建/opt/rabbitmq目录,然后在rabbitmq目录下创建hosts文件

mkdir /opt/rabbitmq
cd /opt/rabbitmq
vi hosts
#ip            真实主机hostname(如果主机名为localhost会有一点问题,建议更改)
172.16.22.72   support
172.16.22.59   hr02

2.运行容器
当docker发现本地没有 rabbitmq:management 的镜像时会主动从仓库拉取,management 为带有管理页面的版本

#172.16.22.72
docker run -d --net host --name rabbit1  -v /opt/rabbitmq:/var/lib/rabbitmq:z  -v /opt/rabbitmq/hosts:/etc/hosts -e RABBITMQ_ERLANG_COOKIE='RABBITMQ'  rabbitmq:management
#172.16.22.59
docker run -d --net host --name rabbit2  -v /opt/rabbitmq:/var/lib/rabbitmq:z  -v /opt/rabbitmq/hosts:/etc/hosts -e RABBITMQ_ERLANG_COOKIE='RABBITMQ'  rabbitmq:management
  • 方法二
#172.16.22.72
docker run -d --net host --name rabbit1 --add-host=support:172.16.22.72 --add-host=hr02:172.16.22.59 -e RABBITMQ_ERLANG_COOKIE='RABBITMQ'  rabbitmq:management
#172.16.22.59
docker run -d --net host --name rabbit2 --add-host=support:172.16.22.72 --add-host=hr02:172.16.22.59 -e RABBITMQ_ERLANG_COOKIE='RABBITMQ'  rabbitmq:management

  【可选】
  如果要将文件映射到宿主机方便以后迁移备份,可以添加文件映射命令如下。要注意,添加映射后不会开启管理页面的插件,需要进入容器手动启用插件,原因尚未探寻

#etc存放配置,lib存放数据库,log存放日志
-v /home/rabbitmq/etc/rabbitmq:/etc/rabbitmq -v /home/rabbitmq/lib/rabbitmq:/var/lib/rabbitmq ->v /home/rabbitmq/log/rabbitmq:/var/log/rabbitmq

  开启插件

docker exec -it rabbit1 /bin/bash
rabbitmq-plugins enable rabbitmq_management

  【解释】

#采用host的网络模式
--net host
#容器命名为rabbit1
--name rabbit1  
#将宿主机的/opt/rabbitmq目录映射到容器中的/var/lib/rabbitmq目录,
#z是一个标记,在selinux环境下使用
-v /opt/rabbitmq:/var/lib/rabbitmq:z  
#设置env 环境变量。这里的cookie可以为任意值,所有节点保持一致即可
-e RABBITMQ_ERLANG_COOKIE='RABBITMQ'
#增加host
--add-host=support:172.16.22.72

(二)、搭建集群

  将除了第一个节点外的其他节点加入第一个节点,每个节点都执行如下命令。加入节点时,
加上--ram 命令则为创建内存节点,不加为硬盘节点

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值