Primary / Secondary / Arbiter 총 3개의 mongod 를 구동해야 함.
(나는 두대의 서버를 이용)

주의 할 점은 security.authorization: "enabled" 인 상태에서는 Replica Set 서버 추가가 되지 않는다.
(keyFile 과 함께 사용은 가능.)




warning 제거
처음 접속 시, kernel 관련 warnning 이 발생하면 아래와 같이 추가 한다.

# vi /etc/rc.d/rc.local

if test -f /sys/kernel/mm/transparent_hugepage/khugepaged/defrag; then
  echo 0 > /sys/kernel/mm/transparent_hugepage/khugepaged/defrag
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
  echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
  echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi


admin 계정 생성.

# 접속
mongod

# 사용자 생성.
use admin
db.createUser({ user: "admin", pwd: "password", roles: [{ role: "root", db: "admin" }] })


Key 파일 생성.

openssl rand -base64 756 > /etc/mongodb.key
chmod 400 /etc/mongodb.key


/etc/mongod.conf 파일 수정. (Primary / Secondary)

security:
  keyFile: "/etc/mongodb.key"
  clusterAuthMode: "keyFile"
  authorization: "enabled"


/etc/mongod_arbiter.conf 파일 추가. (Arbiter)

systemLog:
  verbosity: 0
  destination: file
  logAppend: true
  logRotate: rename
  timeStampFormat: ctime
  path: /var/log/mongodb/mongod_arbiter.log
  component:
    replication:
      verbosity: 2

storage:
  dbPath: /var/lib/mongo_arbiter
  directoryPerDB: true
  journal:
    enabled: false

processManagement:
  fork: true  # fork and run in background
  pidFilePath: /var/run/mongodb/mongod_arbiter.pid  # location of pidfile

net:
  port: 27027
  maxIncomingConnections: 1024
  http:
    enabled: false

security:
  keyFile: "/etc/mongodb.key"
  clusterAuthMode: "keyFile"
  authorization: "enabled"

operationProfiling:
  slowOpThresholdMs: 100
  mode: off

replication:
  replSetName: "rs1"


재시작

kill pid
/usr/bin/mongod --bind_ip localhost,192.168.0.1 --port 27017 --keyFile /etc/mongodb.key --replSet rs1 -f /etc/mongod.conf
/usr/bin/mongod --bind_ip localhost,192.168.0.2 --port 27017 --keyFile /etc/mongodb.key --replSet rs1 -f /etc/mongod.conf
/usr/bin/mongod --bind_ip localhost,192.168.0.2 --port 27027 --keyFile /etc/mongodb.key --replSet rs1 -f /etc/mongod_arbiter.conf


접속

mongo -u admin -p password --authenticationDatabase admin


등록

# Primary 서버 초기화.
rsconf = {_id:"rs1", members:[{_id:0, host:"192.168.0.1", "priority": 10}]}
rs.initiate(rsconf)

# Secondary 등록.
rs.add({"_id":1, "host":"192.168.0.2:27017", "priority": 1})

# Arbiter 등록.
rs.addArb("192.168.0.2:27027")


확인.

rs.confing()
rs.status()


dump 파일로 복구

# 일반 사용자 추가.
use sample;
db.createUser({user:"user", pwd: "password", roles:["readWrite", "dbAdmin"]})

# 덤프 파일 생성 후, 밀어 넣기.
mongodump -u user -p password -d sample -o /home/tius1234/backup/mongodb/
mongorestore --drop -u user -p password -d sample sample

# Primary check
use sample
show collections

#Secondary check
use sample
rs.slaveOk()
show collections




참고사이트






Posted by 김군이다

댓글을 달아 주세요