分片集群组件

在本页面

MongoDB sharded cluster由以下组件组成:

  • shard:每个分片都包含分片数据的子集。从 MongoDB 3.6 开始,分片必须部署为replica set

  • mongosmongos充当查询 Router,在 Client 端应用程序和分片群集之间提供接口。

  • config servers:配置服务器存储集群的元数据和配置设置。从 MongoDB 3.4 开始,配置服务器必须部署为副本集(CSRS)。

Production Configuration

在生产集群中,请确保数据是冗余的,并且您的系统具有高可用性。对于生产分片群集部署,请考虑以下事项:

副本集分发

如果可能,请考虑在适合于成为灾难恢复位置的站点中部署每个副本集的一个成员。

Note

在两个数据中心之间分布副本集成员可提供优于单个数据中心的好处。在两个数据中心分布中,

  • 如果其中一个数据中心发生故障,则与单个数据中心分发不同,该数据仍可读取。

  • 如果具有少数成员的数据中心发生故障,则副本集仍然可以同时执行写操作和读操作。

  • 但是,如果具有大多数成员的数据中心发生故障,则副本集将变为只读。

如果可能,请在至少三个数据中心中分配成员。对于配置服务器副本集(CSRS),最佳实践是分布在三个(或更多,取决于成员的数量)中心中。如果第三个数据中心的成本过高,则一种分配可能性是在公司 Policy 允许的情况下,在两个数据中心之间平均分配数据承载成员,并将其余成员存储在云中。

分片数

分片至少需要两个分片才能分发分片的数据。如果您计划在不久的将来启用分片,但是在部署时不需要,则单个分片集群可能会很有用。

mongos 的数量和分布

部署多个mongosRouter 支持高可用性和可伸缩性。一种常见的模式是在每个应用程序服务器上放置mongos。在每台应用程序服务器上部署一个mongosRouter 可以减少应用程序和 Router 之间的网络延迟。

或者,您可以在专用主机上放置mongosRouter。大型部署可从此方法中受益,因为它使 Client 端应用程序服务器的数量与mongos实例的数量脱钩。这样可以更好地控制mongod实例服务的连接数。

在自己的主机上安装mongos实例可以使这些实例使用更多的内存。内存不会与mongod实例共享。可以使用主碎片来承载mongosRouter,但请注意,在大型部署中,内存争用可能成为问题。

部署中可以拥有的mongos个 Router 没有数量限制。但是,由于mongosRouter 经常与您的配置服务器通信,因此请在增加 Router 数量时密切监视配置服务器的性能。如果发现性能下降,最好限制部署中的mongosRouter 的数量。

用于生产目的的示例分片集群图。恰好包含 3 个配置服务器,2 个或更多“ mongos”查询 Router 以及至少 2 个分片。碎片是副本集。

Development Configuration

为了进行测试和开发,可以部署具有最少组件数量的分片群集。这些“非生产**”集群具有以下组成部分:

samples 分片集群图仅用于测试/开发目的。仅包含 1 个配置服务器,1 个``mongos''Router 和至少 1 个分片。分片可以是副本集,也可以是独立的 mongod 实例。

Warning

将测试群集体系结构仅用于测试和开发。