1 修改 3 台机器的主机名称
在三台服务器分别执行
hostnamectl set-hostname master
hostnamectl set-hostname node01
hostnamectl set-hostname node02
2 配置各个节点的 hosts 文件
vim /etc/hosts
192.168.5.6 master
192.168.5.7 node01
192.168.5.8 node02
3 确保各个节点的 cookie 文件使用的是同一个值
在 master上执行远程操作命令
scp /var/lib/rabbitmq/.erlang.cookie root@node01:/var/lib/rabbitmq/.erlang.cookie
scp /var/lib/rabbitmq/.erlang.cookie root@node02:/var/lib/rabbitmq/.erlang.cookie
4 启动 RabbitMQ 服务
启动 RabbitMQ 服务,顺带启动 Erlang 虚拟机和 RbbitMQ 应用服务(在三台节点上分别执行以
下命令)
rabbitmq-server -detached
5 加入master节点
node01、 node02加入master节点,操作相同
# rabbitmqctl stop 会将Erlang 虚拟机关闭,rabbitmqctl stop_app 只关闭 RabbitMQ 服务
rabbitmqctl stop_app
# 重置rabbit数据
rabbitmqctl reset
# 加入master节点
rabbitmqctl join_cluster rabbit@master
# 只启动应用服务
rabbitmqctl start_app
6 查看集群状态
[root@master ~]# rabbitmqctl cluster_status
Cluster status of node rabbit@master ...
Basics
Cluster name: rabbit@master
Disk Nodes
rabbit@master
rabbit@node01
rabbit@node02
Running Nodes
rabbit@master
rabbit@node01
rabbit@node02
Versions
rabbit@master: RabbitMQ 3.8.8 on Erlang 21.3
rabbit@node01: RabbitMQ 3.8.8 on Erlang 21.3
rabbit@node02: RabbitMQ 3.8.8 on Erlang 21.3
Maintenance status
Node: rabbit@master, status: not under maintenance
Node: rabbit@node01, status: not under maintenance
Node: rabbit@node02, status: not under maintenance
7 为master节点设置管理员用户
因为node01和node02已经加入集群了,所以只设置master用户就会自动同步到子节点
rabbitmqctl add_user admin admin123 &&
rabbitmqctl set_user_tags admin administrator &&
rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"
8 效果图
9 node节点退出集群
在需要解除集群节点执行:
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
rabbitmqctl cluster_status
10 master主动剔除node节点
rabbitmqctl forget_cluster_node rabbit@node01