我很清楚Spring AMQP支持故障转移,但我的问题是,如何对RabbitMQ代理的客户端和集群节点之间的连接进行负载均衡?
任何回复都将不胜感激。
问候。
答案 0 :(得分:2)
客户端可以正常连接到群集中的任何节点。如果该节点发生故障并且群集的其余部分仍然存在,则客户端应该注意到已关闭的连接,并且应该能够重新连接到群集中某个幸存的成员。通常,不建议将节点主机名或IP地址烘焙到客户端应用程序中:这会引入不灵活性,并且如果群集配置发生更改或群集中的节点数发生更改,则需要编辑,重新编译和重新部署客户端应用程序。相反,我们建议采用更抽象的方法:这可能是一个动态DNS服务,它具有非常短的TTL配置,或普通的TCP负载均衡器,或者通过心脏起搏器或类似技术实现的某种移动IP。通常,管理集群内节点连接的这一方面超出了RabbitMQ本身的范围,我们建议使用专门为解决这些问题而设计的其他技术。
另请参阅此答案:RabbitMQ client load balancing。
来自here的引用:
在其前面创建负载平衡并映射后端MQ实例。您可以选择HAProxy或Apache或Nginx或您在组织中使用的任何硬件负载均衡器。
如果服务器在VPC内的AWS中运行,则选择内部负载均衡器。更新应用程序以指向负载平衡器端点。
如您所见,互联网上有足够的信息。是的,我没有在这里提供我的意见,但看起来没有那么多困难来实现所需的解决方案。
只需为Rabbit节点配置一些负载均衡器,并为客户端使用其中的URL。