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

Pab*_*lla 4 sharding mongodb

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

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

你觉得这个配置怎么样?我们可以面对一些问题还是因为某种原因而气馁?

Ste*_*nie 5

不幸的是,术语“服务器”在这种情况下被过度使用:它可能指的是配置服务器守护进程或物理/虚拟服务器。

对于运行 MongoDB 2.4 的生产分片集群,您绝对应该拥有三个配置服务器进程(即mongod --configsvr)。没有严格要求单独托管这些进程,因此您可以mongod在现有服务器环境中并置配置服务器进程以节省托管成本。

配置服务器在存储和 CPU/内存使用方面通常相当轻量级,因为分片集群的元数据明显小于实际集群数据。如果您确实选择并置配置服务器,mongos它将是一个比承载数据的分片mongod服务器更好的邻居。

托管分片集群组件时的一些关键考虑因素包括:

  • 弹性:单个服务器/实例故障现在可能导致多个组件不可用。

  • 资源使用:多个组件将竞争相同的资源(RAM、CPU、I/O 等)。

  • 未来扩展:您应该为配置服务器使用CNAME,以允许它们将来可能被移动到单独的主机而不会停机。

您还会发现mongos --configdb字符串中列出的第一个配置服务器将比其他两个配置服务器接收更大百分比的网络流量。这可能会影响您将第一个配置服务器与您的 web 节点还是处理节点并置;您可能想要选择当前有更多可用网络带宽的那个。