Mongodb 클러스터 구축

6318 단어 mongodbLinux 서버
총 2대의 서버, 각 위에 각각 하나의 루트, 하나의 설정, 하나의 분할, 몬godb 버전 3.4
서버 1: 10.2.4.214
서버 2: 10.2.4.215
1. 먼저 서버 2대의 프로필을 작성하고 프로필의 경로 폴더를 설정합니다
214 라우팅 프로파일 mongodb_rout.conf:
net:
   port: 5000
   ipv6: true
systemLog:
   destination: file
   path: "/data/mongodb/formal_5000/log/route.log"
   logAppend: true
processManagement:
   fork: true
sharding:
   configDB: rsConf/10.2.4.214:5100,10.2.4.215:5100
...

214의 구성 프로파일 mongodb_cfg.conf:
net:
   port: 5100
   ipv6: true
storage:
   dbPath: "/data/mongodb/formal_5000/data/config"
   directoryPerDB: true
systemLog:
   destination: file
   path: "/data/mongodb/formal_5000/log/config.log"
   logAppend: true
storage:
   journal:
      enabled: true
processManagement:
   fork: true
sharding:
   clusterRole: configsvr
replication:
   replSetName: rsConf
...

214의 조각 구성 파일 mongodb_s0.conf:
storage:
   dbPath: "/data/mongodb/formal_5000/data/s0"
   directoryPerDB: true
systemLog:
   destination: file
   path: "/data/mongodb/formal_5000/log/s0.log"
   logAppend: true
net:
   port: 5010
   ipv6: true
processManagement:
   fork: true
storage:
   journal:
      enabled: true
replication:
   replSetName: rsShardA
sharding:	
   clusterRole: shardsvr
...

215 라우팅 프로파일 mongodb_rout.conf:
net:
   port: 5000
   ipv6: true
systemLog:
   destination: file
   path: "/data/mongodb/formal_5000/log/route.log"
   logAppend: true
processManagement:
   fork: true
sharding:
   configDB: rsConf/10.2.4.214:5100,10.2.4.215:5100
...

215 구성 프로파일 mongodb_cfg.conf:
net:
   port: 5100
   ipv6: true
storage:
   dbPath: "/data/mongodb/formal_5000/data/config"
   directoryPerDB: true
systemLog:
   destination: file
   path: "/data/mongodb/formal_5000/log/config.log"
   logAppend: true
storage:
   journal:
      enabled: true
processManagement:
   fork: true
sharding:
   clusterRole: configsvr
replication:
   replSetName: rsConf
...

215의 조각 구성 파일 mongodb_s0.conf:
storage:
   dbPath: "/data/mongodb/formal_5000/data/s0"
   directoryPerDB: true
systemLog:
   destination: file
   path: "/data/mongodb/formal_5000/log/s0.log"
   logAppend: true
net:
   port: 5010
   ipv6: true
processManagement:
   fork: true
storage:
   journal:
      enabled: true
replication:
   replSetName: rsShardB
sharding:	
   clusterRole: shardsvr
...

두 서버에서 다음 명령을 실행하여 폴더를 만듭니다. 그렇지 않으면mongodb를 시작할 수 없습니다.
mkdir -p /data/mongodb/formal_5000/log/
mkdir -p /data/mongodb/formal_5000/data/config/
mkdir -p /data/mongodb/formal_5000/data/s0

2. 구성 서비스 2대를 시작하고 복제본으로 구성
# 2 
numactl --interleave=all  mongod -f /etc/mongodb/formal_5000/mongodb_cfg.conf
# 
mongo --port 5100
config={_id:"rsConf",members:[
	{_id:0,host:"10.2.4.214:5100"},
	{_id:1,host:"10.2.4.215:5100"}
]}
rs.initiate(config)
# 
rs.status()

3. 분할 및 라우팅 서비스 2대 시작 및 구성
# 2 
numactl --interleave=all  mongod -f /etc/mongodb/formal_5000/mongodb_s0.conf

