RabbitMQ配置负载均衡的意义及RabbitMQ集群是否可以随意使用
说明 构建RabbitMQ集群来确保可用性和性能只是保障弹性消息通信基础架构的一半,另一半则是编写当集群节点发生故障时知道如何重连到集群的应用程序。 处理到集群的重连有多种策略,这篇wiki所关注的这种是使用负载均衡来处理节点的选择。 使用负载均衡的意义 通过使用负载均衡,不仅可以减少应用程序处理节点故障代码的复杂性,又能确保在集群中连接的平均分布。 但是即便使用了负载均衡,编写处理节点故障的应用程序也要比建立到集群的连接复杂的多,应用程序需要准备好重新创建交换器和队列以应对初始节点故障。 为Rabbit做负载均衡 当为RabbitMQ添加负载均衡时,集群节点就作为负载均衡背后的服务器,而生产者和消费者就是客户了。应用程序只需要知道负载均衡器的ip(或域名),负载均衡就会以最小的连接负载透明地将客户端连接到集群节点。 如果想要为集群增强性能,则无须更改应用程序,只需要新增rabbit节点并挂到负载均衡上即可,无须修改应用程序。 如果没有负载均衡的话,应用程序就不得不对每一个集群节点的IP做手工配置,同时也不得不自行处理集群节点的选择和故障服务器检测。由于每个应用程序需要自行选择节点,因此你就无法在集群内将负载平均分配。 通过将负载均衡放置在Rabbit集群的前端,就可以让负载均衡器自行处理节点选择(轮询或者最小连接、rabbit节点挂掉后自行摘除)。