Docs 菜单

Docs 主页开发应用程序MongoDB Manual

分片集群组成部分

在此页面上

  • 生产配置
  • 开发配置

MongoDB 分片集群由以下组件构成:

  • 分片:每个分片都包含分片数据的一个子集。每个分片都必须作为一个副本集进行部署。

  • mongos mongos充当查询路由器,在客户端应用程序和分片集群之间提供接口。 mongos可以支持对冲读,以最大限度地减少延迟。

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

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

  • 将配置服务器部署为 3 节点副本集

  • 将每个分片部署为 3 成员副本集

  • 部署一个或多个 mongos 路由器

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

注意

将副本集成员分布在两个数据中心比分布在一个数据中心更有优势。分布在两个数据中心时,

  • 如果其中一个数据中心发生故障,数据仍可供读取,分布在单个数据中心则无法实现此功能。

  • 如果具有少数成员的数据中心出现故障,副本集仍然可以支持写入操作和读取操作。

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

如有可能,请将成员分布在至少三个数据中心。对于配置服务器副本集 (CSRS),最佳实践是分布在三个数据中心(也可根据成员数量来增加数据中心数量)。如果使用第三个数据中心成本过高,一种可行的分布方法是在两个数据中心均匀分配数据承载成员,并将剩余成员存储在云中(如果公司政策允许)。

分片需要至少两个分片来分发分片数据。如果计划日后启用分片,但在部署时又不需要启用,那么单个分片的分片集群可能会很有用。

mongos 路由器在部署多个 mongos 实例时支持高可用性和可扩展性。如果代理或负载均衡器位于应用程序和 mongos 路由器之间,则必须为其配置客户端关联性。客户端关联性允许来自一个客户端的每个连接到达同一 mongos。要实现分片级别的高可用性,可以:

  • 在已运行 mongos 实例的同一硬件上添加 mongos 实例。

  • 在应用程序级嵌入 mongos 路由器。

mongos 路由器会与配置服务器频繁通信。随着路由器数量的增加,性能可能会下降。如果性能下降,请减少路由器的数量。最多部署 30 个 mongos 路由器。

下图展示了生产中使用的常见分片集群架构:

示意图显示了包含多个分片和 mongos 路由器的生产级分片集群。

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

下图展示了仅用于开发目的的分片集群架构:

示意图显示了包含单个分片和 mongos 路由器的开发级分片集合。

警告

仅将测试集群架构用于测试和开发。

提示

另请参阅:

← 分片
分片 →