[MariaDB] Galera 클러스터 구축9: Weighted Quorum과 Split Brain 문제 완전 정복 - 이론 및 설계 원리

 Galera Cluster를 처음 도입하려는 개발자들이 가장 자주 묻는 질문이 있습니다. "왜 최소 3개의 노드가 필요한가요? 비용 절감을 위해 2개로는 안 되나요?"

이 질문의 답은 데이터베이스 클러스터링의 핵심 개념인 Weighted QuorumSplit Brain 문제에서 찾을 수 있습니다. 오늘은 이 두 개념을 깊이 있게 살펴보고, 안정적인 Galera Cluster 구축 방법을 알아보겠습니다.


Split Brain 문제란 무엇인가?

Split Brain은 다중 마스터 데이터베이스 시스템에서 발생하는 가장 심각한 문제 중 하나입니다. 이는 클러스터 내 노드들 간의 네트워크 통신이 끊어졌지만, 각 노드가 여전히 클라이언트와 연결되어 독립적으로 작동할 때 발생합니다.

실제 상황으로 이해하는 Split Brain

온라인 쇼핑몰의 재고 관리 시스템을 예로 들어보겠습니다

  • 상황: Server A와 Server B 간의 네트워크 연결이 끊어짐
  • 문제 발생: 두 서버 모두 각각의 웹 애플리케이션으로부터 주문 요청을 받음
  • Server A: 상품 재고를 100개에서 95개로 업데이트 (5개 판매)
  • Server B: 같은 상품 재고를 100개에서 80개로 업데이트 (20개 판매)

각 서버는 상대방이 장애 상태라고 판단하고 독립적으로 운영을 계속합니다. 결과적으로 동일한 상품에 대해 서로 다른 재고 수량이 기록되어 데이터 정합성에 치명적인 오류가 발생하게 됩니다.

네트워크가 복구된 후에는 어떤 데이터가 올바른지 판단하기 어려워지고, 수동으로 데이터를 정리해야 하는 상황이 발생할 수 있습니다.


Weighted Quorum의 핵심 원리

Quorum의 기본 개념

Quorum(정족수)은 클러스터 내에서 유효한 결정을 내리기 위해 필요한 최소 투표 수를 의미합니다. Galera Cluster에서는 각 노드를 하나의 투표권으로 간주하고, 현재 활성화된 노드 수에 따라 정족수를 동적으로 계산합니다.

Galera는 클러스터 내 노드 간 통신 장애가 발생했을 때 실시간으로 Quorum을 평가하며, 과반수 이상의 노드가 연결되어 있어야만 클러스터가 정상 동작합니다.

노드 구성별 장애 시나리오 비교

2개 노드 구성의 근본적 한계

네트워크 분할 발생 시
- 노드 A: 고립 (투표 1) → 전체의 50%
- 노드 B: 고립 (투표 1) → 전체의 50%
- 결과: 둘 다 과반수 미달 → 클러스터 전체 중단

3개 노드 구성의 안정성

한 노드 고립 시
- 노드 A: 고립 (투표 1) → non-primary 상태
- 노드 B, C: 연결 (투표 2) → 과반수 확보하여 서비스 지속
- 결과: 고가용성 확보

4개 노드 구성의 위험성 (짝수의 함정)

2:2 분할 시 (최악의 시나리오)
- 그룹 A (노드 1, 2): 투표 2 → 50% (과반수 미달)
- 그룹 B (노드 3, 4): 투표 2 → 50% (과반수 미달)
- 결과: 양쪽 모두 non-primary → 전체 서비스 중단

5개 노드 구성의 견고함

3:2 분할 시
- 그룹 A (노드 1, 2, 3): 투표 3 → 60% (과반수 확보) - 그룹 B (노드 4, 5): 투표 2 → 40% (과반수 미달) - 결과: 그룹 A에서 서비스 지속, 그룹 B는 대기 상태

이처럼 홀수 노드 구성은 수학적으로 항상 명확한 과반수를 보장하여 Split Brain 문제를 원천적으로 방지합니다.


Split Brain 방지를 위한 실전 설계 전략

1. 홀수 노드 구성 원칙

노드 수를 홀수(3, 5, 7...)로 구성하면 네트워크 분할 시에도 명확한 의사결정이 가능합니다. 이는 수학적으로 항상 과반수를 보장하는 구조를 만들어줍니다.

2. 지리적 분산 배치

단일 데이터센터 장애에 대비하여 여러 지역에 노드를 분산 배치합니다

권장 구성 (3노드)
- 노드 1: 서울 IDC
- 노드 2: 부산 IDC
- 노드 3: 대전 IDC

장점: 한 지역의 네트워크 장애가 발생해도 나머지 두 지역에서 Quorum 유지

3. 인프라 이중화 설계

하드웨어 장애로 인한 Split Brain을 방지하기 위해 다음 요소들을 이중화합니다

  • 전원 공급 장치 (UPS, 이중 전원)
  • 네트워크 스위치 및 라우터
  • 인터넷 회선 (복수 ISP 사용)

마치며

Split Brain 문제는 한 번 발생하면 서비스 중단과 데이터 손실이라는 치명적인 결과를 가져올 수 있습니다. 따라서 초기 설계 단계에서부터 Weighted Quorum 기반의 홀수 노드 구성을 통해 이러한 위험을 원천 차단해야 합니다.

클러스터는 장애를 견디는 것이 아니라 의사결정 능력을 유지할 수 있어야 합니다. 그 핵심이 바로 Quorum 기반의 설계 철학에 있으며, 이를 통해 Split Brain을 방지하고 데이터 무결성을 확보하는 것이 Galera Cluster 성공의 열쇠입니다.

현재 2노드 구성을 고려하고 계신다면, 장기적인 관점에서 3노드 이상의 홀수 구성을 강력히 권장합니다. 초기 비용 절감보다는 서비스 안정성과 데이터 신뢰성이 더욱 중요한 가치이기 때문입니다.

댓글

이 블로그의 인기 게시물

[Linux] RHEL Local YUM Repository 구성

[Linux Command] sudo command 설명

[Ansible Modules] Fetch module 설명 및 활용