生产环境MongoDB 分片与集群 方案

生产环境MongoDB 分片与集群 方案

一、 mongodb分片与集群拓扑图

生产环境MongoDB 分片与集群 方案

二、分片与集群的部署

1.Mongodb的安装

分别在以上3台服务器安装好mongodb

安装方法见安装脚本。

2.Mongod 创建单个分片的副本集

10.68.4.209

①建立数据文件夹和日志文件夹

mdkir /data/{master,slave,arbiter}

mkdir /data/log/mongodb/{master,slave,arbiter}  -p

②建立配置文件

#master.conf

dbpath=/data/master

logpath=/data/log/mongodb/master/mongodb.log

pidfilepath=/var/run/mongo_master.pid

#directoryperdb=true

logappend=true

replSet=policydb

port=10002

oplogSize=10000

fork=true

noprealloc=true

profile=1

slowms=200


#slave.conf

dbpath=/data/slave

logpath=/data/log/mongodb/slave/mongodb.log

pidfilepath=/var/run/mongo_slave.pid

#directoryperdb=true

logappend=true

replSet=policydb

port=10001

oplogSize=10000

fork=true

noprealloc=true

profile=1

slowms=200

#arbiter.conf

dbpath=/data/arbiter

logpath=/data/log/mongodb/arbiter/mongodb.log

pidfilepath=/var/run/mongo_arbiter.pid

#directoryperdb=true

logappend=true

replSet=policydb

port=10000

oplogSize=10000

fork=true

noprealloc=true

profile=1

slowms=200

③启动mongodb

/etc/init.d/mongodb_master start

/etc/init.d/mongodb_slave  start

/etc/init.d/mongodb_arbiter start

④配置主、备、仲裁节点

主节点:

# /usr/local/mongodb/bin/mongo  10.68.4.209:10002

MongoDB shell version: 2.4.9

connecting to: 10.68.4.209:10002/test

> use admin

switched to db admin

>config={ _id:"policydb", members:[ {_id:0,host:'10.68.4.209:10002',priority:2}, {_id:1,host:'10.68.4.209:10001',priority:1}, 

... {_id:2,host:'10.68.4.209:10000',arbiterOnly:true}] };

{

"_id" : "policydb",

"members" : [

{

"_id" : 0,

"host" : "10.68.4.209:10002",

"priority" : 2

},

{

"_id" : 1,

"host" : "10.68.4.209:10001",

"priority" : 1

},

{

"_id" : 2,

"host" : "10.68.4.209:10000",

"arbiterOnly" : true

}

]

}

rs.initiate(config)  #初始化

rs.status()  #查看集群状态

10.68.4.29

①建立数据文件夹和日志文件夹

mdkir /data/{master,slave,arbiter}

mkdir /data/log/mongodb/{master,slave,arbiter}  -p

②建立配置文件

#master.conf

dbpath=/data/master

logpath=/data/log/mongodb/master/mongodb.log

pidfilepath=/var/run/mongo_master.pid

#directoryperdb=true

logappend=true

replSet=policydb2

port=10002

oplogSize=10000

fork=true

noprealloc=true

profile=1

slowms=200

#slave.conf

dbpath=/data/slave

logpath=/data/log/mongodb/slave/mongodb.log

pidfilepath=/var/run/mongo_slave.pid

#directoryperdb=true

logappend=true

replSet=policydb2

port=10001

oplogSize=10000

fork=true

noprealloc=true

profile=1

slowms=200

#arbiter.conf

dbpath=/data/arbiter

logpath=/data/log/mongodb/arbiter/mongodb.log

pidfilepath=/var/run/mongo_arbiter.pid

#directoryperdb=true

logappend=true

replSet=policydb2

port=10000

oplogSize=10000

fork=true

noprealloc=true

profile=1

slowms=200

③启动mongodb

/etc/init.d/mongodb_master start

/etc/init.d/mongodb_slave  start

/etc/init.d/mongodb_arbiter start

④配置主、备、仲裁节点

主节点:

# /usr/local/mongodb/bin/mongo  10.68.4.209:10002

MongoDB shell version: 2.4.9

connecting to: 10.68.4.209:10002/test

> use admin

switched to db admin

> config={ _id:"policydb2", members:[ {_id:0,host:'10.68.4.29:10002',priority:2}, {_id:1,host:'10.68.4.29:10001',priority:1}, 

... {_id:2,host:'10.68.4.209:10000',arbiterOnly:true}] };

{

"_id" : "policydb",

"members" : [

{

"_id" : 0,

"host" : "10.68.4.29:10002",

"priority" : 2

},

{

"_id" : 1,

"host" : "10.68.4.29:10001",

"priority" : 1

},

{

"_id" : 2,

"host" : "10.68.4.29:10000",

"arbiterOnly" : true

}

]

}

