如何使用像f5一样的loadbalancer来设置rabbitmq集群的故障转移

我一直在试图find关于f5开发人员中央和互联网关于以下设置没有运气的信息。

我们想要一个有3个节点的rabbitmq集群。 1节点将始终是所有队列的主/主节点。 1.将所有队列的所有连接/stream量发送到当前主节点(A)。 2.当节点A无响应(由于应用层或networking层问题)时,负载均衡器应自动将所有stream量故障切换到节点(B)。 3.如果节点B发生故障,移动到节点C.

问题:如何决定一个节点没有响应,故障转移到单独的节点应该发生? 有没有办法通过loadbalancer为此使用amqp协议调用rabbitmq? 找不到有据可查的文件。

即使您不知道如何使用F5来实现这一点,也可以从不同的负载平衡器或代码angular度来回答它。

除了这个问题:我认为无论这个健康检查是什么,必须具体一点,rabbitmq集群已经在主节点上已经故障到达节点B,当LB切换发生并且没有虚警时。

感谢您花时间阅读和回答。

我已经用Stingray负载均衡器为集群RabbitMQ完成了L4负载平衡 – 它工作的很好,而且我们已经完成了RR,没有任何特别的问题。

在一个Rabbit节点发生故障的情况下,TCP连接失败,负载均衡器将stream量发送到另一个节点。

现在这在技术上是低效的,因为发送到节点A的任何logging都将被发送到节点B,反之亦然,由兔通过Erlang的epmd

一个非常重要的注意事项是您必须设置负载均衡器来保持TCP连接无限期地打开。 这是一个常见问题,因为rabbit MQ使用长时间运行的tcp连接,但是大多数负载平衡器都是针对HTTP-esque连接参数的。 某些软件(nginx)具有非常积极的TCP清理窗口,并会closures这些TCP连接,即使所有机器都很开心,也会导致连接失败。

如果你只跟随主服务器,那么我会跳过负载平衡器,使用keepalived和状态检查来查看self是否是master,如果是master,那么它将使用vip。