MongoDB 分片:mongos 和配置服务器在一起?

MongoDB sharding: mongos and configuration servers together?

我们想要创建一个 MongoDB 分片 (v. 2.4)。官方文档建议有3个配置服务器。

但是,我们公司的政策不允许我们为此目的额外获得 3 台服务器。由于我们已经有 3 个应用程序服务器(1 个 Web 节点,2 个进程节点),我们正在考虑将配置服务器与 mongos 放在相同的应用程序服务器中。可用性对我们来说并不重要。

你觉得这个配置怎么样?我们会遇到一些问题还是因为某些原因而气馁?

鉴于可用性对您的用例而言并不重要,我认为将配置服务器放置在相同的应用程序服务器和 mongos 中应该没问题。

如果其中一个进程节点宕机,您将失去:1 x mongos、1 台应用程序服务器和 1 台配置服务器。在此停机期间,其他两个配置服务器将 只读 ,这意味着不会进行分片平衡、集群配置修改等。尽管您的其他两个 mongos 应该仍然可以运行(明智的 CRUD)。如果您的网络节点已关闭,那么您将面临更大的问题。

如果其中两个节点出现故障(2 个进程节点,或 1 个 Web 服务器和进程节点),同样,您将有更大的问题需要处理。也就是说,您的应用程序可能无论如何都无法运行。

话虽如此,请考虑这些节点能够处理 mongos、应用服务器和配置服务器的能力。即 CPU、RAM、网络连接等

我建议首先在您的典型工作负载和用例下测试 development/staging 集群中的部署架构。

有关详细信息,另请参阅 Sharded Cluster High Availability

最后,我建议查看 MongoDB v3.2,这是当前的稳定版本。 v3.2 中的配置服务器建模为副本集,请参阅 Sharded Cluster config servers 了解更多信息。