Split Brain

2025. 2. 16. 10:45IT/기타

반응형

Split Brain(스플릿 브레인)은 주로 분산 시스템이나 클러스터 환경에서 발생하는 문제로, 네트워크 장애나 통신 단절로 인해 클러스터의 노드들이 서로를 인식하지 못하고 각각 독립적으로 운영되면서 데이터 불일치나 시스템 비정상 동작이 발생하는 상황을 말합니다.

Split Brain이 발생하는 시나리오

  • Primary/Secondary 구조 : Primary와 Secondary가 네트워크 장애로 서로를 인식하지 못할 때, Secondary가 Primary로 승격되어 동시에 두 Primary가 존재하게 되는 경우.
  • 분산 저장소(MongoDB, HDFS 등) : 네트워크 파티션(Network Partition)으로 인해 동일 데이터의 서로 다른 버전이 존재하게 되는 상황.
  • 클러스터 관리 시스템(Kubernetes, Hadoop, Spark 등): Master 노드가 네트워크 장애로 격리되어 새로운 Master를 선출하지만, 기존 Master가 살아 있어 동시에 두 Master가 존재하는 경우.

Split Brain의 주요 문제점

  • 데이터 불일치(Data Inconsistency): 서로 다른 노드가 동일 데이터를 다른 값으로 변경.
  • 서비스 중단(Service Disruption): 클러스터가 비정상적으로 작동하거나, 경쟁 상태가 발생하여 서비스 장애 발생.
  • 성능 저하(Performance Degradation): 네트워크 재연결 후 데이터 동기화 과정에서 성능 저하.

MongoDB에서 Split Brain 예시

  • MongoDB는 Replica Set을 통해 고가용성을 보장합니다.
  • Primary 노드가 네트워크 파티션으로 인해 고립되면 Secondary 노드들이 새로운 Primary를 선출합니다.
  • 그러나 기존 Primary가 클라이언트 요청을 계속 받아들이면 데이터 불일치가 발생할 수 있습니다.
  • 해결 방법
    • Write Concern 설정: 다수 노드의 확인을 요구.
    • Heartbeat 주기 관리: 노드 상태를 더 빠르게 감지.
    • Arbiter 사용: 투표만 참여하고 데이터를 저장하지 않아 Split Brain 방지에 도움.

Split Brain 방지 전략


1. Quorum(쿼럼) 기반 결정

  • 다수의 노드가 응답해야 변경을 확정하는 방식.
  • MongoDB, Zookeeper, Kafka 등은 Quorum 기반 알고리즘을 사용.

2. Stonith(Shoot The Other Node In The Head)

  • 비정상 노드를 강제로 종료시켜 Split Brain을 방지.
  • 주로 HA 클러스터링(High Availability Clustering) 환경에서 사용.

3. Consensus 알고리즘 적용

  • Paxos, Raft 알고리즘을 통해 노드 간 일관성 유지.
  • Kubernetes의 etcd, Kafka의 Controller 선출 등에 사용.

4. Network Partition 감지 및 복구

  • 네트워크 장애 감지 후 자동 복구 기능 적용.
  • Heartbeat 메커니즘을 최적화.

반응형