# 2 
numactl --interleave=all  mongos -f /etc/mongodb/formal_5000/mongodb_rout.conf

# 214 primary
mongo --port 5010
config={_id:"rsShardA",members:[
	{_id:0,host:"10.2.4.214:5010"}
]}
rs.initiate(config)

# 215 primary
mongo --port 5010
config={_id:"rsShardB",members:[
	{_id:0,host:"10.2.4.215:5010"}
]}
rs.initiate(config)

# 
mongo --port 5000
use admin
db.runCommand({addshard:"rsShardA/10.2.4.214:5010",name:"shard_0",maxSize:0})
db.runCommand({addshard:"rsShardB/10.2.4.215:5010",name:"shard_1",maxSize:0})
# 
sh.status()

4. 모니터 설정_센터 분할 가능
use monitor_center
use admin
db.runCommand({enablesharding:"monitor_center"})

5. Studio-3T를 사용하여 라우팅, 구성 및 슬라이스를 연결하고 사용자를 만듭니다.
6. 데이터베이스 닫기
# , 2 
mongo --port 5000
use admin
db.shutdownServer()
# , 2 
mongo --port 5010
use admin
db.shutdownServer({force:true})
# , 2 
mongo --port 5100
use admin
db.shutdownServer()

7. keyfile을 두 서버의 라우팅, 구성, 슬라이스 구성 파일의 마지막 줄에 추가합니다. 아래와 같습니다.
214 라우팅 프로파일 mongodb_rout.conf:
net:
   port: 5000
   ipv6: true
systemLog:
   destination: file
   path: "/data/mongodb/formal_5000/log/route.log"
   logAppend: true
processManagement:
   fork: true
sharding:
   configDB: rsConf/10.2.4.214:5100,10.2.4.215:5100
security:
   keyFile: "/data/mongodb/formal_5000/key/mongodb_key"
...

다른 프로필과 유사합니다. 키 파일을 추가해야 합니다.
# keyFile
mkdir -p /data/mongodb/formal_5000/key/
cd /data/mongodb/formal_5000/key
echo -e "formal mongodb keyFile" > mongodb_key
chmod 600 /data/mongodb/formal_5000/key/mongodb_key

8. 마지막으로 구성, 분할, 라우팅 순서대로 시작
numactl --interleave=all  mongod -f /etc/mongodb/formal_5000/mongodb_cfg.conf
numactl --interleave=all  mongod -f /etc/mongodb/formal_5000/mongodb_s0.conf
numactl --interleave=all  mongos -f /etc/mongodb/formal_5000/mongodb_rout.conf

PS:
1. 평형기
sh.setBalancerState(true) # 
sh.setBalancerState(false) # 
sh.getBalancerState() # 
sh.isBalancerRunning() # 

# , 
db.settings.update({ _id: "balancer" },{ $set: { activeWindow : { start : "21:00", stop : "08:00" } } },{ upsert: true })
# 
db.settings.update({ _id : "balancer" }, { $unset : { activeWindow : true } })

2.건표
use monitor_center
db.createCollection("origdata_20171024") # 
db.origdata_20171024.createIndex({ mac: 1, time: 1},{ background: true}) # 
use admin
db.runCommand({shardcollection:"monitor_center.origdata_20171024",key:{mac:1,time:1}}) # 
db.runCommand({moveChunk:"monitor_center.origdata_20171024",bounds:[{mac:MinKey,time:MinKey},{mac:MaxKey,time:MaxKey}],to:"shard_1"}) # 1

3. 표의 이동
sh.enableBalancing("monitor_center.origdata_20171024") # 
sh.disableBalancing("monitor_center.origdata_20171024") # 
db.getSiblingDB("config").collections.findOne({_id : "monitor_center.origdata_20171024"}).noBalance # 

좋은 웹페이지 즐겨찾기