我有以下我想要实现的方案:
答案 0 :(得分:1)
假设您设置了一个双节点RabbitMQ群集。在谈论ha代理之前,您需要先了解ha policies and the behavior of ha queues。不同的ha选项可能会导致RabbitMQ消息复制和节点故障转移的完全不同的行为。 RabbitMQ非常灵活,因此不要期望能够满足所有场景的黄金配置方式。
然后,由于您有两个可以接受连接的节点,因此您的客户端可以使用负载均衡器(例如ha代理)或使用支持连接到群集的多个节点的客户端驱动程序。无论哪种方式都可行。
使用haproxy时,您有一个负载均衡器ip。客户端仅连接到此负载均衡器ip,负载均衡器将您连接到底层节点。但只要创建了连接,客户端连接实例就会与其中一个节点保持通信。当其中一个节点关闭时,如果没有"健康检查"在负载均衡器中配置选项,客户端可能会出现随机连接失败。当你有" Health Checking"如果配置正确,负载均衡器知道哪些节点已关闭,那么客户端将只连接到健康节点,从而解决了这个问题。
当不使用负载均衡器并且仅基于客户端驱动程序连接到所有节点时,客户端驱动程序应该能够在内部处理连接失败或运行状况检查并执行故障转移/重试等,以确保连接变得健康节点