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进程(shard和config 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 |
|
mongodb3 |
192.168.100.3 |
mongod shard13:27017 |
(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.3:27017
./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.3:27018
./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 } );

浙公网安备 33010602011771号