第三章 RabbitMQ 集群运维
3.MQ集群
3.1 部署准备
3.1.1 需求
我们先来看普通模式集群,我们的计划部署3节点的mq集群:

集群中的节点标识默认都是:rabbit@[hostname],因此以上三个节点的名称分别为:
rabbit@mq1
rabbit@mq2
rabbit@mq3
3.1.2 获取cookie
RabbitMQ底层依赖于Erlang,而Erlang虚拟机就是一个面向分布式的语言,默认就支持集群模式。集群模式中的每个RabbitMQ 节点使用 cookie 来确定它们是否被允许相互通信。
要使两个节点能够通信,它们必须具有相同的共享密钥,称为Erlang cookie。cookie 只是一串最多 255 个字符的字母数字字符。
每个集群节点必须具有相同的 cookie。实例之间也需要它来相互通信。
我们先在之前启动的mq容器中获取一个cookie值,作为集群的cookie。执行下面的命令:
docker exec -it mq cat /var/lib/rabbitmq/.erlang.cookie
可以看到cookie值如下:
FXZMCVGLBIXZCDEMMVZQ3.1.3 准备配置文件
在/root/mq目录新建一个配置文件 rabbitmq.conf:
cd /root/mq
创建文件
touch rabbitmq.conf
文件内容如下:
loopback_users.guest = false
listeners.tcp.default = 5672
cluster_formation.peer_discovery_backend = rabbit_peer_discovery_classic_config
cluster_formation.classic_config.nodes.1 = rabbit@mq1
cluster_formation.classic_config.nodes.2 = rabbit@mq2
cluster_formation.classic_config.nodes.3 = rabbit@mq3这段配置定义了一个包含三个节点的RabbitMQ集群,节点名称分别为 rabbit@mq1、rabbit@mq2 和 rabbit@mq3。这些节点将通过静态配置的方式互相发现对方,并形成集群。同时,配置禁用了guest用户通过环回接口登录,确保了基本的安全性,并且设置了默认的AMQP端口为5672。
配置项的具体含义:
- loopback_users.guest = false
这一行配置禁用了guest用户通过环回接口(localhost或127.0.0.1)登录RabbitMQ。默认情况下,guest用户只能通过环回接口登录。设置为 false 后,guest用户将不能通过环回接口登录,这有助于增强安全性。
- listeners.tcp.default = 5672
这一行配置指定了RabbitMQ监听的默认AMQP端口。在这里设置为5672,这是RabbitMQ的标准AMQP端口。
- cluster_formation.peer_discovery_backend = rabbit_peer_discovery_classic_config
这一行配置指定了集群节点之间如何发现彼此。rabbit_peer_discovery_classic_config 表示使用经典配置方式来发现集群中的其他节点。这是一种静态配置方式,需要显式地列出所有集群中的节点。
- cluster_formation.classic_config.nodes.1 = rabbit@mq1
这一行配置指定了集群中的第一个节点,即mq1节点,其节点名称为 rabbit@mq1。这里使用了Erlang节点命名约定,rabbit@ 后面跟着的是节点的主机名或别名。
- cluster_formation.classic_config.nodes.2 = rabbit@mq2
这一行配置指定了集群中的第二个节点,即mq2节点,其节点名称为 rabbit@mq2。
- cluster_formation.classic_config.nodes.3 = rabbit@mq3
这一行配置指定了集群中的第三个节点,即mq3节点,其节点名称为 rabbit@mq3。
再创建一个文件,记录cookie
cd /root/mq
创建cookie文件
touch .erlang.cookie
写入cookie
echo "CSFKFPKBBZGMXSGLDSYW" > .erlang.cookie
修改cookie文件的权限
chmod 600 .erlang.cookie
准备三个目录,mq1、mq2、mq3:
cd /root/mq
创建目录
mkdir mq1 mq2 mq3
然后拷贝rabbitmq.conf、cookie文件到mq1、mq2、mq3:
进入/root/mq
cd /root/mq
拷贝
cp rabbitmq.conf mq1
cp rabbitmq.conf mq2
cp rabbitmq.conf mq3
cp .erlang.cookie mq1
cp .erlang.cookie mq2
cp .erlang.cookie mq3试读到此结束,完整文档需开通会员,请花两分钟了解下我们
微信扫码添加添加老师微信开通会员:mrt_0607(备注:预见猿份)
探索者会员:59元,全站文档无障碍阅读,没有时间限制。
实践者会员:199元,全站文档+视频+源码资源,没有时间限制。
