一.mongo安装步骤
架构:共三台机器,node1,node2,node3,mongdb版本为 mongodb-linux-x86_64-enterprise-rhel62-3.4.13.tgz,可以到官网下载:
二.角色分配:
node1:shard01,shard01副本1,副本2,configServer01
node2:shard02,shard02副本1,副本2,configSever02,congfigServer03
node3:mongos
三.在node1上面mongodb shard配置:
[root@node1 data]# ll /etc/mongo*
-rw-r--r-- 1 root root 151 Apr 12 15:11 /etc/mongo1.conf
-rw-r--r-- 1 root root 151 Apr 12 15:11 /etc/mongo2.conf
-rw-r--r-- 1 root root 151 Apr 12 15:13 /etc/mongo3.conf
-rw-r--r-- 1 root root 327 Apr 12 15:40 /etc/mongo_config1.conf
/etc/mongo1.conf配置文件如下
---------------------------------------------------------------------------------------------------------------------
port=47027
dbpath=/data/mongodb1/mongo/
logpath=/data/mongodb1/log/47027.log
fork=true
shardsvr=true
directoryperdb=true
replSet=shard01
journal=true
------------------------------------------------------------------------------------------------------------------------
启动:
/opt/mongodb-linux-x86_64-enterprise-rhel62-3.4.13/bin/mongod -f /etc/mongo1.cnf --fork &
访问:
mongo --port 47027
rs.initiate({_id:"shard01", members: [{_id: 1, host:"node1:47027"},{_id: 2, host:"node1:47028"},{_id: 3, host:"node1:47029","arbiterOnly":true}]}); ========分片初始化
同理在node2上也做同样工作:
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
rs.initiate({_id:"shard02", members: [{_id: 1, host:"node2:47027"},{_id: 2, host:"node2:47028"},{_id: 3, host:"node2:47029","arbiterOnly":true}]}); ========分片初始化
四.configserver配置:
[root@node1 data]# cat /etc/mongo_config1.conf
--------------------------------------------------------------------------------------------------------------------------------------
pidfilepath = /data/mongodb1/configsrv.pid
dbpath = /data/mongodb1/config/data
logpath = /data/mongodb1/config/log/congigsrv.log
logappend = true
bind_ip = 0.0.0.0
port = 47013
fork = true
#declare this is a config db of a cluster;
configsvr = true
#副本集名称
replSet=configs
#设置最大连接数
maxConns=20000
--------------------------------------------------------------------------------------------------------------------------------------
启动configServer:
/opt/mongodb-3.4.13/bin/mongod -f /etc/mongo_config1.conf --fork &
mongo --port 47013 进去添加config集群信息,主要目的是配置你的CFSVR名称,添加三个config信息,配置完成后,会自动显示一主两从,这里的配置是给后面mongos启动指定config使用
rs.initiate({_id : "configs",members : [{_id : 0, host : "node1:47013" },{_id : 1, host : "node2:47014" },{_id : 2, host : "node2:47015" }]}) =======config server初始化
五.mongos的配置:
[root@node3 data]# cat /etc/mongos.conf
----------------------------------------------------------------------------------------------------------
logpath = /data/mongodb/log/27017.log
logappend = true
port = 27017
fork = true
#监听的配置服务器,只能有1个或者3个 configs为配置服务器的副本集名字
configdb = configs/node1:47013,node2:47014,node3:47015
#设置最大连接数
maxConns=20000
--------------------------------------------------------------------------------------------------------------
启动:
/opt/mongodb-linux-x86_64-enterprise-rhel62-3.4.13/bin/mongos -f /usr/mongos.conf
mongo --port 27017 登录添加
在node1上:
sh.addShard("shard01/node1:47027,node1:47028,node1:47029") =======添加分片分别在每台对应机器上做
在node2上:
sh.addShard("shard02/node2:47027,node2:47028,node2:47029")
注意:ADD的时候,ARB也ADD进去,这里不需要特地指定仲裁,因为SHARD已经指定了。
至此mongo分布式集群搭建完毕:
六 后续:
利用JS批量写入数据:
for (var i = 1; i <= 25000; i++) db.test2.insert( { name : i+"mongoDB" } )
sh.enableSharding("testsharding") =============针对库开启分片
sh.shardCollection("testsharding.test2",{_id:'hashed'}) =============分片分键
db.test2.ensureIndex({"_id":1}) ===================建立索引
rs.slaveOk()