我们要创build一个MongoDB分片(2.4版)。 官方文档build议有3个configuration服务器。
但是,我们公司的政策不允许我们为此增加3台额外的服务器。 由于我们已经有3个应用程序服务器(1个Web节点,2个进程节点),所以我们考虑把configuration服务器放在与mongos相同的应用程序服务器中。 可用性对我们来说并不重要。
你怎么看这个configuration? 我们是否可以面对一些问题,或因为某种原因而感到气馁?
不幸的是,在这种情况下,“服务器”这个术语是重载的:它可能指的是configuration服务器守护进程或物理/虚拟服务器。
对于运行MongoDB 2.4的生产分片集群,你应该有三个configuration服务器进程(即mongod --configsvr )。 这些进程没有严格的要求分开托pipe,因此您可以在现有的服务器环境中共享configuration服务器mongod进程,以节省托pipe成本。
configuration服务器在存储和CPU /内存使用方面通常比较轻量级,因为分片群集的元数据比实际的群集数据要小得多。 如果你selectconfiguration服务器, mongos会比数据承载的mongod服务器好得多。
在分散分片群集组件时需要考虑的一些关键因素包括:
弹性:单个服务器/实例故障现在可能导致多个组件不可用。
资源使用情况:多个组件将竞争相同的资源(RAM,CPU,I / O,…)。
未来的扩展:您应该使用configuration服务器的CNAME来允许它们在将来可能被移动到不同的主机,而无需停机。
你也会发现你的mongos --configdbstring中列出的第一个configuration服务器将会比另外两个configuration服务器接收更大的networkingstream量。 这可能会影响您是否与Web节点或处理节点共存第一个configuration服务器; 你可能想要select当前有更多可用networking带宽。