rabbitmq - 跨节点平衡 RabbitMQ 主队列

标签 rabbitmq load-balancing

我有一个由 3 个 RabbitMQ 节点组成的集群,我希望在所有节点之间保持主队列平衡,即使在节点重新启动后也是如此。尽管如此,当新节点加入集群或其中一个节点断开连接并重新连接时,主队列不会重新平衡。

示例:我在节点 A、B 和 C 上创建了 100 个队列。
如果节点 C 关闭,则来自 C 的主队列几乎在节点 A 和 B 之间重新平衡。因此,此时,节点 A 和 B 都有大约 50 个主队列。
现在,如果我重新连接节点 C,它将保留 0 个主队列,直到创建新队列。这是有问题的,因为我希望我的所有节点产生相同数量的工作。

我的交换是持久的,我的队列是持久的和镜像的,我的消息是持久的。我想避免丢失消息。

我知道有一种方法可以到 change the master node manually using a policy trick .但这并不令人满意,因为它破坏了 HA(通过引起所有镜像的重新同步)。

最佳答案

你可以使用这个命令:

rabbitmq-queues rebalance type --vhost-pattern pattern --queue-pattern pattern
例如
rabbitmq-queues rebalance "all" --vhost-pattern "a-vhost" --queue-pattern ".*"

关于rabbitmq - 跨节点平衡 RabbitMQ 主队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46834629/

相关文章:

javascript - RabbitMQ 中的任务排队

java - 使用 Spring AMQP 接收和发送 Java 对象

azure - HTTP 探测如何在 VM 上具有多个站点的 Azure IaaS 负载平衡集中工作

ssl - Kubernetes 负载均衡器终止 SSL 到反向代理入口 DigitalOcean

multithreading - 事件驱动有什么神奇之处?

RabbitMQ:从 RabbitMq 交换机路由到每个队列时消息是否重复

python - 当我尝试使用 pika (python) 向 RabbitMQ 确认消息时发生错误 "unknown delivery tag"

ruby-on-rails - rails 应用程序外部的数据库负载平衡?

kubernetes - 如何在kubernetes pod中将Rabbitmq数据目录设置为pvc

linux - Ubuntu Linux 和 Crossroads 负载均衡器不太工作