mongo cluster of replicate set and shard

本文详细介绍了一个包含多个服务器的MongoDB集群的搭建过程,包括创建目录、配置复制集、配置config server和route server、激活数据库和集合的分片等步骤。

复制集:replicate set

切片:shard

环境:

serverA:10.10.10.237

serverB:10.10.10.238
serverC:10.10.10.239


#创建目录
=============================

serverA:
mkdir -p /data/mongodb/sh1rs1
mkdir -p /data/mongodb/sh2rs1
mkdir -p /data/mongodb/config

serverB:
mkdir -p /data/mongodb/sh1rs2
mkdir -p /data/mongodb/sh2rs2
mkdir -p /data/mongodb/config

serverC:
mkdir -p /data/mongodb/sh1rs3
mkdir -p /data/mongodb/sh2rs3
mkdir -p /data/mongodb/config


#shard1上配置复制集
=============================

serverA:
./mongod --shardsvr --replSet sh1rs --port 27000 --dbpath /data/mongodb/sh1rs1 --logpath /data/mongodb/sh1rs1/sh1rs1.log --logappend --fork
 
serverB:
./mongod --shardsvr --replSet sh1rs --port 27000 --dbpath /data/mongodb/sh1rs2 --logpath /data/mongodb/sh1rs2/sh1rs2.log --logappend --fork

serverC:
./mongod --shardsvr --replSet sh1rs --port 27000 --dbpath /data/mongodb/sh1rs3 --logpath /data/mongodb/sh1rs3/sh1rs3.log --logappend --fork

#用mongo连接serverA的27000端口的mongod,初始化replset sh1rs:

./mongo --port 27000
config={_id:'sh1rs',members:[{_id:0,host:'10.10.10.237:27000'},
{_id:1,host:'10.10.10.238:27000'},{_id:2,host:'10.10.10.239:27000'}]}
rs.initiate(config)


#shard2上配置复制集
=============================

serverA:
./mongod --shardsvr --replSet sh2rs --port 27018 --dbpath /data/mongodb/sh2rs1 --logpath /data/mongodb/sh2rs1/sh2rs1.log --logappend --fork
 
serverB
./mongod --shardsvr --replSet sh2rs --port 27018 --dbpath /data/mongodb/sh2rs2 --logpath /data/mongodb/sh2rs2/sh2rs2.log --logappend --fork

serverC
./mongod --shardsvr --replSet sh2rs --port 27018 --dbpath /data/mongodb/sh2rs3 --logpath /data/mongodb/sh2rs3/sh2rs3.log --logappend --fork

#用mongo连接serverA的27018端口的mongod,初始化replset sh2rs:

./mongo --port 27018
config={_id:'sh2rs',members:[{_id:0,host:'10.10.10.237:27018'},
{_id:1,host:'10.10.10.238:27018'},{_id:2,host:'10.10.10.239:27018'}]}
rs.initiate(config)


#配置3台config server
=============================

#在server A B C 上执行
./mongod --configsvr --dbpath /data/mongodb/config --port 25000 --logpath /data/mongodb/config/config.log --logappend --fork


#配置3台route server
=============================

#在server A B C 上执行
./mongos --configdb 10.10.10.237:25000,10.10.10.238:25000,10.10.10.239:25000 --port 30000 --logpath /data/mongodb/mongos.log --logappend --fork --chunkSize 1


#配置shard cluster
=============================

#选择一台机器的30000端口,连接mongos进程:
./mongo --port 30000
use admin
db.runCommand({addshard:"sh1rs/10.10.10.237:27000,10.10.10.238:27000,10.10.10.239:27000"})
db.runCommand({addshard:"sh2rs/10.10.10.237:27018,10.10.10.238:27018,10.10.10.239:27018"})


#激活数据库和集合的分片
=============================
db.runCommand({enablesharding:"hr"})
db.runCommand({shardcollection:"hr.resumes",key:{id:1}})


测试检验
=============================
for (var i = 0; i < 100000; ++i){
db.resumes.insert({"id": i, "name": "liao"})
}

db.resumes.find()
rs.status()
sh.status()


Auth Control

=================================
use admin
db.createUser({user:"admin",pwd:"abc123",roles:[{role:"userAdminAnyDatabase",db:"admin"},{role:"root",db:"admin"}]});
db.createUser({user:"dev",pwd:"abc123",roles:[{role:"readWrite",db:"hr"}]});

mongo --port 30000 -u admin -p abc123 --authenticationDatabase admin

 
openssl rand -base64 741 > mongodb-keyfile
chmod 600 mongodb-keyfile


reboot:
====================
HR(237):
export LC_ALL=C
mongod --shardsvr --port 10000 --dbpath /var/mongodb/0/ --logpath /dev/null --logappend --fork


start script(239):

237、238、239依次执行

/data/mongodb/start-mongos.sh


start-mongos.sh(237,238)

mongod --shardsvr --replSet sh1rs --port 27000 --dbpath /data/mongodb/sh1rs1 --logpath /data/mongodb/sh1rs1/sh1rs1.log --logappend --fork

mongod --shardsvr --replSet sh2rs --port 27018 --dbpath /data/mongodb/sh2rs1 --logpath /data/mongodb/sh2rs1/sh2rs1.log --logappend --fork

mongod --configsvr --dbpath /data/mongodb/config --port 25000 --logpath /data/mongodb/config/config.log --logappend --fork


start-mongos.sh(239)
mongod --shardsvr --replSet sh1rs --port 27000 --dbpath /data/mongodb/sh1rs3 --logpath /data/mongodb/sh1rs3/sh1rs3.log --logappend --fork

mongod --shardsvr --replSet sh2rs --port 27018 --dbpath /data/mongodb/sh2rs3 --logpath /data/mongodb/sh2rs3/sh2rs3.log --logappend --fork

mongod --configsvr --dbpath /data/mongodb/config --port 25000 --logpath /data/mongodb/config/config.log --logappend --fork

mongos --configdb 10.10.10.237:25000,10.10.10.238:25000,10.10.10.239:25000 --port 30000 --logpath /data/mongodb/mongos.log --logappend --fork --chunkSize 1

sleep 3 

mongo --port 27000 < /data/mongodb/onstart_rs1.js 
mongo --port 27018 < /data/mongodb/onstart_rs2.js 
mongo --port 30000 < /data/mongodb/onstart_sh.js 

onstart_rs1.js

config={_id:'sh1rs',members:[{_id:0,host:'10.10.10.237:27000'},
{_id:1,host:'10.10.10.238:27000'},{_id:2,host:'10.10.10.239:27000'}]};
rs.initiate(config); 

onstart_rs2.js

config={_id:'sh2rs',members:[{_id:0,host:'10.10.10.237:27018'},
{_id:1,host:'10.10.10.238:27018'},{_id:2,host:'10.10.10.239:27018'}]};
rs.initiate(config);

onstart_sh.js

use admin;
db.auth("admin","abc123");
db.runCommand({addshard:"sh1rs/10.10.10.237:27000,10.10.10.238:27000,10.10.10.239:27000"});
db.runCommand({addshard:"sh2rs/10.10.10.237:27018,10.10.10.238:27018,10.10.10.239:27018"});
db.runCommand({enablesharding:"hr"});
db.runCommand({shardcollection:"hr.resumes",key:{id:1}});

补充:防范mongodb勒索

1. 做好访问认证。打开你的MongoDB配置文件(.conf),设置为auth=true

2. 做好防火墙设置。建议管理者关闭27017端口的访问。

3. Bind_ip,绑定内网IP访问。

4. 做好升级。请管理者务必将软件升级到最新版本。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值