Mongodb集群的搭建与配置

1、环境介绍

(1)环境要求:三台Linux服务器:

  192.168.100.1 mongodb1

  192.168.100.2 mongodb2

  192.168.100.3 mongodb3

(2)软件需求:mongodb-linux-x86_64-2.4.5.tgz

2、原理简介

 

(1)架构由三部分进程组成:两组mongod进程(shardconfig server)和一组mongos进程

(2)shard可以理解为每一个数据分片,也就是一个大数据量中的一部分分片数据(类似于Hadoop中的datanode,但不局限在一台机器中)。为了提高高可用性,一般在生产系统中每个shard分片都是一个replica set,也就是提供了主从复制的功能,防止主机单点故障,同时一般有第三个节点作为仲裁。

(3)config server是配置服务,主要保存各个shard的元数据信息(类似于Hadoop中的namenode)。为了实现高可用,config server一般也要配置多个,每个config server的数据完全一致。

(4)客户端和mongos进程进行交互,mongos先询问config server获取数据存放的地方,再去shard中获取或插入数据。它使得客户端以为是和一个单一简单的系统在打交道。

 

 

3、环境搭建

(1)环境总体概况

主机

IP

服务及端口

mongodb1

192.168.100.1

mongod shard11:27017

mongod shard12:27018

mongod config1:20000

mongs1:30000

mongodb2

192.168.100.2

mongod shard12:27017
mongod shard22:27018
mongod config2:20000
mongs2:30000

mongodb3

192.168.100.3

mongod shard13:27017
mongod shard23:27018
mongod config3:20000
mongs3:30000

 

(2)创建文件夹

192.168.100.1

mkdir -p /data/db/shard11  

mkdir -p /data/db/shard21  

mkdir -p /data/db/config

192.168.100.2

mkdir -p /data/db/shard12  

mkdir -p /data/db/shard22  

mkdir -p /data/db/config

192.168.100.3

mkdir -p /data/db/shard13  

mkdir -p /data/db/shard23  

mkdir -p /data/db/config

 

(3)在三台机器上分别启动mongod进程

192.168.100.1

./mongod --shardsvr --replSet shard1 --port 27017 --dbpath /data/db/shard11/ --oplogSize 100 --logpath /data/db/shard11.log --logappend --fork --rest

./mongod --shardsvr --replSet shard2 --port 27018 --dbpath /data/db/shard21/ --oplogSize 100 --logpath /data/db/shard21.log --logappend --fork --rest

 

192.168.100.2

./mongod --shardsvr --replSet shard1 --port 27017 --dbpath /data/db/shard12/ --oplogSize 100 --logpath /data/db/shard12.log --logappend --fork --rest

./mongod --shardsvr --replSet shard2 --port 27018 --dbpath /data/db/shard22/ --oplogSize 100 --logpath /data/db/shard22.log --logappend --fork --rest

 

192.168.100.3

./mongod --shardsvr --replSet shard1 --port 27017 --dbpath /data/db/shard13/ --oplogSize 100 --logpath /data/db/shard13.log --logappend --fork --rest

./mongod --shardsvr --replSet shard2 --port 27018 --dbpath /data/db/shard23/ --oplogSize 100 --logpath /data/db/shard23.log --logappend --fork --rest

 

(4)初始化两组Replica Set

登录192.168.100.327017

./mongo 192.168.100.3:27017

config = {_id: 'shard1', members: [{_id: 0, host: '10.8.3.249:27017'}, {_id: 1, host: '10.8.3.238:27017'}, {_id: 2, host: '10.8.3.251:27017',arbiterOnly:true}]};

rs.initiate(config);

登录192.168.100.327018

./mongo 192.168.100.3:27018

config = {_id: 'shard2', members: [{_id: 0, host: '10.8.3.249:27018'}, {_id: 1, host: '10.8.3.238:27018'}, {_id: 2, host: '10.8.3.251:27018',arbiterOnly:true}]};

rs.initiate(config);

 

(5)启动Config Server

在三台机器上启动:

./mongod --configsvr --dbpath /data/db/config/ --port 20000 --logpath /data/db/config.log --logappend --fork

 

(6)启动Routing Server

在三台机器上启动:

./mongos --configdb 10.8.3.249:20000,10.8.3.238:20000,10.8.3.251:20000 --port 30000 --chunkSize 100 --logpath /data/db/mongos.log --logappend --fork

 

(7)添加分片

连接到mongs服务器,并切换到admin

./mongo 192.168.100.3:30000/admin 

db.runCommand({addshard:"shard1/192.168.100.1:27017,192.168.100.2:27017,192.168.100.3:27017",name:"shard1",maxsize:2048, allowLocal:true }); 

db.runCommand({addshard:"shard2/192.168.100.1:27017,192.168.100.2:27017,192.168.100.3:27017",name:"shard2",maxsize:2048, allowLocal:true }); 

db.runCommand( { listshards : 1 } );

posted @ 2013-09-16 15:18  王彦鸿  Views(468)  Comments(0)    收藏  举报