[MongoDB] replica set ①

OS : Rocky Linux 9

 

 

MongoDB 에서 replica set 을 구성하려면

우선 replica set 을 구성하는 서버들의 conf 파일 내용 중

'security' 와 'replication' 세팅이 같아야 한다.

 

그리고 primay로 사용할 서버에 먼저 root 계정 등

root role 을 갖고 있는 계정을 생성하고 세팅하는게 좋다.

 

맞춰줘야 할 conf 내용은 다음과 같다.

security:
  authorization: "enabled"
  clusterAuthMode: "keyFile"
  keyFile: "/etc/mongod/mongodb-keyfile"

replication:
  replSetName: "replName"

 

replication 설정을 활성화 하고 security 설정을 하려면

반드시 keyFile 이 있어야 하므로 keyfile 을 생성해준다.

 openssl rand -hex 32 > /etc/mongod/mongodb-keyfile

해당 keyfile 은 반드시 replica set 을 설정할 모든 서버에 동일한 파일을 생성해야 한다.

각 서버에 해당 명령어로 keyfile 을 만드는게 아닌,

한 서버에서 keyfile 을 만들고 같은 값으로 keyfile 을 생성하거나, 복사해서 이동해야 한다.

 

keyfile 은 권한을 제한해야 한다.

권한이 과도하게 들어있으면 MongoDB에서 실행 시 에러가 발생한다.

# chown mongod:mongod /etc/mongod/mongodb-keyfile
# chmod 600 /etc/mongod/mongodb-keyfile

 

통신을 위해 서로의 MongoDB 서비스 포트를 열어준다.

해당 글에서는 primary 서버는 123.123.123.123 secondary 서버는 456.456.456.456 이라고 가정한다.

# firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address=123.123.123.123 port port="57017" protocol="tcp" accept'

 

primary 로 사용할 서버에서 mongosh 로 접속한다.

# mongosh -u root -p --port 57017

 

admin DB로 전환한다.

Primary test> use admin

 

replica set 을 초기화 한다.

초기화 시 secondary 로 사용할 서버도 한 번에 등록해주자.

Primary admin> rs.initiate({_id: "replName",members: [{ _id: 0, host: "123.123.123.123:57017", priority: 2 },{ _id: 1, host: "456.456.456.456:57017", priority: 1 }]})

 

만약 초기화 시 추가하지 못했다면 나중에 추가해도 된다.

Primary admin> rs.add("456.456.456.456:57017")

 

priority 값이 높은 서버가 primary 서버가 되며,

낮은 서버가 secondary 서버가 된다.

 

primary 서버에서 replica set 의 상태롤 조회할 수 있다.

Primary admin> rs.status()

 

정상적으로 등록이 되었다면

health 값이 1,

stateStr 값이 각각 PRIMARY, SECONDARY 로 확인된다.

 

MongoDB의 replica set 은 홀수를 기본으로 하는데,

다음 글에서 arbiter를 활용한 구성을 추가해보겠다.

'DB' 카테고리의 다른 글

[MongoDB] 계정 관리 ①  (0) 2026.01.20
[MongoDB] 설치  (0) 2026.01.09