MongoDB 레플리카 셋 구축 가이드
ON-premise 서버 교체로 인해 몽고디비 레플리카셋 테스트의 기록
몽고디비를 같은 버전으로 설치
sudo vi /etc/yum.repos.d/mongodb-org-4.0.repo
---
[mongodb-org-4.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc
몽고디비 4.0.28 버전 설치
sudo yum install -y mongodb-org-4.0.28
설치되는 것들
• mongodb-org-server: MongoDB 서버
• mongodb-org-mongos: MongoDB의 라우팅 서버
• mongodb-org-shell: MongoDB 셸 도구
• mongodb-org-tools: 백업 및 복구 도구
🚨 몽고디비 config 파일 구성을 바꾸거나, security 관련해서 키파일을 넣어주면 systemctl 로는 몽고디비 실행 불가.
mongod --config /etc/mongod.conf
이 명령어로 실행해야 함
한개의 서버에 포트를 나누어 몽고디비 2개 실행
포트를 나누는 conf 파일을 하나 더 만든다. 기존 mongod.conf 파일을 copy => mongod02.conf로..
- 바뀌는 부분.
path: /var/log/mongodb02/mongod02.log
dbPath: /var/lib/mongo02
pidFilePath: /var/run/mongodb/mongod02.pid
- 디렉토리는 직접 생성해줘야 함.
- chmod, chown 둘 다 확인해야 함. => 안그러면 오류남.
# mongod02.conf
---
# for documentation of all options, see:
# http://docs.mongodb.org/manual/reference/configuration-options/
# where to write logging data.
systemLog:
destination: file
logAppend: true
logRotate: rename
path: /var/log/mongodb02/mongod02.log
# Where and how to store data.
storage:
dbPath: /var/lib/mongo02
journal:
enabled: true
# engine:
# mmapv1:
# wiredTiger:
# how the process runs
processManagement:
fork: true # fork and run in background
pidFilePath: /var/run/mongodb/mongod02.pid # location of pidfile
timeZoneInfo: /usr/share/zoneinfo
# network interfaces
net:
port: 27018
# bindIp: 127.0.0.1 # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.
bindIp: 0.0.0.0
security:
keyFile: /etc/mongodb.key
authorization: enabled
#operationProfiling:
replication:
replSetName: rs0
#sharding:
## Enterprise-Only Options
#auditLog:
#snmp:
mongod --config /etc/mongod02.conf
### 설정 포트에 몽고디비 접속하려면.
mongo --port 27018
replica set 설정
먼저 primary로 원하는 서버에 들어가 mongo shell 접속. mongo shell 에서,
use admin
-> 계정을 안만들었으면, conf 파일에서 security를 주석 처리해준 다음, mongo shell 다시 들어와 admin 계정 생성.
만든 다음, conf 파일에서 security 주석 제거 한 다음, mongo shell 들어와서,
rs.initiate({
_id: "설정한 레플리카 셋 이름",
members: [
{ _id: 0, host: "primary_host:27017" }, // Primary 노드
{ _id: 1, host: "secondary_host_1:27017" }, // Secondary 노드
{ _id: 2, host: "secondary_host_2:27017" } // Secondary 노드
]
})
이런식으로, 코드 날리기.
rs.status() 로 상태확인 하기
포트는 열려 있어야 함. 포트 안열리면 통신 안됨 (27017)