用于生产的独立 MongoDB 安装

Standalone MongoDB installation for Production

我想部署MongoDB到2个节点的Kubernetes集群,以后没有机会再添加节点了。

我想将 MongoDB 部署为独立的,因为两个节点都可以通过 NFS 访问同一磁盘 space,而且我没有复制或高可用性的要求。但是,在MongoDB文档中明确指出单机部署不适合生产环境。

MongoDB Deploy Standalone

You can deploy a standalone MongoDB instance for Cloud Manager to manage. Use standalone instances for testing and development. Do not use these deployments for production systems as they lack replication and high availability.

我可以面对什么样的弊端?我应该部署为带有仲裁实例的副本集吗?如果是,为什么?

当然,您可以部署独立 MongoDB 用于生产。但是如果这个节点失败了,那么你的应用程序就不再可用了。如果您对可用性没有任何要求,请选择独立 MongoDB.

但是,运行 2 MongoDB 访问同一物理磁盘(即 dbPath)的服务将无法工作。每个 MongoDB 个实例需要有一个专用的数据文件夹。

对于你的情况,我建议 Replica Set。来自一个节点的所有数据将被复制到另一个节点。如果一个节点出现故障,则应用程序将进入“read/only”模式。

您可以在主节点上部署一个仲裁器实例。如果辅助节点出现故障,则该应用程序仍然完全可用。

始终建议部署为 replicaSet 用于生产,但是如果您部署为独立的并且您有 2 个 kubernetes 节点,kubernetes 可以确保始终有 1 个 运行 实例附加到 NFS 存储中的任何可用节点,但风险是当存储上的数据损坏时,您将无法从何处进行复制,除非您经常备份并且您不在乎是否遗漏了一些最近插入的数据...