配置MongoDB的集群
分片(Shard)
主机头
为了方面我们给每个分片节点服务器都设置一个主机头
在这里我们准备了三台服务器
IP分别是 10.16.1.105、10.16.1.106、10.16.1.107
对应主机头是 shard1、shard2、shard3
目录
在每个分片节点服务器上执行如下操作
mkdir -p /tongfu.net/env/mongodb/mongos/log mkdir -p /tongfu.net/env/mongodb/config/data mkdir -p /tongfu.net/env/mongodb/config/log mkdir -p /tongfu.net/env/mongodb/shard/data mkdir -p /tongfu.net/env/mongodb/shard/log
配置文件
在每个分片节点服务器上执行如下操作
[root@tongfunet]# cat > /tongfu.net/env/mongodb/conf/shard.conf <<EOF #相关路径 pidfilepath = /tongfu.net/env/mongodb/shard/log/shard.pid dbpath = /tongfu.net/env/mongodb/shard/data logpath = /tongfu.net/env/mongodb/shard/log/shard.log logappend = true # IP,端口 bind_ip = 0.0.0.0 port = 27017 fork = true #副本集名称 replSet=shards #作为分片节点服务器 shardsvr = true #设置最大连接数 maxConns=20000 EOF
启动
在每个分片节点服务器上启动mongodb分片节点实例
/tongfu.net/env/mongodb/bin/mongod -f /tongfu.net/env/mongodb/conf/shard.conf
初始化
在任意一个分片节点服务器上初始化,不是每个分片节点服务器都操作
进入mongodb控制台
/tongfu.net/env/mongodb/bin/mongo
执行初始化命令
在哪个分片节点上操作就去掉哪个分片节点的 rs.add 操作这一步,这里我们是在 shard1 上操作的,所以没有 shard1 的 rs.add 操作
rs.initiate() rs.add("shard2") rs.add("shard3")
配置服务器(Config Server)
配置文件
在每个分片节点服务器执行如下操作
[root@tongfunet]# cat > /tongfu.net/env/mongodb/conf/config.conf <<EOF #相关路径 pidfilepath = /tongfu.net/env/mongodb/config/log/configsrv.pid dbpath = /tongfu.net/env/mongodb/config/data logpath = /tongfu.net/env/mongodb/config/log/configsrv.log logappend = true # IP,端口 bind_ip = 0.0.0.0 port = 21000 fork = true #作为分片配置服务器 configsvr = true #副本集名称 replSet=configs #设置最大连接数 maxConns=20000
启动
在每个分片节点服务器启动分片配置实例
/tongfu.net/env/mongodb/bin/mongod -f /tongfu.net/env/mongodb/conf/config.conf
初始化
在任意一个分片配置服务器上初始化,不是每个分片配置服务器都操作
进入mongodb控制台
/tongfu.net/env/mongodb/bin/mongo --port 21000
执行初始化命令
在哪个分片节点上操作就去掉哪个分片节点的 rs.add 操作这一步,这里我们是在 shard1 上操作的,所以没有 shard1 的 rs.add 操作
rs.initiate() rs.add("shard2:21000") rs.add("shard3:21000")
路由(Router)
配置文件
路由可以建立在分片服务器上,也可以在单独的服务器上建立
路由的个数和分片的个数可以不一样,路由个数可以多于分片个数,也可以少于分片个数
路由的关键是要通过configdb指定分片服务器的config地址和端口
cat > /tongfu.net/env/mongodb/conf/mongos.conf <<EOF #相关路径 pidfilepath = /tongfu.net/env/mongodb/mongos/log/mongos.pid logpath = /tongfu.net/env/mongodb/mongos/log/mongos.log logappend = true # IP,端口 bind_ip = 0.0.0.0 port = 20000 fork = true #监听的配置服务器,只能有1个或者3个 configs为配置服务器的副本集名字 configdb = configs/shard1:21000,shard2:21000,shard3:21000 #设置最大连接数 maxConns=20000
启动
/tongfu.net/env/mongodb/bin/mongos -f /tongfu.net/env/mongodb/conf/mongos.conf
启动集群
配置
通过前面的步骤以及搭建好了一个基本的MongoDB集群
我们通过路由登录mongodb控制台
/tongfu.net/env/mongodb/bin/mongo --port 20000
我们进行分片节点的绑定操作
sh.addShard("shards/shard1,shard2,shard3"); sh.status();
维护集群
启动
启动集群的顺序是,先启动config server,再启动shard,最后启动router
停止
停止集群的顺序是,先停止router,再停止config server,最后停止shard
总结
关系
建立集群有这么个元素:分片(Shard),配置服务器(Config Server),路由(Router)
建立集群有这么几件事:初始化目录,配置文件,启动进程,初始化数据
顺序
归纳起来就是这样一个顺序:
在每个分片节点服务器,初始化目录
在每个分片节点服务器,建立分片节点的配置文件(Shard)
在每个分片节点服务器,启动分片节点实例
在每个分片节点服务器,建立分片配置的配置文件(Config Server)
在每个分片节点服务器,启动分片配置实例
在路由服务器,建立路由的配置文件(Router)
在路由服务器,启动路由实例
在任意分片节点服务器初始化,添加每个分片节点
在任意分片配置服务器初始化,添加每个分片配置
在路由服务器初始化,添加分片