Failure Detection

골덕·2024년 11월 25일
  • osd는 기본적으로 disk error또는 corrupted data와 같은 failure는 self-report함

  • OSD가 네트워크에서 unreachable되는 경우를 감지하기 위해, 기본적으론 기존 replication traffic을 활용해 Peer OSD의 상태를 확인하고(Passive Monitoring), 일정 시간 동안 Peer OSD로부터 응답이 없으면, ping을 전송함(Active Monitoring)을 결합하여 상태를 확인.

  • 장애가 감지되면, RADOS는 PG를 다른 OSD로 이동하거나 복제본을 생성하여 데이터 안정성을 보장.

  • osd의 liveness

    • whether the OSD is reachable
      • 응답하지 않는 OSD는 먼저 down 상태로 표시되며, 해당 Placement Group(PG)의 주요 작업(업데이트 직렬화, 복제 등)은 임시로 다음 OSD로 이관됩니다.
      • 일시적인 문제로 복구 가능성 있음
      • 클러스터 맵에서는 여전히 해당 OSD가 데이터를 담당하는 것으로 간주
    • whether it is assigned data by CRUSH
      • OSD가 빠르게 복구되지 않으면 out 상태로 전환되고, 다른 OSD가 PG에 추가되어 데이터를 재복제합니다.
  • 실패한 OSD와의 작업이 대기 중인 클라이언트는 새로운 Primary OSD에 요청을 다시 보냅니다.

  • Ceph MON 클러스터는 OSD 연결 문제로 인한 장애 보고를 수집하고, 일시적 또는 시스템적 문제(예: 네트워크 분할)를 중앙에서 필터링 함.

      • Ceph는 분산 환경에서 발생할 수 있는 다양한 네트워크 이상(network anomalies)과 장애(failures)를 효과적으로 처리하기 위해 모니터 노드(MON)와 OSD 간 협력 메커니즘을 사용
    • 핵심은 장애 감지를 분산 처리하면서도, 최종적으로는 중앙 집중식으로 상태를 정리(중재)하는 데 있음
      • 장애 상태로 판단된 OSD는 Mon의 클러스터 맵(Cluster Map)에 반영
      • 맵이 업데이트되면, 변경 사항이 해당되는 OSD들에게 증분 업데이트(incremental updates) 형식으로 전달
        • MON은 클러스터 맵의 변경 사항을 일부 OSD에만 증분 업데이트로 전달. 나머지는 OSD들 간의 상호작용을 통해 정보를 공유
        • 업데이트된 증분 맵 정보는 OSD 간 기존 통신(ex: 복제 트래픽)에 "얹혀서(piggyback)" 클러스터 내에 전파됩니다.
  • 각 OSD가 peer OSD의 상태를 감시 하는 방식으로 장애를 분산 감지(distributed detection)합니다.

    • 이는 MON(Monitor Node)에 모든 감지 작업을 맡기지 않아, MON에 과도한 부하를 주지 않으면서 빠르게 장애를 감지할 수 있게 합니다.
  • 분산된 감지 과정에서 불일치(inconsistency)가 발생할 가능성이 있습니다.

    • 예: OSD1은 OSD2가 다운되었다고 판단했지만, 다른 OSD는 그렇게 판단하지 않을 수 있음.
  • MON이 중앙에서 이를 중재(arbitration)하여, 일관된 클러스터 맵을 제공합니다.

  • 시스템적인 문제(예: 전력 장애)로 많은 OSD가 동시에 비활성화되었을 때, 이를 "장애(failure)"로 간주하지 않고 단지 "일시적인 문제"로 처리. 불필요한 대규모 데이터 재복제를 방지

참고

(1) 네트워크 이상에 대한 처리
다양한 네트워크 이상(network anomalies)으로 인해 발생할 수 있는 OSD 연결 문제를 MON이 관리.
MON은 장애 보고를 수집하고, 일시적(transient) 또는 시스템적(systemic) 문제를 필터링하여 네트워크 문제를 효과적으로 처리.
(2) 클러스터 맵의 중앙 집중식 관리
MON은 장애나 복구 상태를 반영해 클러스터 맵을 업데이트.
업데이트된 맵은 증분 업데이트(incremental updates) 방식으로 일부 OSD에만 전송되며, OSD 간의 통신을 통해 효율적으로 확산.
(3) 분산 장애 감지와 중앙 집중식 중재
OSD 간 분산 감지를 통해 장애를 빠르게 탐지.
감지 과정에서 발생하는 불일치를 MON이 중재하여 일관된 클러스터 맵을 제공.

profile
다시 시작하는 개발자

0개의 댓글