MongoDB 레플리카 셋 구축 가이드

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)

댓글

댓글 남기기