我们要创建一个 MongoDB 分片 (v. 2.4)。官方文档建议有 3 个配置服务器。
但是,我们公司的政策不允许我们为此额外购买 3 台服务器。由于我们已经有 3 台应用服务器(1 个 Web 节点、2 个进程节点),因此我们正考虑将配置服务器与 mongos 放在同一个应用服务器中。可用性对我们来说并不重要。
您觉得这个配置怎么样?我们会遇到一些问题吗?或者出于某些原因我们不建议这么做?
答案1
不幸的是,“服务器”一词在这种情况下被过度使用了:它可能指配置服务器守护进程或物理/虚拟服务器。
对于运行 MongoDB 2.4 的生产分片集群,您肯定应该有三个配置服务器进程(即mongod --configsvr
)。没有严格要求这些进程单独托管,因此您可以将配置服务器mongod
进程放在现有服务器环境中以节省托管成本。
配置服务器在存储和 CPU/内存使用方面通常相当轻量,因为分片集群的元数据比实际集群数据小得多。如果您确实选择将配置服务器放在一起,那么它将是mongos
一个比承载数据的分片服务器更好的邻居mongod
。
共置分片集群组件时的一些关键注意事项包括:
弹性:单个服务器/实例故障现在可能导致多个组件不可用。
资源使用:多个组件将竞争相同的资源(RAM、CPU、I/O 等)。
未来扩展:您应该使用CNAME允许配置服务器将来有可能移动到单独的主机而无需停机。
您还会发现,mongos
--configdb
字符串中列出的第一个配置服务器接收的网络流量百分比将大于其他两个配置服务器。这可能会影响您是否将第一个配置服务器与 Web 节点或处理节点放在一起;您可能希望选择当前可用网络带宽更多的服务器。