rabbitqq with ha req / reply

时间:2016-03-12 12:11:53

标签: rabbitmq haproxy

我有以下我想要实现的方案:

  • rabbit mq必须是负载均衡的(它是由rabbitmq开箱即用的东西,或者像haproxy负载均衡器这样的东西可以很好地工作。哪一个是负载均衡的。)
  • CAN haproxy直接将消息推送到rabbitmq(假设来自http://localhost:3333/redirectToRabbit的POST请求被重定向到兔子,并且可选地,ACK或RESPONSE会返回到客户端。另请注意haproxy会对请求进行负载均衡)
  • 与HA;什么是最好的配置(与持久队列,持久队列或其他东西交换。注意:如果其中一个rabbitmq实例发生故障,消息将如何被重定向到其他Rabbitmq实例 - 持久化并自动重定向到可用的rabbitmq)

1 个答案:

答案 0 :(得分:1)

假设您设置了一个双节点RabbitMQ群集。在谈论ha代理之前,您需要先了解ha policies and the behavior of ha queues。不同的ha选项可能会导致RabbitMQ消息复制和节点故障转移的完全不同的行为。 RabbitMQ非常灵活,因此不要期望能够满足所有场景的黄金配置方式。

然后,由于您有两个可以接受连接的节点,因此您的客户端可以使用负载均衡器(例如ha代理)或使用支持连接到群集的多个节点的客户端驱动程序。无论哪种方式都可行。

使用haproxy时,您有一个负载均衡器ip。客户端仅连接到此负载均衡器ip,负载均衡器将您连接到底层节点。但只要创建了连接,客户端连接实例就会与其中一个节点保持通信。当其中一个节点关闭时,如果没有"健康检查"在负载均衡器中配置选项,客户端可能会出现随机连接失败。当你有" Health Checking"如果配置正确,负载均衡器知道哪些节点已关闭,那么客户端将只连接到健康节点,从而解决了这个问题。

当不使用负载均衡器并且仅基于客户端驱动程序连接到所有节点时,客户端驱动程序应该能够在内部处理连接失败或运行状况检查并执行故障转移/重试等,以确保连接变得健康节点