集群搭建

修改各节点主机名

  1. vim /etc/hostname
  2. 47.172.193.131 node1
  3. 47.172.193.132 node2
  4. 47.172.193.133 node3

修改host文件

  1. vim /etc/hosts
  2. 47.172.193.131 node1
  3. 47.172.193.132 node2
  4. 47.172.193.133 node3

Erlang Cookie同步

  1. scp /var/lib/rabbitmq/.erlang.cookie root@node2:/var/lib/rabbitmq/.erlang.cookie
  2. scp /var/lib/rabbitmq/.erlang.cookie root@node3:/var/lib/rabbitmq/.erlang.cookie

启动MQ服务和Erlang虚拟机

  1. rabbitmq-server -detached

集群节点加入(node1为例)

  1. rabbitmqctl stop_app(停止RabbitMQ服务)
  2. rabbitmqctl reset(重置)
  3. rabbitmqctl join_cluster rabbit@node1
  4. rabbitmqctl start_app(启动RabbitMQ服务)
  5. rabbitmqctl cluster_status(查看集群状态)

创建管理员账户

  1. rabbitmqctl add_user admin 123
  2. rabbitmqctl set_user_tags admin administrator
  3. rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"
  4. rabbitmqctl list_users

节点集群解除

  1. rabbitmqctl stop_app(停止RabbitMQ服务)
  2. rabbitmqctl reset(重置)
  3. rabbitmqctl start_app(启动RabbitMQ服务)
  4. rabbitmqctl cluster_status
  5. rabbitmqctl forget_cluster_node rabbit@node2(node2脱离集群,在node1上执行)

镜像队列

  1. 如果集群某个节点不可用可能会造成消息丢失,消息发送之后到持久化成功存在短暂的刷盘时间。
  2. 可以将队列镜像到集群的其他Broker节点上,如果集群某个节点失效了,队列能自动的切换到
  3. 镜像中的另一个节点上保证服务的可用。

镜像队列.png

联邦交换机和联邦队列

  1. 实现节点间的数据同步,在每台机器上开启插件。
  2. rabbitmq-plugins enable rabbitmq_federation
  3. rabbitmq-plugins enable rabbitmq_federation_management
  4. 联邦队列可以在多个Broker节点(集群)直接为单个队列提供负载均衡的功能,数据同步。
  5. node2主动连接node1,数据由node1同步到node2中。

联邦交换机1.png
联邦交换机2.png
联邦交换机3.png

Shovel

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

Shovel.png