RabbitMQ(十) RabbitMQ集群

171 阅读1分钟
  1. 克隆三台虚拟机 ,修改三台机器的名称为node1、node2、node3
vim /etc/hosts
node1
node2
node3

  1. 修改三台机器的hosts文件中的名称,让各个节点都能互相识别对象

(获取ip指令: ip addr)

vim /etc/hosts
虚拟机IP node1
虚拟机IP node2
1虚拟机IP node3

  1. 以确保各个节点的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

  1. 启动RabbitMQ服务,顺带启动Erlang虚拟机和RabbitMQ应用服务,三台节点下执行:
rabbitmq-server -detached
  1. 在节点2执行
# rabbitmqctl stop会将Erlang虚拟机关闭  rabbitmqctl stop_app 只关闭rabbitmq服务
rabbitmqctl stop_app
#重置mq
rabbitmqctl reset 
rabbitmqctl join_cluster rabbit@node1
# 只启动rabbitmq服务
rabbitmqctl start_app

  1. 在节点3执行
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@node2
rabbitmqctl start_app

  1. 查看集群状态
rabbitmqctl cluster_status

  1. 需要重新设置用户

# 创建账号
rabbitmqctl add_user admin 123
# 设置用户角色
rabbitmqctl set_user_tags admin administrator
# 设置用户权限
rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*" 

之后在三个集群节点的任意一个可视化界面登录均可

  1. 接触集群节点,node2和node3分别执行
#下列命令 解除哪个就在哪台执行
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
rabbitmqctl cluster_status
# 此项命令均在node1上执行  (将某个mq脱离集群)
rabbitmqctl forget_cluster_node rabbit@node2