mongodb 레플리카셋 설정하기

본인은 보안에 신경쓰는 편이기 때문에 mongodb를 세팅할 때 패스워드를 설정하는 편이다.
패스워드가 설정된 mongodb의 레플리카셋 설정법의 기록

과정

/etc/mongod.conf 파일 수정 (마스터노드)

security:
  authorization: enabled
  keyFile: /etc/mongodb.key
replication:
  replSetName: "your-replSet-name"

키 파일을 생성한다. (마스터노드)

sudo openssl rand -base64 755 > /etc/mongodb.key &&\
sudo chown mongod:mongod /etc/mongodb.key &&\
sudo chmod 400 /etc/mongodb.key &&\
sudo chcon system_u:object_r:mongod_var_lib_t:s0 /etc/mongodb.key &&\
sudo systemctl restart mongod

생성된 /etc/mongodb.key 파일을 레플리케이션 할 노드로 복사해준다.

/etc/mongod.conf 파일 수정 (레플리카노드)

security:
  authorization: enabled
  keyFile: /etc/mongodb.key
replication:
  replSetName: "your-replSet-name"

복사된 키 파일에 대한 설정 (레플리카노드)

sudo chown mongod:mongod /etc/mongodb.key &&\
sudo chmod 400 /etc/mongodb.key &&\
sudo chcon system_u:object_r:mongod_var_lib_t:s0 /etc/mongodb.key &&\
sudo systemctl restart mongod

replSet 설정이 안되있을 경우 (마스터노드)

> rsconf = {_id: "your-replSet-name", members: [{_id: 0, host: "000.000.000.000:27017", priority: 10}]}
> rs.initiate(rsconf)

000.000.000.000 부분은 마스터노드의 IP를 입력한다.

mongo shell을 이용하여 레플리카노드 추가 (마스터노드)

> rs.add("000.000.000.000:27017")

000.000.000.000 에는 레플리카노드의 IP를 입력해준다.

키 파일이 필요한 이유

패스워드가 설정되지 않은 경우는 필요하지 않지만, 패스워드가 설정되어 있는 경우에는 키 파일을 설정하지 않고 레플리카노드를 붙이려 시도하면 레플리카노드는 {ip}:OTHER > 상태에서 벗어나지 못한다.

그래서 패스워드가 설정된 mongodb의 경우 레플리카노드를 붙이려면 키 파일이 필요하다.

profile
지상 최강의 개발자 쥬니니

0개의 댓글