我们的应用程序仅在单个节点上使用RabbitMQ。它在单个Kubernetes容器中运行。

我们使用持久性/持久性队列,但是每当我们关闭和备份云实例并重新启动RabbitMQ pod时,我们现有的持久性/持久性队列就会消失。

起初,我虽然认为队列的存储量不是持久性是一个问题,但事实并非如此。

队列数据似乎存储在/var/lib/rabbitmq/mnesia/<user@hostname>中。由于Pod的主机名每次都会更改,因此它将为新的主机名创建一组新的数据,并失去对先前持久队列的访问权限。我在mnesia文件夹中建立了许多文件集,所有这些文件都来自以前的重启。

如何防止这种行为?

我可以找到的最接近的答案是this question,但是如果我正确阅读它,则只有在集群中同时有多个节点共享队列数据时,此方法才有效。我不确定它是否适用于单个节点。还是会?

最佳答案



通过使用 StatefulSet (对于Pod具有与其“身份”相关联的持久数据的情况),可以使用The Helm chart。即使您最终没有使用ojit_a,它也是开始阅读的好地方。

关于kubernetes - 使RabbitMQ持久/持久的队列在Kubernetes Pod重新启动后仍然存在,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56709621/

10-16 06:03