一、安装RabbitMQ
在三台机器上,分别安装 RabbitMQ,安装后确认每个服务器节点都是可用的
root@iZ2vc7a1n9gvhfp589oav7Z:~# rabbitmqctl status #确认节点状态
Status of node
rabbit@iZ2vc7a1n9gvhfp589oav7Z ... #节点名称
Runtime
OS PID: 691019
OS: Linux
Uptime (seconds): 363321
Is under maintenance?: false
RabbitMQ version: 3.9.13
Node name: rabbit@iZ2vc7a1n9gvhfp589oav7Z
Erlang configuration: Erlang/OTP 24 [erts-12.2.1] [source] [64-bit] [smp:2:2]
[ds:2:2:10] [async-threads:1] [jit]
Erlang processes: 374 used, 1048576 limit
Scheduler run queue: 1
Cluster heartbeat timeout (net_ticktime): 60安装后,节点信息如下:
| 服务器 | IP | 开放端口 | 节点名称 |
|---|---|---|---|
| 节点1 | 10.0.0.232 | 5672,15672 | rabbit@iZ2vc7a1n9gvhfp589oav8Z |
| 节点2 | 10.0.0.233 | 5672,15672 | rabbit@iZ2vc7a1n9gvhfp589oav6Z |
| 节点3 | 10.0.0.234 | 5672,15672 | rabbit@iZ2vc7a1n9gvhfp589oav7Z |
二、配置hosts文件
配置每个节点的 hosts 文件,让各个节点都能互相识别对方:
vim /etc/hosts格式配置为:IP 主机名称
比如下面的配置:
# rabbitmq
10.0.0.232 iZ2vc7a1n9gvhfp589oav8Z
10.0.0.233 iZ2vc7a1n9gvhfp589oav6Z
10.0.0.234 iZ2vc7a1n9gvhfp589oav7Z💡 注意: 这里的主机名称不是随便写的,需要查看三台服务器的主机名是什么!
查看方式:
root@iZ2vc7a1n9gvhfp589oav6Z:~# **more /etc/hostname** #查看主机名
iZ2vc7a1n9gvhfp589oav6Z也可以通过修改该文件,修改主机名,修改之后需要 reboot 重启虚拟机。
注意: 谨慎修改主机名:如果是刚初始化的服务器,可以修改主机名,如果服务器上已经装了很多东西,就没必要修改主机名了!
三、配置ErlangCookie
RabbitMQ 节点和 CLI 工具(如rabbitmqctl)使用 Cookie 来进行身份验证,确认它们之间是否被允许相互通信。为了使两个节点可以通信,它们必须具有相同的共享密钥,称为 Erlang Cookie。Cookie 是一个字符串,通常存储在本地文件中。每个集群节点必须具有相同的Cookie。
Cookie文件的位置:RabbitMQ 启动时,erlang 虚拟机会自动创建该文件,通常位于 /var/lib/rabbitmq/.erlang.cookie 和 $HOME/.erlang.cookie。
1. 停止所有节点的服务
systemctl stop rabbitmq-server2. 配置ErlangCookie
只需将一个节点上的 .erlang.cookie 文件分别拷贝到另外两个节点上就可以.
比如把 node3 节点的文件,分别拷贝到 node1 和 node2 对应的机器上。
在 node3 上进行如下操作:
#拷贝node3节点的文件到node1
scp /var/lib/rabbitmq/.erlang.cookie
root@iZ2vc7a1n9gvhfp589oav8Z:/var/lib/rabbitmq/
#拷贝node3节点的文件到node2
scp /var/lib/rabbitmq/.erlang.cookie
root@iZ2vc7a1n9gvhfp589oav6Z:/var/lib/rabbitmq/3. 启动节点
以后端的方式启动三台RabbitMQ,启动命令:
rabbitmq-server -detached-
rabbitmq-server:启动 RabbitMQ 服务的命令 -
-detached或者--detached:参数表示在后台作为服务运行
四、构建集群
为了将集群中的三个节点连接起来,需要告诉另外两个节点加入另一个节点,比如 node1 和 node2 加入到 node3 节点。
加入 node3 之前,必须重置两个新加入的成员,也就是 node1 和 node2。
分别在要加入的两个机器上,执行下面的操作命令:
# 1. 关闭RabbitMQ服务
rabbitmqctl stop_app
# 2. 重置当前节点
rabbitmqctl reset
# 3.加入节点 后面跟的是node3节点
rabbitmqctl join_cluster rabbit@iZ2vc7a1n9gvhfp589oav7Z
# 4. 启动服务
rabbitmqctl start_app💡 重置节点会删除该节点上以前存在的所有资源和数据!
五、查看集群状态
查看集群状态:
rabbitmqctl cluster_status在管理平台也可以看到集群的信息

六、常见问题
1. Node statistics not available
cluster 搭建起来后,如果在管理界面中 Nodes 部分看到 "Node statistics not available",说明在该节点上 web 管理插件还未启用,如下所示:

解决办法: 启动 rabbitmq_management 插件即可。
在显示提示信息的节点上运行以下指令:
rabbitmq-plugins enable rabbitmq_management