以下内容针对Linux系统配置MongoDB集群过程,具体的Windows平台自行进行修改:
### 1.1.1
准备工作
正式安装MongoDB集群前需分别在三台服务器上做如下准备工作:
1. 创建安装Mongodb所需用户:Mongo,组:Mongodb
2. 创建程序数据存储目录:/data/db/shard1、/data/db/shard2、/data/db/shard3、/data/db/config
3. 创建日志存储目录:/data/dblog/shard1、/data/dblog/shard2、/data/dblog/shard3、/data/dblog/mongos、/data/dblog/config
4. Mongo用户对数据及日志存储目录拥有读写权限
5. 上传Mongodb程序mongodb-linux-x86_64-2.4.3.tgz到/home/mongo/目录下,并解压。
### 1.1.2
创建 shard服务
1) 分别在三台服务器上配置环境变量,具体操作如下:
[root@mongodb ~] su – mongo
[mongo@mongodb ~] vi .bash_profile
然后在打开的环境变量文档的export PATH后添加如下变量信息:
export MONGODB=/home/mongo/mongodb
export MONGO_DATA=/data/db
export MONGO_LOG=/data/dblog
其中MONGODB为程序包路径,MONGO_DATA为数据存放路径,MONGO_LOG为日志存放路径
2) 创建mongodb的启动脚本,具体操作如下:
[mongo@mongodb ~] cd /home/mongo
[mongo@mongodb ~] mkdir script
[mongo@mongodb ~] cd script
[mongo@mongodb script] vi startshard1.sh
然后在打开的文档中输入如下信息:
${MONGODB}/bin/mongod -fork -shardsvr -replSet shard1 -port 10001
-dbpath ${MONGO_DATA}/shard1 -logpath ${MONGO_LOG}/shard1/shard1.log
保存后为刚创建的startshard1.sh增加执行权限
[mongo@mongodb script] chmod 755 startshard1.sh
重复上述步骤在当前服务器上创建startshard2.sh和startshard3.sh,其中shard2的端口为10002,shard3的端口为10003,并在其余两台服务器上创建startshard1.sh、startshard2.sh和startshard3.sh.
3) 启动每台服务器上的三个shard服务
[mongo@mongodb ~] cd /home/mongo/script
[mongo@mongodb script] ./startshard1.sh
[mongo@mongodb script] ./startshard2.sh
[mongo@mongodb script] ./startshard3.sh
### 1.1.3 初始化replica set
1) 连接mongodb 10001端口初始化replica set,具体操作如下:
[mongo@mongodb ~] cd ${MONGODB}bin
[mongo@mongodb ~] ./mongo –port 10001
MongoDB shell version: 2.4.3
connecting to: 127.0.0.1:10001/test
>config={_id:’shard1’,members:[{_id: 0, host: ‘IP1:10001’,priority:2},{_id: 1, host: ‘IP2:10001’ ,priority:1},{_id: 2, host: ‘IP3:10001’, “arbiterOnly”: true }]}
>rs.initiate(config)
>rs.status()
其中IP1,IP2,IP3为三台服务器的IP。
2) 连接mongodb 10002端口初始化replica set,具体操作如下:
[mongo@mongodb ~] cd ${MONGODB}bin
[mongo@mongodb ~] ./mongo –port 10002
MongoDB shell version: 2.4.3
connecting to: 127.0.0.1:10002/test
>config={_id:’shard2’,members:[{_id: 0, host: ‘IP1:10002’,arbiterOnly:true},{_id: 1, host: ‘IP2:10002’,priority:2},{_id: 2, host: ‘IP3:10002’,priority:1 }]}
>rs.initiate(config)
>rs.status()
其中IP1,IP2,IP3为三台服务器的IP。
3) 连接mongodb 10003端口初始化replica set,具体操作如下:
[mongo@mongodb ~] cd ${MONGODB}bin
[mongo@mongodb ~] ./mongo –port 100033
MongoDB shell version: 2.4.3
connecting to: 127.0.0.1:100033/test
>config={_id:’shard3’,members:[{_id: 0, host: ‘IP1:10003’ ,priority:1},{_id: 1, host: ‘IP2:10003’,arbiterOnly:true},{_id: 2, host: ‘IP3:10003’,priority:2 }]}
>rs.initiate(config)
>rs.status()
其中IP1,IP2,IP3为三台服务器的IP。
4) 验证replica set信息
此时分别连接10001、10002和10003端口,用执行rs.status()命令会看到如下图所示的信息:
<span style=”font-family: ‘Arial’,’sans-serif’; mso-fareast-font-family: <br />
Arial;” lang=”X-NONE”>1.1.4 创建config servers服务
1) 创建config启动脚本,具体操作如下:
[mongo@mongodb ~] cd /home/mongo
[mongo@mongodb ~] cd script
[mongo@mongodb script] vi startconfig.sh
然后在打开的文档中输入如下信息:
${MONGODB}/bin/mongod -configsvr -port 20000 -fork -dbpath
${MONGO_DATA}/dbcfg -logpath ${MONGO_LOG}/dbcfg/dbcfg.log
保存后为刚创建的startconfig.sh增加执行权限
[mongo@mongodb script] chmod 755 startconfig.sh
重复上述步骤在其余两台服务器上创建startconfig.sh。
2) 启动三台服务器上的config服务
[mongo@mongodb ~] cd /home/mongo/script
[mongo@mongodb script] ./startconfig.sh
<span style=”font-family: ‘Arial’,’sans-serif’; mso-fareast-font-family: <br />
Arial;” lang=”X-NONE”>1.1.5 创建服务
1) 创建mongos启动脚本,具体操作如下:
[mongo@mongodb ~] cd /home/mongo
[mongo@mongodb ~] cd script
[mongo@mongodb script] vi startmongos.sh
然后在打开的文档中输入如下信息:
${MONGODB}/bin/mongos -fork -port 30000 -configdb “IP1:20000,IP2:20000,IP3:20000” -logpath
${MONGO_LOG}/mongos/mongos.log
其中IP1,IP2,IP3分别为三台服务器的IP
保存后为刚创建的startconfig.sh增加执行权限
[mongo@mongodb script] chmod 755 startmongos.sh
重复上述步骤在其余两台服务器上创建startmongos.sh。
2) 启动三台服务器上的mongos服务
[mongo@mongodb ~] cd /home/mongo/script
[mongo@mongodb script] ./startmongos.sh
<span style=”font-family: ‘Arial’,’sans-serif’; mso-fareast-font-family: <br />
Arial;” lang=”X-NONE”>1.1.6
配置Sharding
在其中一台服务器上,连接mongod服务,即路由节点30000端口,具体操作如下:
[mongo@mongodb ~] cd ${MONGODB}bin
[mongo@mongodb ~] ./mongo –port 30000
MongoDB shell version: 2.4.3
connecting to: 127.0.0.1:30000/test
在这里需要 切换到 admin 库
> use admin
>db.runCommand({addshard:’shard1/10.1.195.47:10001,10.1.195.57:10001,10.1.195.67:10001’})
{ “shardAdded” : “shard1”, “ok” : 1 }
>db.runCommand({addshard:”shard2/10.1.195.47:10002,10.1.195.57:10002,10.1.195.67:10002”})
{ “shardAdded” : “shard2”, “ok” : 1 }
>db.runCommand({addshard:”shard3/10.1.195.47:10003,10.1.195.57:10003,10.1.195.67:10003”})
{ “shardAdded” : “shard3”, “ok” : 1 }
>db.runCommand({enablesharding:”(dbname)”})
<span style=”font-family: ‘Arial’,’sans-serif’; mso-fareast-font-family: <br />
Arial; mso-fareast-language: ZH-CN;” lang=”X-NONE”>1.1.7 配置Collection分片
为充分体现mongodb分布式的优点,需对mongodb的collection进行分片。collection分片使得数据被分散存储在不同服务器上,减少每个服务器上的数据量,即使要进行大量数据的写入、读取操作,处理起来也会很容易的。
在其中一台服务器上,连接mongod服务,即路由节点30000端口,具体操作如下:
[mongo@mongodb ~] cd ${MONGODB}bin
[mongo@mongodb ~] ./mongo –port 30000
MongoDB shell version: 2.4.3
connecting to: 127.0.0.1:30000/test
>db.runCommand({“enablesharding”:”sgccoa”})
{“OK”:”1”}
>db.runCommand({“shardcollection”:”sgccoa.XXX”,”key”:{“XXX”:”1”}})
{“collectionsharded”:”sgccoa.XXX”,”OK”:”1”}
由于协同办公一级部署系统关于mongodb如何分片,研发暂未给出明确答复,故以上分片操作中XXX为不确定信息,可暂不进行分片操作。
1.2
如何验证MongoDB集群安装部署成功