RabbitMQ集群搭建(Docker环境)

rabbitmq集群搭建,这里我们采用docker的方式来进行搭建,确定安装了docker环境

1.拉取镜像

docker pull rabbitmq:3.6.15-management

2.创建rabbitmq容器

创建rabbitmq容器1:

docker run -d --hostname rabbit1 --name myrabbit1 -p 15672:15672 -p 5672:5672 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' rabbitmq:3.6.15-management

创建rabbitmq容器2:

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

执行成功后如下图

解释:

--link <name or id>:alias
其中,name和id是源容器的name和id,alias是源容器在link下的别名。

--link  用于在容器中进行通信的时候需要使用到的。


-e RABBITMQ_ERLANG_COOKIE='rabbitcookie'
其中 -e 设置环境变量  变量名为:RABBITMQ_ERLANG_COOKIE  值为:rabbitcookie  该值可以任意。 
但是一定要注意,两个容器的cookie值一定要一样才行。他的作用用于发现不同的节点,并通过该cookie进行自动校验和通信使用。

--hostname rabbit2  
其中:--hostname 用于设置容器内部的hostname名称,如果不设置,那就会自动随机生成一个hostname字,如下图。
这里一定要设置。因为rabbitmq的节点数据进行通信加入集群的时候需要用hostname作为集群名称。

 3.配置rabbitmq集群

这里我们使用 集群名 rabbit@rabbit1 ,将节点2 加入到节点1号中。

3.1配置rabbit1

进入到myrabbit1容器内部

docker exec -it myrabbit1 bash

配置节点

rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
exit

执行如下图:

rabbitmqctl stop_app  --- 表示关闭节点
rabbitmqctl reset     --- 重新设置节点配置
rabbitmqctl start_app --- 重新启动 (此处不需要设置 ,将该节点作为集群master,其他节点加入到该节点中)
exit ---退出容器

3.2配置rabbit2

进入到myrabbit2容器内部

 docker exec -it myrabbit2 bash

配置节点

rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster --ram rabbit@rabbit1
rabbitmqctl start_app
exit

执行如下图:

 解释:

rabbitmqctl join_cluster --ram rabbit@rabbit1

--  用于将该节点加入到集群中  
--  ram   设置为内存存储,默认为 disc 磁盘存储,如果为磁盘存储可以不用配置ram
-- rabbit@rabbit1   该 配置 为节点集群名称:集群名称为:rabbit@server  而server指定就是hostname的名称。

配置完成,打开web管理界面http://机器IP:15672,账密guest/guest,如下图所示:

 4.配置镜像队列

如上,我们已经搭建好了集群,但是并不能做到高可用,所以需要配置升级为镜像队列。

在任意的节点(A或者B)中执行如下命令:

rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'

执行正确如下图

 解释:
rabbitmqctl set_policy 
    用于设置策略
ha-all 
    表示设置为镜像队列并策略为所有节点可用 ,意味着 队列会被(同步)到所有的节点,当一个节点被加入到集群中时,也会同步到新的节点中,此策略比较保守,性能相对低,对接使用半数原则方式设置(N/2+1),例如:有3个结点 此时可以设置为:ha-two 表示同步到2个结点即可。
"^"  表示针对的队列的名称的正则表达式,此处表示匹配所有的队列名称
'{"ha-mode":"all"}' 设置一组key/value的JSON 设置为高可用模式 匹配所有exchange

此时查看web管理界面:添加一个队列test_queue,如下图已经可以出现结果为有一个结点,并且是ha-all模式(镜像队列模式)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值