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