몽고DB(MongDB) 클러스터 구성

몽고DB(MongDB) 클러스터 구성

5줄 요약

1. 몽고DB 이해

2. 몽고DB 샤딩과 수평 확장

3. 몽고DB 레플리카셋과 고가용성

4. 몽고DB 샤드 클러스터 구성요소

5. 몽고DB 이중화 구성

1. 몽고DB란?

MongoDB는 전 세계적으로 많이 사용하고 인기있는

Document 기반 데이터베이스이다.

국내에서는 네이버, 카카오, NHN 등을 포함하여

국내 수많은 기업들이 몽고DB를 채택하여 사용하고있다.

스택오버플로우 설문조사 순위는 5위이지만, 비관계형 데이터베이스 중에는 1위!

2. 몽고DB 대표 특징

샤딩(Sharding)을 통한 데이터 분산 및 수평 확장(Scale-Out)

샤딩은 데이터 셋을 분할해 여러 인스턴스에 나누어 저장하는 기능이다.

특히 몽고DB는 자체적으로 제공하는 Auto-Sharding으로

로드를 분산하여 하드웨어 리소스의 비용을 줄이고

Cluster에 Shard를 추가하여 수평 확장(Scale-Out)이 가능하다.

(단, 아키텍처의 복잡성이 늘어난다는 단점이 있다.)

몽고DB가 자체적으로 제공하는 샤딩

레플리카셋(Replica Set)을 통한 고가용성(High-Availability)

레플리카셋은 말그대로 복제셋이라는 뜻으로

복제를 통한 안정성과 고가용성 확보가 가능하다.

레플리카셋은 다음 두 방법 (P-S-S, P-S-A)를 이용하여 구성할 수 있다.

P-S-S

(Primary, Secondary, Secondary)

Replica Set Secondary Members

P-S-S는 하나의 Primary 노드와 다수의 Secondary 노드로 구성된다.

Primary 노드는 Read/Write를 수행하고

Secondary 노드는 Read에 대한 분산처리를 수행하는데

만약 Primary 노드에 장애가 발생하면

투표를 통해 새로운 Primary를 선출하여 고가용성을 확보한다.

하지만 Secondary 노드가 하나밖에 남아있지 않으면

Primary를 선출할 수 없어 결국 장애가 발생한다.

Replica sets use elections to support high availability

P-S-A

(Primary, Secondary, Arbiter)

Replica Set Arbiter

P-S-A는 하나의 Primary 노드와 다수의 Secondary 노드

그리고 하나의 Arbiter 노드 구성된다.

P-S-A는 P-S-S와 마찬가지로

Read/Write를 수행하는 Primary 노드

Read에 대한 분산처리를 수행하는 Secondary 노드가 있다.

추가로 Arbiter 노드가 별도로 존재하는데

Arbiter 노드의 경우 데이터를 가지고 있지 않고

새로운 Primay 노드를 선출하는 투표만 진행한다.

Replica sets use elections to support high availabilit

3. 몽고DB 샤드 클러스터

샤드 클러스터(Sharded Cluster)는 다음과 같이 구성된다.

Mongos(Router)

쿼리 라우팅 기능을 수행하며

요청을 샤드로 전송하고 결과를 리턴하는 인터페이스 제공한다.

(서버 : 1대 이상 필요)

Config Servers

클러스터의 메타 테이터와 설정 정보를 저장하는 서버로

몽고DB 공식 문서상 최소 3대로 구성하는 것을 추천하고 있다.

(서버 : 최소 3대 필요, Replica set으로 구성 가능)

Sharded Servers

실제 데이터를 저장하는 서버로

데이터 셋을 청크(조각)으로 나누어 여러 샤드에 분산하여 저장한다.

(서버 : 최소 2대, 권장 3대 필요, Replica set으로 구성 가능)

MongoDB Sharded Cluster Requirements

위의 그림과 같은 최소 요구 사항으로 클러스터 구축 시

총 6대(Mongos 1대, Config 서버 3대, Sharded 서버 2대)가 필요하다.

하지만 아래와 같은 형태로 클러스터를 구성하면

서버 3대로 이중화가 가능하다.

MongoDB Shared Cluster Architecture

끝!!

from http://amydev.tistory.com/5 by ccl(A) rewrite - 2021-08-30 23:26:15