RabbitMQ Cluster不会选择新的master

时间:2016-04-15 07:00:15

标签: docker rabbitmq cluster-computing message-queue

我已经建立了一个包含3个节点的RabbitMQ集群:rabbit1,rabbit2和rabbit3,每个节点都在docker容器中运行。

所有队列都在三个节点之间镜像,rabbit1是主节点。当我停止Rabbit2或rabbit3的容器时,剩下的两个节点工作正常。如果我在队列中有3条消息,那么这些消息仍然存在于rabbit1上,而另一个节点仍然存在。

但是,如果我停止rabbit1,则清空rabbit2和rabbit3的队列,直到我再次启动rabbit1。如果我向rabbit2或rabbit3发送消息,则会收到消息,但不会保存到队列中;而当rabbit1启动并向Rabbit2 / rabbit3发送内容时,消息将被保存并正确同步。

我是否需要考虑任何方式或任何配置,以便在关闭主服务器时不从从服务器清空消息,但是从服务器选择新主服务器或者至少保留消息? 非常感谢你提前。

2 个答案:

答案 0 :(得分:0)

设置群集是一回事,但您还需要配置队列镜像。默认情况下,队列不会在其他节点上复制:您需要使用策略明确indicate which queue(s) must be replicated and how

上面链接的RabbitMQ文档作为几个用例的示例。

答案 1 :(得分:0)

所以我发现了问题:

我在我的代码中声明了队列,即使rabbitmq“计算”这些队列,它们也不会出现在管理下,例如,既不能用“rabbitmqctl list_queues”查看。

如果我通过UI或通过rabbitmqadmin声明队列并让服务连接到现有队列,它可以正常工作。

我不知道,为什么队列没有出现在管理工具中,即使它们显然存在于某处(因为我可以读/推)。