集群搭建
修改各节点主机名
vim /etc/hostname
47.172.193.131 node1
47.172.193.132 node2
47.172.193.133 node3
修改host文件
vim /etc/hosts
47.172.193.131 node1
47.172.193.132 node2
47.172.193.133 node3
Erlang Cookie同步
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
启动MQ服务和Erlang虚拟机
rabbitmq-server -detached
集群节点加入(node1为例)
rabbitmqctl stop_app(停止RabbitMQ服务)
rabbitmqctl reset(重置)
rabbitmqctl join_cluster rabbit@node1
rabbitmqctl start_app(启动RabbitMQ服务)
rabbitmqctl cluster_status(查看集群状态)
创建管理员账户
rabbitmqctl add_user admin 123
rabbitmqctl set_user_tags admin administrator
rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"
rabbitmqctl list_users
节点集群解除
rabbitmqctl stop_app(停止RabbitMQ服务)
rabbitmqctl reset(重置)
rabbitmqctl start_app(启动RabbitMQ服务)
rabbitmqctl cluster_status
rabbitmqctl forget_cluster_node rabbit@node2(node2脱离集群,在node1上执行)
镜像队列
如果集群某个节点不可用可能会造成消息丢失,消息发送之后到持久化成功存在短暂的刷盘时间。
可以将队列镜像到集群的其他Broker节点上,如果集群某个节点失效了,队列能自动的切换到
镜像中的另一个节点上保证服务的可用。
联邦交换机和联邦队列
实现节点间的数据同步,在每台机器上开启插件。
rabbitmq-plugins enable rabbitmq_federation
rabbitmq-plugins enable rabbitmq_federation_management
联邦队列可以在多个Broker节点(集群)直接为单个队列提供负载均衡的功能,数据同步。
node2主动连接node1,数据由node1同步到node2中。


Shovel
可以将源端的数据转移到目的端,实现数据同步。
开启插件
rabbitmq-plugins enable rabbitmq_shovel
rabbitmq-plugins enable rabbitmq_shovel_management
