具有 ha req/reply 的 rabbitmq

rabbitmq with ha req/reply

我想实现以下场景:

假设您设置了一个双节点 RabbitMQ 集群。在讲ha proxy之前,你需要先了解一下ha policies and the behavior of ha queues。不同的 ha 选项可能会导致 RabbitMQ 消息复制和节点故障转移的行为完全不同。 RabbitMQ是如此灵活,所以不要指望有一个可以满足所有场景的黄金配置方式。

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

使用haproxy时,你有一个负载均衡器ip。客户端仅连接到此负载均衡器 ip,负载均衡器将您的连接转发到底层节点。但是只要创建了一个连接,客户端连接实例就会一直与其中一个节点对话。当其中一个节点关闭时,如果您的负载均衡器中没有配置 "Health Checking" 选项,客户端可能会随机连接失败。当您正确配置“Health Checking”选项时,负载均衡器知道哪些节点已关闭,这样客户端将只连接到健康的节点,从而解决问题。

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