目录
1、准备好三台虚拟机
可以用通过克隆的方式进行创建
1.1、修改三台虚拟机名称
1.修改名称
这里设置的三台名称分别是 node1 node2 node3
vim /etc/hostname (根据自己情况自定义)
2.重启虚拟机
reboot
3.查看名称修改情况
hostname
1.2、 修改 hosts 文件让各个节点都能互相识别对方
1.三台虚拟机都要设置,让它们互相认识
vim /etc/hosts
1.3、 设置cookie文件
1.在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
2.重启(三台都重启)
rabbitmq-server -detached
3.在node2上执行
rabbitmqctl stop_app
(rabbitmqctl stop 会将 Erlang 虚拟机关闭,rabbitmqctl stop_app 只关闭 RabbitMQ 服务)
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@node1
rabbitmqctl start_app(只启动应用服务)4.在node3上执行(node2启动完成才能执行node3)
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@node2
rabbitmqctl start_app5.查看集群状态
rabbitmqctl cluster_status
6.重新设置用户
创建账号
rabbitmqctl add_user admin 123
设置用户角色
rabbitmqctl set_user_tags admin administrator
设置用户权限
rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"7.登录管理页面查看
1.4、解除集群
1.解除集群节点(node2 和 node3 机器分别执行)
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
rabbitmqctl cluster_status
rabbitmqctl forget_cluster_node rabbit@node2(node1 机器上执行)rabbitmqctl forget_cluster_node rabbit@node3(node1 机器上执行)
2、镜像队列(相当于备份)
为什么要设置镜像队列:在1号机上创建的队列2号机上没有
在集群中当一台机器宕机了,在重启数据就会丢失。所以用到了镜像队列
2.1、搭建步骤
1.随便找一个节点添加policy
![]()
2.设置完成后当节点1宕机后,数据就不会丢失,会自动保存在另一个节点中。
这里没有强制设置镜像到某个节点所以镜像随机生成
相当于:三个节点,在1节点生成队列,就会随机在其他俩节点上复制(镜像)一个队列。当1节点宕机,其他俩节点中随机生成的队列就不会消失。还会自动在备份一份到没有队列的节点中。
总结:随着机器的宕机它会把数据移到其他机器上,只要有一台机器存在数据就不会丢失。
3、Haproxy 实现负载均衡
某个主机宕机了,备机就接替它的工作