- 搭建mongodb集群
用四台机器做集群测试:其中一台机器作为路由三台机器一个副本集合每台机器上两个mongodb,也就是一个分片两个副本集
节点名称 | 角色 | Ip和端口 | 虚拟机名称 |
路由节点 | 路由 | 169.254.19.4:10066 | hadoop |
Set1集合master | master | 169.254.19.5:10001 | hadoop1 |
Set1集合slave | slave | 169.254.19.6:10001 | hadoop2 |
Set1集合arbiter | arbiter | 169.254.19.7:10001 | hadoop3 |
Set2集合master | master | 169.254.19.5:10002 | hadoop1 |
Set2集合slave | slave | 169.254.19.6:10002 | hadoop2 |
Set2集合arbiter | arbiter | 169.254.19.7:10002 | hadoop3 |
路由的config server | config server | 169.254.19.4:10011 | hadoop |
路由的config server | config server | 169.254.19.7:10011 | hadoop3 |
路由的config server | config server | 169.254.19.4:10022 | hadoop |
-
官方网站下载mongodb软件包 http://docs.mongodb.org/manual/
-
上传到linux,并解压mongodb-linux-i686-2.5.4.tgz
-
建立数据文件目录:
169.254.19.4
mkdir -p /usr/soft/mongodb/data/rote
mkdir -p /usr/soft/mongodb/data/config1
mkdir -p /usr/soft/mongodb/data/config3
mkdir -p /usr/soft/mongodb/data/log
169.254.19.5
mkdir -p /usr/soft/mongodb/data/master1
mkdir -p /usr/soft/mongodb/data/master2
mkdir -p /usr/soft/mongodb/data/log
169.254.19.6
mkdir -p /usr/soft/mongodb/data/slave1
mkdir -p /usr/soft/mongodb/data/slave2
mkdir -p /usr/soft/mongodb/data/log
169.254.19.7
mkdir -p /usr/soft/mongodb/data/arbiter1
mkdir -p /usr/soft/mongodb/data/arbiter2
mkdir -p /usr/soft/mongodb/data/config2
mkdir -p /usr/soft/mongodb/data/log
-
创建完数据和目录结构后,可以研究下分片集群的搭建,此分片集群有一个路由节点两个配置节点和两个副本集,每个副本集分主节点、从节点和仲裁节点,主从节点按 priority值的大小来区分最小则为主节点,而仲裁节点的标示为arbiterOnly:true ,一般是从下到上的结构去搭建,所以先启动副本集:
副本集1
主节点:
./mongod --shardsvr --fork -logpath=/usr/soft/mongodb/data/log/log.txt -dbpath=/usr/soft/mongodb/data/master1 -port=10001 --nohttpinterface --replSet set1
从节点:
./mongod --shardsvr --fork -logpath=/usr/soft/mongodb/data/log/log.txt -dbpath=/usr/soft/mongodb/data/slave1 -port=10001 --nohttpinterface --replSet set1
仲裁节点:
./mongod --shardsvr --fork -logpath=/usr/soft/mongodb/data/log/log.txt -dbpath=/usr/soft/mongodb/data/arbiter1 -port=10001 --nohttpinterface --replSet set1
副本集2
主节点:
./mongod --shardsvr --fork -logpath=/usr/soft/mongodb/data/log/log.txt -dbpath=/usr/soft/mongodb/data/master2 -port=10002 --nohttpinterface --replSet set2
从节点:
./mongod --shardsvr --fork -logpath=/usr/soft/mongodb/data/log/log.txt -dbpath=/usr/soft/mongodb/data/slave2 -port=10002 --nohttpinterface --replSet set2
仲裁节点:
./mongod --shardsvr --fork -logpath=/usr/soft/mongodb/data/log/log.txt -dbpath=/usr/soft/mongodb/data/arbiter2 -port=10002 --nohttpinterface --replSet set2
-
分别进入副本集1和副本集2配置:./mongo 169.254.19.5:10001
cfg={_id:"set2",members:[{_id:0,host:'169.254.19.6:10002',priority:2}, {_id:1,host:'169.254.19.5:10002',priority:1},{_id:2,host:'169.254.19.7:10002',arbiterOnly:true}]};
cfg={_id:"set1",members:[{_id:0,host:'169.254.19.6:10001',priority:2}, {_id:1,host:'169.254.19.5:10001',priority:1},{_id:2,host:'169.254.19.7:10001',arbiterOnly:true}]};
可用rs.status(); 查看集群配置状态:
副本2的配置和副本1基本一样,就是改变下端口
-
启动配置节点:
169.254.19.4
./mongod --configsvr --fork -logpath=/usr/soft/mongodb/data/log/logcfg1.txt -dbpath=/usr/soft/mongodb/data/config1 -port=10011 –nohttpinterface
169.254.19.7
./mongod --configsvr --fork -logpath=/usr/soft/mongodb/data/log/logcfg2.txt -dbpath=/usr/soft/mongodb/data/config2 -port=10011 –nohttpinterface
./mongod --configsvr --fork -logpath=/usr/soft/mongodb/data/log/logcfg3.txt -dbpath=/usr/soft/mongodb/data/config3 -port=10022 –nohttpinterface
启动路由节点:
./mongos --configdb 169.254.19.4:10011,169.254.19.7:10011,169.254.19.4:10022 --port 10066 --fork --logpath=/usr/soft/mongodb/data/log/logRote.txt
注意:这里需要一个或者三个configdb,基数个configdb,类似于zookeeper,用于投票
-
配置 Sharding
从路由节点进去配置:
./mongo 169.254.19.4:10066
db.runCommand({addshard:'set1/169.254.19.5:10001,169.254.19.6:10001,169.254.19.7:10001'})
db.runCommand({addshard:'set2/169.254.19.5:10002,169.254.19.6:10002,169.254.19.7:10002'})
-
通过命令来查看集群的状态:
db.runCommand({listshards:1})
printShardingStatus();