在容器化集群中,mongodb 服务器应该在 worker 还是核心服务上 运行?

In a containerized cluster, should mongodb servers be running on a worker or a core service?

我正在尝试实现类似于 coreos 生产架构(如下所示)的架构

我应该 运行 数据库作为中央服务还是一个或多个工作人员?

我认为数据库需要某种复制,这让我觉得将它放在工作集群中更有意义,但我不确定。

作为工人,这应该是运行。中央服务是CoreOS自带的基本东西(主要是etcd)。工作人员托管您的应用程序,数据库就是其中之一。您确实遇到了持久性问题,因为您的数据库将在重新启动之间记住状态。那么,有一个更大的问题,你如何坚持下去?一种方法是使用主机文件并为数据库提供与该主机的亲和力并挂载主机文件。您可能考虑的另一件事是 运行 连接多个数据库(如果您的数据库技术支持)并复制该数据库,以便您在 不同的 工作人员中拥有两个(或更多)副本. (非亲和力)。如果您的数据库创建了可应用于备份的事务日志,您可以在 worker 中管理这些事务日志。

另一件需要考虑的事情是不要为你的数据库使用容器。数据库是一种奇怪的动物,它的照顾和喂养与其他应用程序不同。因此(在我看来)在集群范围之外管理和维护数据库是合理的(但集群仍然可以访问)。