手把手教你使用docker搭建rabbitmq镜像集群

Rabbitmq普通集群模式,是将交换机、绑定、队列的元数据复制到集群里的任何一个节点,但队列内容只存在于特定的节点中,客户端通过连接集群中任意一个节点,即可以生产和消费集群中的任何队列内容(因为每个节点都有集群中所有队列的元数据信息,如果队列内容不在本节点,则本节点会从远程节点获取内容,然后提供给消费者消费)。

从该模式不难看出,普通集群可以让不同的繁忙队列从属于不同的节点,这样可以减轻单节点的压力,提升吞吐量,但是普通集群不能保证队列的高可用性,因为一旦队列所在节点宕机直接导致该队列无法使用,只能等待重启,所以要想在队列节点宕机或故障也能正常使用,就要复制队列内容到集群里的每个节点,需要创建镜像队列。

rabbitmq镜像集群依赖于普通集群,所以需要先搭建rabbitmq普通集群。

  • 环境

操作系统:centos7

docker版本:1.13.1

  • 搭建rabbitmq普通集群

docker拉取带management tag的最新版本,我这里最新版本是3.8.7

docker pull rabbitmq:management

启动三个同样cookie的rabbitmq实例(同样的cookie才能加入集群)

docker run -d --hostname rabbit1 --name myrabbit1 -p 15672:15672 -p 5672:5672 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' rabbitmq:management
docker run -d --hostname rabbit2 --name myrabbit2 -p 15673:15672 -p 5673:5672 --link myrabbit1:rabbit1 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' rabbitmq:management
docker run -d --hostname rabbit3 --name myrabbit3 -p 15674:15672 -p 5674:5672 --link myrabbit1:rabbit1 --link myrabbit2:rabbit2 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' rabbitmq:management

           这里注意使用--link将容器实例之前网络联系起来

           设置第二和第三个实例,使他们加入集群

docker exec -it myrabbit1 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
exit

docker exec -it myrabbit2 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster  rabbit@rabbit1
rabbitmqctl start_app
exit


docker exec -it myrabbit3 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster  rabbit@rabbit1
rabbitmqctl start_app
exit

进入控制台web界面查看http://ip:15672, 可以发现普通集群搭建成功

  • 搭建rabbitmq镜像集群

搭建镜像集群是在web控制台完成的,主要操作就是在Admin界面添加一个Policy. 具体参数如下图所示:

参数含义:

pattern: 队列名字的通配符

ha-mode:镜像队列提供了三种模式:

        all:全部的节点队列都做镜像;

        exactly:指定镜像队列的节点最高镜像数量;

        nodes:只为指定具体节点配置镜像队列;

ha-sync-mode :节点之前的同步模式。有自动和手动两种,默认是手动,这里设置为自动。

设置完成并添加了这个策略后,新建的和已存在的队列默认会支持此策略。

            至此,rabbitmq镜像集群已搭建成功。关于springboot怎么连接rabbitmq集群,参见这篇文章

=============重点============
作为卖水果的程序员,在为大家解惑的同时也为大家提供鲜美、可口、健康的有机水果。欢迎大家在解bug之余尝尝,提神醒脑,健胃开脾,地址:https://zhenxianguo.taobao.com

 

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值