博客 RabbitMQ集群搭建(Docker环境)

RabbitMQ集群搭建(Docker环境)

   数栈君   发表于 2023-05-08 15:31  226  0

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模式(镜像队列模式)

免责申明:

本文系转载,版权归原作者所有,如若侵权请联系我们进行删除!

《数据治理行业实践白皮书》下载地址:https://fs80.cn/4w2atu

《数栈V6.0产品白皮书》下载地址:
https://fs80.cn/cw0iw1

想了解或咨询更多有关袋鼠云大数据产品、行业解决方案、客户案例的朋友,浏览袋鼠云官网:
https://www.dtstack.com/?src=bbs

同时,欢迎对大数据开源项目有兴趣的同学加入「袋鼠云开源框架钉钉技术群」,交流最新开源技术信息,群号码:30537511,项目地址:
https://github.com/DTStack

0条评论
社区公告
  • 大数据领域最专业的产品&技术交流社区,专注于探讨与分享大数据领域有趣又火热的信息,专业又专注的数据人园地

最新活动更多
微信扫码获取数字化转型资料
钉钉扫码加入技术交流群