RabbitMQ多个集群上的镜像队列

时间:2017-11-14 23:07:09

标签: rabbitmq rabbitmq-exchange rabbitmqctl

是否可以使用RabbitMQ HA使用多个(2)RabbitMQ群集?

这是我的要求:

我们有2个RabbitMQ集群(每个集群有4个节点)。两个集群中的所有节点都将使用相同的Erlang cookie。因此,即使这两个集群在物理上位于不同的位置,但也将充当具有8个节点的单个集群。

我们计划使用HAProxy对两个集群(8个节点)进行负载平衡。发布者和消费者都将使用此代理连接到代理。

我们希望使用带有ha模式的HA的镜像队列:确切地说,ha-params:4,ha-sync-mode:自动以及cluster_partition_handling的自动修复。

问题:

  1. 如果是HA,我们可以指定使用第一个集群中的2个节点和第二个集群中的2个节点。据我了解,这可以通过策略ha模式完成:节点和使用节点名称,但这样总是使用相同的节点,这个设置可以动态吗?

  2. 由于两个集群都非常可靠,对于cluster_partition_handling(如果是大脑分裂)使用自动修复是否正确?

  3. 根据这个“默认情况下,RabbitMQ集群中的队列位于单个节点(首先声明它们的节点)上。这与交换和绑定形成对比,交换和绑定总是可以考虑在所有节点上。“这是否意味着默认情况下镜像交换?因此,当消息到达交换机并且该节点发生故障时,该消息是否可以在另一个节点上的另一个交换机上获得?

1 个答案:

答案 0 :(得分:0)

RabbitMQ团队监控this mailing list,有时只回答StackOverflow上的问题。

  

这样,即使这两个集群在物理上位于不同的位置,但也将充当具有8个节点的单个集群。

请不要这样做。 RabbitMQ群集需要与低延迟可靠网络连接。如果您的群集跨越WAN或可用区,则您的网络分区的可能性会大大增加。有关详细信息,请参阅文档的this section。您应该使用铲子或联合功能。

  

这是否意味着默认情况下镜像交换?因此,当消息到达交换机并且该节点发生故障时,该消息是否可以在另一个节点上的另一个交换机上获得?

是的,是的。