【发布时间】:2016-05-09 22:40:01
【问题描述】:
据我了解,RabbitMQ 集群是为了可扩展性而不是可用性,但使用镜像队列也可以实现可用性,因为如果主服务器发生故障,可以将最新的从服务器提升为主服务器。
来自文档:
发布到队列的消息被复制到所有从站。无论消费者连接到哪个节点,消费者都连接到主节点,从节点丢弃已在主节点确认的消息。因此,队列镜像提高了可用性,但不会在节点之间分配负载(所有参与节点各自完成所有工作)。
因此,给定队列的节点之间的负载平衡没有意义,因为这总是会增加从连接的节点到队列的主节点的额外行程(除非我误解了某些东西)。因此,我们希望始终能够知道哪个节点是给定队列的主节点。
我并没有真正使用过 RabbitMQ,所以也许我只是在文档中遗漏了它,但是如果存在主故障和从属故障,似乎无法确定镜像队列的主 IP被提升为大师。我看到的每个来源都只是评论一个人设置初始主节点的能力,这对我来说不是很有帮助。对于任何时间 t,我如何找到给定队列的主节点 ip?
PS:将节点简单地放在负载均衡器后面似乎也很糟糕,因为如果有一些网络分区(即使节点在同一个 LAN 中也可能发生),那么我们可能会遇到无法访问的节点与队列的主人沟通,或者更糟糕的是,如果你愿意的话,我们可能会进化出大脑分裂。
【问题讨论】:
标签: rabbitmq rabbitmqctl