使 RabbitMQ 持久/持久队列在 Kubernetes Pod 重启后仍能存活

Joe*_*jr2 7 persistence persistent-storage rabbitmq kubernetes

我们的应用程序使用只有一个节点的 RabbitMQ。它在单个 Kubernetes Pod 中运行。

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

起初,我认为这是存储队列的卷不持久的问题,但事实并非如此。

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

我怎样才能防止这种行为?

我能找到的最接近的答案是在这个问题中,但是如果我正确地阅读它,那么只有当集群中同时有多个节点共享队列数据时,这才有效。我不确定它是否适用于单个节点。或者会吗?

mda*_*iel 0

我怎样才能防止这种行为?

使用StatefulSetas 是针对 Pod 具有与其“身份”相关的持久数据的情况。Helm 图表是开始阅读的好地方,即使您最终没有使用它。