rs.initiate(config)  #初始化

rs.status()  #查看集群状态

10.68.4.30

①建立数据文件夹和日志文件夹

mdkir /data/{master,slave,arbiter}

mkdir /data/log/mongodb/{master,slave,arbiter}  -p

②建立配置文件

#master.conf

dbpath=/data/master

logpath=/data/log/mongodb/master/mongodb.log

pidfilepath=/var/run/mongo_master.pid

#directoryperdb=true

logappend=true

replSet=policydb3

port=10002

oplogSize=10000

fork=true

noprealloc=true

profile=1

slowms=200

#slave.conf

dbpath=/data/slave

logpath=/data/log/mongodb/slave/mongodb.log

pidfilepath=/var/run/mongo_slave.pid

#directoryperdb=true

logappend=true

replSet=policydb3

port=10001

oplogSize=10000

fork=true

noprealloc=true

profile=1

slowms=200

#arbiter.conf

dbpath=/data/arbiter

logpath=/data/log/mongodb/arbiter/mongodb.log

pidfilepath=/var/run/mongo_arbiter.pid

#directoryperdb=true

logappend=true

replSet=policydb3

port=10000

oplogSize=10000

fork=true

noprealloc=true

profile=1

slowms=200

③启动mongodb

/etc/init.d/mongodb_master start

/etc/init.d/mongodb_slave  start

/etc/init.d/mongodb_arbiter start

④配置主、备、仲裁节点

主节点:

# /usr/local/mongodb/bin/mongo  10.68.4.209:10002

MongoDB shell version: 2.4.9

connecting to: 10.68.4.209:10002/test

> use admin

switched to db admin

> config={ _id:"policydb3", members:[ {_id:0,host:'10.68.4.30:10002',priority:2}, {_id:1,host:'10.68.4.30:10001',priority:1}, 

... {_id:2,host:'10.68.4.30:10000',arbiterOnly:true}] };

{

"_id" : "policydb",

"members" : [

{

"_id" : 0,

"host" : "10.68.4.30:10002",

"priority" : 2

},

{

"_id" : 1,

"host" : "10.68.4.30:10001",

"priority" : 1

},

{

"_id" : 2,

"host" : "10.68.4.30:10000",

"arbiterOnly" : true

}

]

}

rs.initiate(config)  #初始化

rs.status()  #查看集群状态

2.Mongod 创建单个分片的配置服务器

① 创建配置目录

10.68.4.209  mkdir  /data/config

10.68.4.29    mkdir  /data/config

10.68.4.30    mkdir  /data/config

②准备配置服务器的配置文件

3个服务器的配置服务器的配置文件一致

#config.conf

dbpath=/data/config

logpath=/data/log/mongodb/config/mongodb.log

pidfilepath=/var/run/mongo_config.pid

directoryperdb=true

logappend=true

port=10003

fork=true

configsvr=true

③启动配置服务器

/etc/init.d/mongodb_config start

3.Mongod 创建并配置mongos和开启分片模式

① 创建日志目录

Mkdir -p /data/log/mongodb/mongos/

② 准备mongos的配置文件

#mongos.conf

logpath=/data/log/mongodb/mongos/mongodb.log

pidfilepath=/var/run/mongo_mongos.pid

logappend=true

port=10004

fork=true

configdb=10.68.4.209:10003,10.68.4.29:10003,10.68.4.30:1000

③ 启动mongos

/etc/init.d/mongodb_mongos start

④ 配置分片

sh.addShard("policydb/10.68.4.209:10002")

sh.addShard("policydb2/10.68.4.29:10002")

sh.addShard("policydb3/10.68.4.30:10002")

sh.enableSharding("policydb")

db.runCommand({"shardcollection":"policydb.fullPolicyTextInfo_history", "key":{"key":1}})

db.printShardingStatus() #查看分片状态

sh.status({verbose:true})

sh.status()

3.快速创建副本集和配置服务脚本

上图

1.图1

生产环境MongoDB 分片与集群 方案

2.图2 config.conf配置文件

生产环境MongoDB 分片与集群 方案

3.图3

生产环境MongoDB 分片与集群 方案

MongoDB 3.0 正式版发布下载 

CentOS编译安装MongoDB

CentOS 编译安装 MongoDB与mongoDB的php扩展

CentOS 6 使用 yum 安装MongoDB及服务器端配置

Ubuntu 13.04下安装MongoDB2.4.3

MongoDB入门必读(概念与实战并重)

Ubunu 14.04下MongoDB的安装指南

《MongoDB 权威指南》(MongoDB: The Definitive Guide)英文文字版[PDF]

Nagios监控MongoDB分片集群服务实战

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/2aa8a333e143dee538a6cb21077adc91.html