RabbitMQ 第八课 RabbitMQ集群架构模式

1. 主备模式:实现RabbitMQ的多个节点中实现高可用集群,一般在并发和数据量不高的情况下,这种模型非常的好用且简单。主备模式也称之为Warren模式

特点:主节点提供读写,备用节点不提供任何读写的,只用来实现当主节点宕机的情况下能顶上去。

  主从模式:主节点提供读写,从节点只读。

HaProxy配置

listen rabbitmq_cluster

bind 0.0.0.0:5672 # 配置TCP模式

mode tcp #简单的轮询

balance roundrobin # 主节点

server bhz76 192.168.11.76:5672 check inter 5000 rise 2 fall 2

server bhz76 192.168.11.77:5672 backup check inter 5000 rise 2 fall 2 # 备用节点

备注:rabbitmq集群节点配置 #inter每隔5秒对mq集群做健康检查,2次正确证明服务器可用,2次失败证明服务器不可用,并且配置主备机制

2. 远程模式:(这种方式比较早了,已经有更好的替代方式了) 

远程模式是可以实现双活的一种模式,简称Shovel模式,所谓Shovel就是我们可以把消息进行不同数据中心的复制工作,我们可以跨地域的让两个mq集群互联

远距离通信和复制,所谓Shovel就是 我们可以把消息进行不同数据中心的复制工作,我们可以跨地域的让两个mq集群互联。

Shovel架构模型:

Shovel集群的拓扑图

Shovel集群的配置,首先启动Rabbitmq插件,命令如下:

rabbitmq-plugins enable amqp_client

rabbitmq-plugins enable amqp_shovel

创建rabbitmq.config文件:touch /etc/rabbitmq/rabbitmq.config

添加配置见rabbitmq.config

租后我们需要原服务器和目的地服务器都使用相同的配置文件(rabbitmq.config)

3.镜像模式:(Bingo)

集群模式非常经典的就是Mirror镜像模式,保证100%数据不丢失,在实际工作中也是用的最多的。并且实现集群非常的简单,一般互联网大厂都会构建这种镜像集群模式。

Mirror镜像队列:目的是为了保证rabbitmq数据的高可靠性解决方案,主要就是实现数据的同步,一般来讲是2-3个节点实现数据同步(对于100%数据可靠性解决方案一般是3节点),集群架构如下:

4.多活模式:

这种模式也是实现异地数据复制的主流模式,因为Shovel模式配置比较复杂,所以一般来说实现异地集群都是使用这种双活或者多活模式来去实现的。这种模型需要依赖Rabbitmq的federation插件,可以实现持续的可靠的AMQP数据通信,多活模式在实际配置与应用非常简单。

RabbitMQ部署架构采用双中心模式(多中心),那么在两套(或多套)数据中心各部署一套RabbitMQ集群,各个中心的RabbitMQ服务除了需要为业务提供正常的消息服务外,中心之间还需要实现部分队列消息共享。可以避免一个集群挂掉,整个系统就挂掉了。多活集群架构如下:

Federation插件

  是一个不需要构建Cluster,而在Brokers之间传输消息的高性能插件,Federation插件可以在Brokers或者Couster之间传输消息,连接的双方可以使用不同的users和Virtual hosts,双方也可以使用版本不同的RabbitMQ和Erlang。Federation插件使用AMQP协议通讯,可以接受不连续的传输。

   Federation Exchanges,可以看出DownStream从Upstream主动拉取消息,但并不是拉取所有消息,必须在Downstream上已经明确定义Bings关系的Exchange,也就是有实际的物理Queue来接收消息,才会从Upstream拉取消息到Downstream。使用AMQP协议实施代理间通信,Downstream会将绑定消息组合在一起,绑定/解除绑定命令将发送到Upstream交换机。因此,Federation Exchange 只接收具有订阅的消息,本处贴出官方图来说明:

猜你喜欢

转载自www.cnblogs.com/guchunchao/p/13176206.html