停止一个节点时 RabbitMQ 队列主定位器不起作用

标签 rabbitmq high-availability policies

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

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

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

请我们开始对此感到疯狂。大家都实验过这个场景吗?当以某种自动方式关闭节点 A 时,是否可以实现我们期望发生的情况?

我们的政策定义如下:

上市政策... prod ha 队列 ^ {"ha-mode":"完全正确","ha-params":3,"ha-sync-mode":"自动","queue-master-locator":"min-masters"}

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

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

谢谢

最佳答案

根据官方文档:

If the master fails […] the longest running mirror is promoted to master

原因如下:

the assumption being that it is most likely to be fully synchronised with the master.

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

关于停止一个节点时 RabbitMQ 队列主定位器不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46910031/

相关文章:

使用自定义策略的 Azure B2C 注册年龄限制

iOS 获取设备用户所在国家

c# - Rabbitmq,在发布者之前重启消费者

java - 在集成测试期间防止 spring-rabbit 中的@RabbitListener 尝试连接到服务器

java - 具有自动更新和 MongoDB 副本集的应用程序

elasticsearch - 两节点Elasticsearch集群中的高可用性

docker - 识别 docker swarm 中的不同副本

python - AMQP:确认和预取

node.js - 无法让 RabbitMQ Clojure 客户端工作

json - 如何在 Azure 策略中强制实现标签值模式?