26、RabbitMQ 实战 - RabbitMQ实现高可用负载均衡

前言:我们以往只能连接一个指定的队列,不能自由地连接其他的队列,当我们连接的那个指定队列宕机了,生产者和消费者都没办法往队列发送消息和消费消息,而且生产者和消费者也不能自动的连接到其他正常运行的队列,因为生产者和消费者要连接的队列都写死在了代码里(如图下所示)所以我们需要借助其他工具来解决不能变更所连接队列的问题。

 

1、 HAProxy的概念;

HAProxy提供高可用性、负载均衡及基于TCP/HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案,包括Twitter、Reddit、StackOverflow、GitHub在内的多家知名互联网公司在使用。HAProxy实现了一种事件驱动、单一进程模型,此模型支持非常大的井发连接数。

2、 使用HAProxy+keepalive实现负载均衡及高可用架构图;

平时客户端的请求走主机的Haproxy,然后主机的Haproxy转发请求到多台部署了RabbitMQ的服务器上,如果主机的Haproxy宕机了,keepalive会识别到并且把客户端的请求转移到备机上,然后备机再转发请求到多台部署了RabbitMQ的服务器上,这种方案可以通过Haproxy转发多台RabbitMQ来解决负载均衡和高并发问题,并且因为有备机,所以也具备高可用