- 克隆三台虚拟机 ,修改三台机器的名称为node1、node2、node3
vim /etc/hosts
node1
node2
node3
- 修改三台机器的hosts文件中的名称,让各个节点都能互相识别对象
(获取ip指令: ip addr)
vim /etc/hosts
虚拟机IP node1
虚拟机IP node2
1虚拟机IP node3
- 以确保各个节点的cookie文件使用的是同一个值:在node1上执行远程操作命令
scp /var/lib/rabbitmq/.erlang.cookie root@node2:/var/lib/rabbitmq/.erlang.cookie
scp /var/lib/rabbitmq/.erlang.cookie root@node3:/var/lib/rabbitmq/.erlang.cookie
- 启动RabbitMQ服务,顺带启动Erlang虚拟机和RabbitMQ应用服务,三台节点下执行:
rabbitmq-server -detached
- 在节点2执行
# rabbitmqctl stop会将Erlang虚拟机关闭 rabbitmqctl stop_app 只关闭rabbitmq服务
rabbitmqctl stop_app
#重置mq
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@node1
# 只启动rabbitmq服务
rabbitmqctl start_app
- 在节点3执行
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@node2
rabbitmqctl start_app
- 查看集群状态
rabbitmqctl cluster_status
- 需要重新设置用户
# 创建账号
rabbitmqctl add_user admin 123
# 设置用户角色
rabbitmqctl set_user_tags admin administrator
# 设置用户权限
rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"
之后在三个集群节点的任意一个可视化界面登录均可
- 接触集群节点,node2和node3分别执行
#下列命令 解除哪个就在哪台执行
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
rabbitmqctl cluster_status
# 此项命令均在node1上执行 (将某个mq脱离集群)
rabbitmqctl forget_cluster_node rabbit@node2