【发布时间】:2014-09-19 06:04:55
【问题描述】:
我知道 Spring AMQP 很好地支持故障转移,但我的问题是,如何对 RabbitMQ 代理的消费者端和集群节点之间的连接进行负载平衡?
我们将不胜感激。
问候。
【问题讨论】:
标签: java spring rabbitmq amqp spring-amqp
我知道 Spring AMQP 很好地支持故障转移,但我的问题是,如何对 RabbitMQ 代理的消费者端和集群节点之间的连接进行负载平衡?
我们将不胜感激。
问候。
【问题讨论】:
标签: java spring rabbitmq amqp spring-amqp
客户端可以正常连接到集群中的任何节点。如果该节点发生故障并且集群的其余部分仍然存在,那么客户端应该会注意到已关闭的连接,并且应该能够重新连接到集群中一些幸存的成员。通常,不建议将节点主机名或 IP 地址烘焙到客户端应用程序中:这会带来不灵活性,并且如果集群配置发生变化或集群中的节点数量发生变化,则需要编辑、重新编译和重新部署客户端应用程序。相反,我们建议使用更抽象的方法:这可以是具有非常短的 TTL 配置的动态 DNS 服务,或者是普通的 TCP 负载均衡器,或者是使用起搏器或类似技术实现的某种移动 IP。一般来说,管理与集群内节点的连接这一方面超出了 RabbitMQ 本身的范围,我们建议使用专门为解决这些问题而设计的其他技术。
另请参阅此答案:RabbitMQ client load balancing。
还有来自here的引用:
在它前面创建一个负载均衡并映射后端 MQ 实例。您可以选择 HAProxy、Apache 或 Nginx 或您在组织中使用的任何硬件负载均衡器。
如果服务器在 VPC 内的 AWS 中运行,则选择内部负载均衡器。更新应用程序以指向负载均衡器端点。
正如您所见,互联网上有足够多的信息。对了,我没有在这里发表我的意见,但看起来实现所需的解决方案并没有太大的困难。
只需为 Rabbit 节点配置一些负载均衡器,然后为客户端使用其中的 url。
【讨论】: