分片集群组成部分
MongoDB 分片集群由以下组件构成:
mongos:
mongos
充当查询路由器,在客户端应用程序和分片集群之间提供接口。mongos
可支持对冲读,从而最大限度地降低延迟。配置服务器:配置服务器会存储集群的元数据和配置设置。配置服务器必须部署为副本集 (CSRS)。
生产配置
在生产集群中,确保数据是冗余的,并且系统具有高可用性。对于生产分片集群部署,请考虑以下事项:
副本集分布
如有可能,请考虑将每个副本集的一个成员部署在适合作为灾难恢复位置的站点中。
注意
将副本集成员分布在两个数据中心比分布在一个数据中心更有优势。分布在两个数据中心时,
如果其中一个数据中心发生故障,数据仍可供读取,分布在单个数据中心则无法实现此功能。
如果具有少数成员的数据中心出现故障,副本集仍然可以支持写入操作和读取操作。
但是,如果具有大多数成员的数据中心出现故障,副本集将变为只读。
如有可能,请将成员分布在至少三个数据中心。对于配置服务器副本集 (CSRS),最佳实践是分布在三个数据中心(也可根据成员数量来增加数据中心数量)。如果使用第三个数据中心成本过高,一种可行的分布方法是在两个数据中心均匀分配数据承载成员,并将剩余成员存储在云中(如果公司政策允许)。
分片数量
分片需要至少两个分片来分发分片数据。如果计划日后启用分片,但在部署时又不需要启用,那么单个分片的分片集群可能会很有用。
mongos
的数量和分布
部署多个mongos
路由器支持高可用性和可扩展性。 如果代理或负载均衡器位于应用程序和mongos
路由器之间,则必须为其配置客户端关联性。 客户端关联性允许来自单个客户端的每个连接到达同一mongos
。 对于分片级高可用性,一种常见模式是将mongos
实例放置在已运行mongod
实例的同一硬件上。 另一种选择是将mongos
路由器嵌入应用程序层级基础架构。
部署中可以拥有的mongos
路由器数量没有限制。 但是,由于mongos
路由器与配置服务器频繁通信,因此在增加路由器数量时应密切监控配置服务器的性能。 如果您发现性能下降,限制部署中mongos
路由器的数量可能会有好处。
下图展示了生产中使用的常见分片集群架构:
开发配置
为了进行测试和开发,您可以部署具有最少数量组件的分片集群。这些非生产集群具有以下组件:
下图展示了仅用于开发目的的分片集群架构:
警告
仅将测试集群架构用于测试和开发。