停止一个节点时,RabbitMQ queue-master-locator不起作用

时间:2017-10-24 12:00:24

标签: rabbitmq high-availability policies

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

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

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

请我们开始疯狂了。大家都试过这个场景吗?当以某种自动方式关闭节点A时,实现我们期望发生的事情是可行的吗?

我们的政策定义如下:

列出政策...... prod ha queues ^ {" ha-mode":"确切地"," ha-params":3," ha-sync-mode" :"自动""队列主定位器":"最小主人"}

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

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

由于

2 个答案:

答案 0 :(得分:1)

根据官方文件:

  

如果主机失败[...],则运行时间最长的镜像将提升为主镜像

原因如下:

  

假设它最有可能与主人完全同步。

enter image description here

答案 1 :(得分:1)

RabbitMQ团队监控the rabbitmq-users mailing list,有时只回答问题。

我刚刚使用3.6.13的最新预发布代码尝试了您的特定方案,我可以重现它。问题是RabbitMQ不会将现有队列主机移动到重新平衡队列 - 它只会移动其主机存在于已关闭的节点上的队列。我已打开this issue来解决您在此处报告的内容。

您可以使用this unsupported script重新平衡群集中的队列主机。如果您在运行脚本时遇到问题,请发布到rabbitmq-users,我会看到它。