【发布时间】:2018-04-28 01:10:23
【问题描述】:
是否可以通过多个 (2) RabbitMQ 集群来使用 RabbitMQ HA?
这是我的要求:
我们有 2 个 RabbitMQ 集群(每个集群有 4 个节点)。两个集群中的所有节点都将使用相同的 Erlang cookie。因此,即使这 2 个集群在物理上位于不同的位置,但将作为具有 8 个节点的单个集群。
我们计划使用 HAProxy 对两个集群(8 个节点)进行负载平衡。发布者和消费者都将使用此代理连接到代理。
我们希望将镜像队列用于 HA 与 ha-mode:exactly、ha-params:4、ha-sync-mode:automatic 以及用于 cluster_partition_handling 的 auto-heal。
问题:
在 HA 的情况下,我们是否可以指定使用来自第一个集群的 2 个节点和来自第二个集群的 2 个节点。据我了解,这可以通过策略 ha-mode:nodes 并使用节点名称来完成,但这样它将始终使用同一个节点,这个设置可以是动态的吗?
由于这两个集群都非常可靠,因此对 cluster_partition_handling 使用自动修复是否是正确的方法(以防裂脑)?
根据这个“默认情况下,RabbitMQ 集群中的队列位于单个节点上(第一次声明它们的节点)。这与交换和绑定相反,它总是可以被认为是在所有节点上。”。这是否意味着默认情况下会镜像交换?那么当一条消息到达一个交换机并且该节点宕机时,该消息在另一个节点上的另一个交换机上是否可用?
【问题讨论】:
标签: rabbitmq rabbitmq-exchange rabbitmqctl