具有 ha req/reply 的 rabbitmq
rabbitmq with ha req/reply
我想实现以下场景:
- rabbit mq 必须进行负载平衡(它是由 rabbitmq 提供的现成的东西还是像 haproxy 负载平衡器这样的东西会很好用。哪个负载平衡得很好。)
- CAN haproxy 直接将消息推送到 rabbitmq(假设一个 POST 请求到达 http://localhost:3333/redirectToRabbit 被重定向到 rabbit 并且可选地 ACK 或 RESPONSE 返回到客户端。还要注意 haproxy 会加载平衡请求)
- 有医管局;最好的配置是什么(与持久队列、持久队列或其他东西交换。注意:如果 rabbitmq 实例之一出现故障,消息将如何重定向到其他 rabbitmq 实例——持久化并自动重定向到可用的 rabbitmq)
假设您设置了一个双节点 RabbitMQ 集群。在讲ha proxy之前,你需要先了解一下ha policies and the behavior of ha queues。不同的 ha 选项可能会导致 RabbitMQ 消息复制和节点故障转移的行为完全不同。 RabbitMQ是如此灵活,所以不要指望有一个可以满足所有场景的黄金配置方式。
然后,由于您有两个可以接受连接的节点,您的客户端可以使用负载均衡器(例如 ha 代理)或使用支持连接到集群的多个节点的客户端驱动程序。两种方法都行。
使用haproxy时,你有一个负载均衡器ip。客户端仅连接到此负载均衡器 ip,负载均衡器将您的连接转发到底层节点。但是只要创建了一个连接,客户端连接实例就会一直与其中一个节点对话。当其中一个节点关闭时,如果您的负载均衡器中没有配置 "Health Checking" 选项,客户端可能会随机连接失败。当您正确配置“Health Checking”选项时,负载均衡器知道哪些节点已关闭,这样客户端将只连接到健康的节点,从而解决问题。
当不使用负载均衡器并且仅基于客户端驱动程序连接到所有节点时,客户端驱动程序应该能够在内部处理连接失败或健康检查并执行 failover/retry 等,以确保连接转到健康节点。
我想实现以下场景:
- rabbit mq 必须进行负载平衡(它是由 rabbitmq 提供的现成的东西还是像 haproxy 负载平衡器这样的东西会很好用。哪个负载平衡得很好。)
- CAN haproxy 直接将消息推送到 rabbitmq(假设一个 POST 请求到达 http://localhost:3333/redirectToRabbit 被重定向到 rabbit 并且可选地 ACK 或 RESPONSE 返回到客户端。还要注意 haproxy 会加载平衡请求)
- 有医管局;最好的配置是什么(与持久队列、持久队列或其他东西交换。注意:如果 rabbitmq 实例之一出现故障,消息将如何重定向到其他 rabbitmq 实例——持久化并自动重定向到可用的 rabbitmq)
假设您设置了一个双节点 RabbitMQ 集群。在讲ha proxy之前,你需要先了解一下ha policies and the behavior of ha queues。不同的 ha 选项可能会导致 RabbitMQ 消息复制和节点故障转移的行为完全不同。 RabbitMQ是如此灵活,所以不要指望有一个可以满足所有场景的黄金配置方式。
然后,由于您有两个可以接受连接的节点,您的客户端可以使用负载均衡器(例如 ha 代理)或使用支持连接到集群的多个节点的客户端驱动程序。两种方法都行。
使用haproxy时,你有一个负载均衡器ip。客户端仅连接到此负载均衡器 ip,负载均衡器将您的连接转发到底层节点。但是只要创建了一个连接,客户端连接实例就会一直与其中一个节点对话。当其中一个节点关闭时,如果您的负载均衡器中没有配置 "Health Checking" 选项,客户端可能会随机连接失败。当您正确配置“Health Checking”选项时,负载均衡器知道哪些节点已关闭,这样客户端将只连接到健康的节点,从而解决问题。
当不使用负载均衡器并且仅基于客户端驱动程序连接到所有节点时,客户端驱动程序应该能够在内部处理连接失败或健康检查并执行 failover/retry 等,以确保连接转到健康节点。