mongo cluster of replicate set and shard
2017-06-12 14:31
309 查看
复制集: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)
start-mongos.sh(239)
onstart_rs1.js
onstart_rs2.js
onstart_sh.js
补充:防范mongodb勒索
1. 做好访问认证。打开你的MongoDB配置文件(.conf),设置为auth=true
2. 做好防火墙设置。建议管理者关闭27017端口的访问。
3. Bind_ip,绑定内网IP访问。
4. 做好升级。请管理者务必将软件升级到最新版本。
切片: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. 做好升级。请管理者务必将软件升级到最新版本。
相关文章推荐
- How to set up and test a simple OLEDB Linked Server in Microsoft® SQL Server to allow retrieval of d
- "Error: ANDROID_HOME is not set and "android" command not in your PATH. You must fulfill at least one of these conditions.".
- Set Font Properties On Mouse Hover Of Push Button And Text Items At Run time In Oracle Forms
- One or more breakpoints cannot be set and have been disabled!Execution will stop at the beginning of the program
- settimeofday and gettimeofday
- How to setup a new Organization and Set of Books for a Payables Responsibility
- Debug error:"One or more breakpoints cannot be set and have been disabled.Execution will stop at the beginning of the program."
- Preventing and Event from Propagation Through a set of Nested Elements
- Codeforces Round #234 (Div. 2) B. Inna and New Matrix of Candies SET的妙用
- Infinite size of Hypothesis set and growth function
- Performance considerations for keySet() and entrySet() of Map
- 【MongoDB】mongoimport and mongoexport of data (二)
- CodeForces 305C--Ivan and Powers of Two (STL:set)
- Samba set of user authentication and file access rights
- svn rm 时报错 svn: E205007: None of the environment variables SVN_EDITOR, VISUAL or EDITOR are set, and
- How to choose the SIZE and HASHKEYS of hash cluster table?
- 扫描线算法的论文《The Intersections for a Set of 2D Segments, and Testing Simple Polygons》的部分翻译
- ccah-500 第42题 want to set and enforce a block size of 128MB for all new files written to the cluster
- How to set CellSpacing and CellPadding attributes of Table
- Codeforces Round #302 (Div. 2) A.Set of Strings&B.Sea and Islands&C.Writing Code