单机模拟分片为复制集的集群部署

概述

  • 可使用单个数据服务器作为分片,也可使用复制集作为分片。
  • 复制集为具有自动故障恢复功能的主从集群,并且其主从角色可自动变更。
  • 每个复制集包括3种角色:主节点(Master)、从节点(Secondary)、仲裁节点(arbiter)

 从节点默认不对外提供读服务(因为主从延迟会导致从从节点上读到脏数据)。

复制集不能容忍一半以上发生故障(为了确保不会发生一个复制集中出现多个主节点的情况)。

 

部署图

 

 

部署过程

  • Shard1(为1个复制集)

 Shard1_ReplicaMember1 

mongod --port 30001 --logpath cluster/log/Shard1_ReplicaMember1.log --logappend --shardsvr --replSet Shard1 -dbpath cluster/data/Shard1_ReplicaMember1 --directoryperdb --rest

 

 Shard1_ReplicaMember2 

mongod --port 30002 --logpath cluster/log/Shard1_ReplicaMember2.log --logappend --shardsvr --replSet Shard1 -dbpath cluster/data/Shard1_ReplicaMember2 --directoryperdb --rest

 

 Shard1_ReplicaMember3 

mongod --port 30003 --logpath cluster/log/Shard1_ReplicaMember3.log --logappend --shardsvr --replSet Shard1 -dbpath cluster/data/Shard1_ReplicaMember3 --directoryperdb --rest

 

  • Shard2(为1个复制集)

 

 Shard2_ReplicaMember1 

mongod --port 40001 --logpath cluster/log/Shard2_ReplicaMember1.log --logappend --shardsvr --replSet Shard2 -dbpath cluster/data/Shard2_ReplicaMember1 --directoryperdb --rest

 

 Shard2_ReplicaMember2 

mongod --port 40002 --logpath cluster/log/Shard2_ReplicaMember2.log --logappend --shardsvr --replSet Shard2 -dbpath cluster/data/Shard2_ReplicaMember2 --directoryperdb --rest

 

 Shard2_ReplicaMember3 

mongod --port 40003 --logpath cluster/log/Shard2_ReplicaMember3.log --logappend --shardsvr --replSet Shard2 -dbpath cluster/data/Shard2_ReplicaMember3 --directoryperdb --rest

 

  • ConfigServer

 

ConfigA 

mongod --port 20001 --logpath cluster/log/ConfigA.log --logappend --configsvr -dbpath cluster/config_data/ConfigA

 

ConfigB 

mongod --port 20002 --logpath cluster/log/ConfigB.log --logappend --configsvr -dbpath cluster/config_data/ConfigB

 

  • RouteServer

先启动  

mongos --port 10001 --logpath cluster/log/mongos.log --logappend --configdb 127.0.0.1:20001,127.0.0.1:20002

 

再配置 

mongo 127.0.0.1:27017/admin
db.runCommand({ addshard : "Shard1/127.0.0.1:30001",name:"Shard1"})
db.runCommand({ addshard : "Shard2/127.0.0.1:40001",name:"Shard2"})
db.runCommand({ listshards : 1})
db.runCommand({ enablesharding : "test"})
db.runCommand({ shardcollection : "test.c1",key : {_id: 1} })

 

posted @ 2014-08-18 11:51  beta2013  阅读(223)  评论(0编辑  收藏  举报