0


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


本文转载自: https://blog.csdn.net/jack__love/article/details/127185677
版权归原作者 coder86 所有, 如有侵权,请联系我们删除。

“RabbitMQ集群搭建(Docker环境)”的评论:

还没有评论