实现RabbitMQ的高可用集群,一般在并发和数据量不高的情况下,这种模型非常的好用且简单.
主备模式:所谓的rabbitmq另外一种模式就是warren(兔子窝),就是一个主/备方案(主节点若宕机,从节点提供服务而已,和activemq利用zookeeper做主/备一样)
listen rabbitmq_cluster
bind 0.0.0.0:5672
mode tcp #配置TCP模式
balance roundrobin #简单的轮询
server bhz76 192.168.11.12:5672 check inter 5000 rise 2 fall 2 #主节点
server bhz77 192.168.11.13:5672 backup check inter 5000 rise 2 fall 3 #备用节点
#inter 表示每隔5秒对集群做健康检查 2次正确证明服务器可用,2次失败证明服务器不可用,并且配置主备机制
远程模式:远距离通信和复制,Shovel就是我们可以把消息进行不同数据中心的复制工作,可以跨地域的让两个MQ集群互联.
在使用了shovel插件后,模型变成了近端同步确认
,远端异步确认方式
,大大提高了订单确认速度,还能保证可靠性。
rabbitmq-plugins enable amqp_client
rabbitmq-plugins enable rabbitmq_shovel
rabbitmq.conf
文件touch /etc/rabbitmq/rabbitmq.config
rabbitmq.config
集群模式,保证数据百分百不丢失。 集群实现简单,互联网都会构建该镜像集群模式。
Mirror镜像队列,为了保证RabbitMQ数据的高可靠的解决方案,主要为了实现数据的同步,一般2-3个节点实现数据同步(对于100%数据可靠性解决方案一般是3个节点)
也是实现异地数据复制的主流模式,因为Shovel模式配置较复杂,一般异地集群都使用双活或多活模式实现。
需要依赖RabbitMQ的federation插件,可实现继续的可靠AMQP数据通信,多活模式在实际配置与应用非常的简单。
RabbitMQ部署架构采用双中心模式(多中心),那么在两套(或多套)数据中心中各部署一套RabbitMQ集群套)数据中心中各部署一套RabbitMQ集群,各中心的RabbitMQ服务除了需要为业务提供正常的消息服务外,中心之间还需要实现部分队列消息共享。
一个不需要构建Cluster,而在Brokers间传输消息的高性能插件。 可在Brokers或Cluster间传输消息,连接双方可使用不同的users/vistual hosts/RabbitMQ。
使用AMQP通信协议,可接收不连续的传输
可以看成Downstream从Upstream主动拉取消息,但并不是拉取所有消息,必须是在Downstream上已经明确定义Bindings关系的Exchange,也就是有实际的物理Queue来接收消息,才会从Upstream拉取消息到Downstream。 使用AMQP协议实施代理间通信,Downstream会将绑定关系组合在一起,绑定/解绑命令将会发送到Upstream交换机。因此,FederationExchange只接收具有订阅的消息。
HAProxy是一款提供高可用性、负载均衡以及基于TCP (第四层)和HTTP (第七层)应用的代理软件,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。HAProxy特别适用于 那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在时下的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中同时可以保护你的web服务器不被暴露到网络上
HAProxy借助于OS,上几种常见的技术来实现性能的最大化
参考