복제 세트에서 권장되는 구성은 최소 3개 이상의 노드로 이루어진 것이다. 왜냐하면, 복제 노드가 2개인 상태에서 프라이머리 서버가 다운되면 과반수를 확보할 수 없기 때문이다.

3-멤버 구성은 '데이터를 보유하는 노드 3개' 또는 '데이터를 보유하는 노드 2개 + 아비터 1대'로 구성할 수 있다.

만약, 과반수의 노드가 불능 상태가 되면 더 이상 쓰기를 허용하지 않고 읽기 전용 모드로 전환된다.

아비터

아비터는 실제 데이터를 가지고 있는 '복제노드는 아니다'. 일종의 관찰자(observer) 역할로서 행동한다. 프라이머리 노드 선출 시 참여는 하되, 어떤 데이터로 복제하지 않는 경량 mongod 서버다.

rs.secondaryOk

몽고DB에서는 기본적으로 실수 방지를 위해 세컨더리 노드에서는 질의를 허용하지 않음. 하지만, rs.secondaryOk() 를 사용하여 세컨더리 노드에서도 질의를 할수 있도록 허용할 수는 있다. (https://docs.mongodb.com/manual/reference/method/rs.secondaryOk/)

그외 자세한 복제세트에 대한 설명과 설정 방법 등은 공식 문서 참고