mongodb Replica Sets +Sharding高可用集群搭建

集群由三台服务器(假定ip地址为:serverA,serverB,serverC)组成,采用mongodb的复制集+分片(Replica Sets+Sharding) 实现集群的高可靠/高可用以及数据读写的负载均衡。 三台机器分成两个复制集,两个复制集组成一个集群的两个分片(shard1和shard2)。具体如下:

  1.   ServerA的s1-1 / ServerB的s1-2 / ServerC的s1-3 组成一个3节点的复制集s1
  2.   ServerA的s2-1 / ServerB的s2-2 / ServerC的s2-3 组成一个3节点的复制集s2
  3.   复制集s1和s2 组成有两个片的分片集群
  4.   为确保配置信息高可用,集群采用3个配置节点存储集群配置信息: ServerA的c1 / ServerB的c2 / ServerC的c3
  5.   为对外服务提供高可用,集群采用3个路由节点对外提供服务:ServerA的mongos 1 / ServerB的mongos 2/ ServerC的mongos 3,也可以结合keepalive对外提供一个vip.

 

mongodb集群逻辑结构:

 

 

 

 

每台机器运行4个服务进程(2+1+1),端口和目录规划:



 

 

 

 

 

  在windows下对集群配置的具体步骤:

 

  •   1、启动Shard1进程并配置Replica Set到复制集 setA :

 

在serverA上启动mongod shard11进程,副本集名称:setA:

 

mongod--dbpath=F:\mongodb_Replica-Sets_Sharding\ServerA\mongod-S1-1\data\db   --logpath=F:\mongodb_Replica-Sets_Sharding\ServerA\mongod-S1-1\data\log\MongoDB.log 
--port 10000    --shardsvr --replSet setA --rest  --oplogSize 64
 

 

 

  在serverB上上启动mongod shard12进程,副本集名称:setA:

 

mongod--dbpath=F:\mongodb_Replica-Sets_Sharding\ServerB\mongod-S1-2\data\db --logpath=F:\mongodb_Replica-Sets_Sharding\ServerB\mongod-S1-2\data\log\MongoDB.log 
--port 10001 --shardsvr --replSet setA --rest  --oplogSize 64
 

 

 

在serverC上上启动mongod shard13进程,副本集名称:setA:

 

mongod--dbpath=F:\mongodb_Replica-Sets_Sharding\ServerC\mongod-S1-3\data\db --logpath=F:\mongodb_Replica-Sets_Sharding\ServerC\mongod-S1-3\data\log\MongoDB.log 
--port 10002 --shardsvr --replSet setA --rest  --oplogSize 64
 

    

 

初始化分片集 

连接三个节点的任一个初始化复制集setA 

 

use admin 

config={_id:'setA',members:[{_id:0,host:'192.168.0.19:10000'},{_id:1,host:'192.168.0.19:10001'},{_id:2,host:'192.168.0.19:10002'}]}

rs.initiate(config)   

  

  • 2、 配置shard2用到复制集 s2:

 

  在serverA上启动mongod shard21进程,副本集名称:setB:

 

mongod --dbpath=F:\mongodb_Replica-Sets_Sharding\ServerA\mongod-S2-1\data\db --logpath=F:\mongodb_Replica-Sets_Sharding\ServerA\mongod-S2-1\data\log\MongoDB.log 
--port 20000 --shardsvr --replSet setB --rest  --oplogSize 64
 

 

 

  在serverB上启动mongod shard22进程,副本集名称:setB:

 

mongod --dbpath=F:\mongodb_Replica-Sets_Sharding\ServerB\mongod-S2-2\data\db --logpath=F:\mongodb_Replica-Sets_Sharding\ServerB\mongod-S2-2\data\log\MongoDB.log 
--port 20001 --shardsvr --replSet setB --rest  --oplogSize 64
 

 

 


  在serverC上启动mongod shard23进程,副本集名称:setB:

 

mongod --dbpath=F:\mongodb_Replica-Sets_Sharding\ServerC\mongod-S2-3\data\db --logpath=F:\mongodb_Replica-Sets_Sharding\ServerC\mongod-S2-3\data\log\MongoDB.log 
--port 20002 --shardsvr --replSet setB --rest  --oplogSize 64
 

 

 

初始化分片集 

连接三个节点的任一个初始化复制集setB 

 

 

use admin 
config={_id:'setB',members:[{_id:0,host:'192.168.0.19:20000'},{_id:1,host:'192.168.0.19:20001'},{_id:2,host:'192.168.0.19:20002'}]}
 
rs.initiate(config);
 

 

 

  • 3、配置三台Config Server:

 

在serverA上:

mongod--configsvr--logpath F:\mongodb_Replica-Sets_Sharding\ServerA\mongod-C1\data\log\MongoDB.log --logappend --dbpath F:\mongodb_Replica-Sets_Sharding\ServerA\mongod-C1\data\db 
--port 40000 --shardsvr

 



 

在serverB上:

mongod--configsvr--logpath F:\mongodb_Replica-Sets_Sharding\ServerB\mongod-C2\data\log\MongoDB.log --logappend --dbpath F:\mongodb_Replica-Sets_Sharding\ServerB\mongod-C2\data\db 
--port 40001 --shardsvr

 

 

 

在serverC上:

mongod--configsvr--logpath F:\mongodb_Replica-Sets_Sharding\ServerC\mongod-C3\data\log\MongoDB.log --logappend --dbpath F:\mongodb_Replica-Sets_Sharding\ServerC\mongod-C3\data\db 
--port 40002 --shardsvr

 

 

 

  • 4、配置三台Route Server:

 

在serverA上:

mongos -configdb 192.168.0.19:40000,192.168.0.19:40001,192.168.0.19:40002 --logpath F:\mongodb_Replica-Sets_Sharding\ServerA\mongod-1\data\log\MongoDB.log --logappend --port 50000

 

 

 

 

在serverB上:

mongos -configdb 192.168.0.19:40000,192.168.0.19:40001,192.168.0.19:40002 --logpath F:\mongodb_Replica-Sets_Sharding\ServerB\mongod-2\data\log\MongoDB.log --logappend --port 50001

 

 

 

在serverC上:

mongos -configdb 192.168.0.19:40000,192.168.0.19:40001,192.168.0.19:40002 --logpath F:\mongodb_Replica-Sets_Sharding\ServerC\mongod-3\data\log\MongoDB.log --logappend --port 50002

 

 

 

  • 5、配置Shard Cluster:

  连接任一mongos进程执行以下命令:

 

  use admin
db.runCommand({addshard:"setA/192.168.0.19:10000,192.168.0.19:10001,192.168.0.19:10003",name:"ShardSetA"})
db.runCommand({addshard:"setB/192.168.0.19:20000,192.168.0.19:20001,192.168.0.19:20002",name:"ShardSetB"})

 

 

  • 6、激活数据库及集合的分片功能:

  连接任一mongos进程执行以下命令:

 

  

db.runCommand({enablesharding:"testdb"})
 
db.runCommand({shardcollection:"testdb.abc",key:{_id:1}})

 



 

 

 

猜你喜欢

转载自star45.iteye.com/blog/2039957