내 잡다한 노트

Split Brain이란? 본문

분산시스템

Split Brain이란?

peanutwalnut 2025. 1. 9. 13:41

주로 분산 시스템이나 클러스터 환경에서 발생할 수 있는 문제 중 하나이다.

 

스플릿 브레인(Split Brain)이란?

네트워크 파티션이나 통신 장애로 인해 클러스터가 두 개 이상의 독립된 부분으로 나뉘어 각각이 전체 시스템의 일원으로 인식하는 상황을 말한다. 이로 인해 각 부분들이 독립적으로 동작하면서 데이터 불일치, 중복 처리, 시스템 충돌 등의 문제가 발생할 수 있다.

단어를 느낌대로 이해해보면 될 듯 하다. 뇌가 절반 쪼개져서 좌뇌 우뇌가 서로 자기만이 시스템을 담당하는 뇌라고 착각에 빠지는 것이다.

 

스플릿 브레인의 원인

1. 네트워크 파티션

클러스터 내 노드 간의 네트워크 연결이 끊어지거나 지연되어 노드들이 서로를 인식하지 못하게 될 때 발생한다.

 

2. 하드웨어 장애

스토리지, 스위치, 라우터 등의 하드웨어 장애로 인해 클러스터의 일부 노드가 고립될 수 있다.

 

3. 소프트웨어 버그

 

스플릿 브레인의 영향

  1. 데이터 불일치
    • 클러스터의 각 부분이 독립적으로 데이터를 처리하면서 데이터의 일관성이 깨질 수 있습니다.
  2. 중복 처리
    • 동일한 작업이 여러 부분에서 동시에 수행되어 리소스 낭비가 발생할 수 있습니다.
  3. 시스템 충돌 및 장애
    • 클러스터 내에서 서로 충돌하는 작업이나 설정으로 인해 시스템 전체가 불안정해질 수 있습니다.
  4. 서비스 중단
    • 중요한 서비스가 중단되거나 예기치 않게 동작할 수 있습니다.

 

스플릿 브레인의 발생 사례

  1. 데이터베이스 클러스터
    • 예를 들어, MySQL Galera Cluster에서 네트워크 파티션이 발생하면 각 파티션이 독립적으로 쓰기 작업을 시도할 수 있습니다.
  2. 파일 시스템 클러스터
    • Hadoop HDFS나 GlusterFS 같은 분산 파일 시스템에서 스플릿 브레인이 발생하면 데이터 무결성이 손상될 수 있습니다.
  3. 클러스터 관리 시스템
    • Kubernetes 클러스터에서 네트워크 파티션이 발생하면 마스터 노드 간의 상태 불일치가 발생할 수 있습니다.

 

스플릿 브레인 방지 및 해결 방법

  1. 쿼럼 기반 의사 결정(Quorum-Based Decision Making)
    • 클러스터 내에서 특정 수 이상의 노드가 동의해야만 중요한 결정을 내릴 수 있도록 하는 방법입니다. 이를 통해 일부 파티션이 독립적으로 동작하는 것을 방지합니다.
  2. 펜스(Fencing) 메커니즘
    • 스플릿 브레인 상황에서 특정 파티션의 노드를 격리하여 더 이상 클러스터에 영향을 미치지 못하게 하는 방법입니다. 예를 들어, 스토리지 장치에 대한 접근을 차단할 수 있습니다.
  3. Heartbeat 메커니즘
    • 노드 간에 주기적으로 신호를 주고받아 서로의 상태를 확인하는 방법입니다. 이를 통해 네트워크 파티션을 신속하게 감지하고 대응할 수 있습니다.
  4. 데이터 일관성 보장
    • 분산 시스템에서 데이터의 일관성을 유지하기 위한 프로토콜(예: Paxos, Raft)을 도입하여 스플릿 브레인 상황에서도 데이터 무결성을 보장합니다.
  5. 물리적 및 논리적 네트워크 분리
    • 네트워크 인프라를 설계할 때 물리적 및 논리적 분리를 통해 네트워크 파티션의 가능성을 최소화합니다.
  6. 자동 장애 조치(Failover)
    • 한 파티션에 장애가 발생했을 때 자동으로 다른 파티션으로 서비스를 이전하는 메커니즘을 도입합니다.

 

 

스플릿 브레인 방지의 실제 적용 예

  1. Kubernetes
    • Kubernetes는 etcd 클러스터를 쿼럼 기반으로 운영하여 스플릿 브레인 상황을 방지합니다. etcd는 Raft 알고리즘을 사용하여 데이터의 일관성을 유지합니다.
  2. Apache Zookeeper
    • Zookeeper는 쿼럼 기반의 리더 선출 메커니즘을 통해 스플릿 브레인을 방지하며, 클라이언트에게 일관된 상태를 제공합니다.
  3. Pacemaker
    • 고가용성 클러스터 매니저인 Pacemaker는 STONITH(Fencing) 메커니즘을 사용하여 스플릿 브레인 상황에서 노드를 격리합니다.

'분산시스템' 카테고리의 다른 글

분산 코디네이터  (1) 2024.12.14
Communication  (0) 2024.12.07