构建一个sharded cluster需要至少三个组件:
〇 shard: 每一个shard包括了切片数据的子集,也可以被部署为“副本集”
〇 mongos: 作为一个“查询路由”,在客户端和shard cluster之间作为一个中间接口,类似于MySQL的一些中间proxy。
可以通过mongo shell或者mongodb driver直连mongos
〇 config server: 一个存储了sharded cluster的元数据和配置信息的server,同样也可以被部署为“副本集”(mongodb 3.2)
此处用了四台服务器实践,资源分配如下:
config server(186):
mongos(185):
此处先给两个shard节点做副本集,此处将通过端口区分不同实例:
shard1(187):
通过mongo shell进入任意一个实例,此处选择的是27017实例,配置副本集并初始化
以下为mongo shell操作:
可以检查一下副本集状态
再给shard2做三个副本集
shard2(188):
和shard1一样,通过mongo shell进入任意一个实例,此处选择的是27017实例,配置副本集并初始化
最后在mongos(185)的机器上添加shard节点:
进入mongo shell,通过addshard来加入shard节点,多个副本集用逗号分隔:
此处对sano1y库的testtb使用hash策略:
目前为止,已经对sano1y库的testtb集合进行了shard配置。
测试:
稍等片刻,等待插入完毕:
进入shard1(187)的PRIMARY实例检查
另外如果到shard2可以看到shard1这些不连续的id。
可发现shard1和2中的document数量,还是比较均匀的。
shard1: 49983
shard2: 50017
至此,分片集群搭建基本完成。
当然,config server现在存在着单点的问题,同样也可以将config server配置成一组replSet,其本质是mongod服务器。