分片集群组件
MongoDB分片集群由以下组件组成:
- shard:每个分片包含分片数据的一个子集。从 MongoDB 3.6 开始,分片必须部署为副本集。
- mongos:
mongos
充当查询路由器,提供客户端应用程序和分片集群之间的接口。从 MongoDB 4.4 开始,mongos
可以支持对冲读取以最大限度地减少延迟。 - 配置服务器:配置服务器存储集群的元数据和配置设置。从 MongoDB 3.4 开始,配置服务器必须部署为副本集 (CSRS)。
生产配置
在生产集群中,确保数据冗余并且您的系统具有高可用性。对于生产分片集群部署,请考虑以下事项:
副本集分布
在可能的情况下,考虑在适合作为灾难恢复位置的站点中部署每个副本集的一个节点。
[NOTE]
跨两个数据中心分布副本集成员提供了优于单个数据中心的优势。在两个数据中心分布中,
- 如果其中一个数据中心出现故障,与单个数据中心分布不同,数据仍然可用于读取。
- 如果只有少数成员的数据中心宕机,副本集仍然可以提供写操作和读操作。
- 但是,如果拥有大多数成员的数据中心出现故障,副本集将变为只读。
如果可能,将成员分布在至少三个数据中心。对于配置服务器副本集 (CSRS),最佳做法是分布在三个(或更多,取决于成员数量)中心。如果第三个数据中心的成本过高,一种分配的可能性是在两个数据中心之间平均分配数据承载成员,如果您的公司政策允许,则将剩余的成员存储在云中。
碎片数量
分片需要至少两个分片来分发分片数据。如果您计划在不久的将来启用分片,但在部署时不需要,则单分片分片集群可能很有用。
数量mongos
及分布
部署多个mongos
路由器支持高可用性和可扩展性。对于分片级别的高可用性,一种常见的模式是将实例放置在实例已在其上运行mongos
的相同硬件mongod
上。另一种选择是将mongos
路由器嵌入应用层基础设施。
mongos
部署中可以拥有的路由器数量没有限制。但是,由于mongos
路由器经常与您的配置服务器通信,请在增加路由器数量时密切监控配置服务器的性能。mongos
如果您发现性能下降,限制部署中路由器的数量可能会有所帮助 。
下图显示了生产中使用的常见分片集群架构:
开发配置
对于测试和开发,您可以部署一个具有最少组件数的分片集群。这些非生产集群具有以下组件:
下图显示了仅用于 开发的分片集群架构:
[WARNING]
仅将测试集群架构用于测试和开发。
[TIP]
也可以看看:
部署分片集群 https://docs.mongodb.com/manual/core/sharded-cluster-components/ )。
原文 - https://docs.mongodb.com/manual/core/sharded-cluster-components/
译者:陆文龙