2

我们正在探索 queue-master-locator 'min-masters' 策略,当我们创建新队列时它看起来工作正常,但是当由于某种原因我们需要停止集群的一个节点时,该节点上存在的每个队列被提升(master)到同一个节点,例如:

节点 A 有 30 个队列 节点 B 有 0 个队列 节点 C 有 2 个队列 节点 D 有 3 个队列

当我们停止节点 A 时,所有 30 个队列都被提升到节点 B,这是预期的结果吗?我们希望这 30 个队列将分布在节点 B、C 和 D...

拜托我们开始疯狂了。每个人都尝试过这种情况吗?当以某种自动方式关闭节点 A 时,是否有可能实现我们所期望的结果?

我们的政策定义如下:

列出政策 ... prod ha queues ^ {"ha-mode":"exactly","ha-params":3,"ha-sync-mode":"automatic","queue-master-locator":"min -大师”}

我们在集群中有 4 个节点,2 个 RAM 节点和 2 个磁盘节点。

当我们创建新队列时,该策略工作得很好,但当我们停止一个节点时它什么也不做。

谢谢

4

2 回答 2

1

根据官方文档:

如果主服务器失败 […] 运行时间最长的镜像将升级为主服务器

原因如下:

假设它最有可能与主服务器完全同步。

https://www.rabbitmq.com/ha.html

于 2017-10-24T19:13:21.463 回答
1

RabbitMQ 团队监控邮件列表,有时只rabbitmq-users这里回答问题。

我刚刚使用最新的预发布代码尝试了您的特定场景3.6.13,我可以重现它。问题是 RabbitMQ 不会将现有的队列主服务器移动到重新平衡队列 - 它只会移动其主服务器存在于发生故障的节点上的队列。我已经打开了这个问题来解决你在这里报告的内容。

您可以使用不受支持的脚本来重新平衡集群中的队列主机。如果您在运行脚本时遇到问题,请发帖到rabbitmq-users我会看到。

于 2017-10-26T14:24:09.277 回答