본문 바로가기
WIKI 기술 지식 베이스

장애 모드

원문 보기 위키 갱신

장애 모드 (Failure Modes)

:::note 이전 CloudNativePG 버전에서는 이 페이지에 구체적인 장애 시나리오가 포함되어 있었어요. 대부분 표준 Kubernetes 동작을 따르므로, 기반 Kubernetes 스택에 속하고 CloudNativePG 특유의 것이 아닌 정보의 중복을 피하기 위해 내용을 간소화했어요. :::

CloudNativePG는 자기 치유와 고가용성에 대해 표준 Kubernetes 원칙을 따릅니다. 스토리지 클래스, PVC, 노드, Pod 같은 핵심 Kubernetes 개념에 익숙하다고 가정해요. CloudNativePG 특유의 세부 사항은, 시작·liveness·readiness 프로브를 다루는 “Postgres Instance Manager” 섹션과 아래 자기 치유 섹션을 참조하세요.

:::info[Important] 프로덕션에서 CloudNativePG를 실행한다면 전문 지원(professional support)을 받는 것을 강력히 권장해요. :::

출처: 문서

본문

자기 치유 (Self-Healing)

프라이머리 장애 (Primary Failure)

프라이머리 Pod가 실패하면:

  • 연산자가 복제 지연이 가장 낮은 가장 최신의 스탠바이를 승격시켜요.
  • -rw 서비스가 새 프라이머리를 가리키도록 갱신돼요.
  • 실패한 Pod는 -r 및 -rw 서비스에서 제거돼요.
  • 스탠바이 Pod들이 새 프라이머리에서 복제를 시작해요.
  • 이전 프라이머리는 PVC가 사용 가능하면 pg_rewind로 재동기화해요. 그렇지 않으면 새 프라이머리의 백업에서 새 스탠바이가 생성돼요.

스탠바이 장애 (Standby Failure)

스탠바이 Pod가 실패하면:

  • -r 및 -ro 서비스에서 제거돼요.
  • PVC가 사용 가능하면 이를 사용해 Pod가 재시작되고, 그렇지 않으면 현재 프라이머리의 백업에서 새 Pod가 생성돼요.
  • 준비되면 Pod가 -r 및 -ro 서비스에 다시 추가돼요.

수동 개입 (Manual Intervention)

자동 복구가 다루지 않는 장애 시나리오는 수동 개입이 필요할 수 있어요.

:::info[Important] 전문 지원 없이 수동 작업을 수행하지 마세요. :::

리컨실레이션 비활성화 (Disabling Reconciliation)

cnpg.io/reconciliationLoop 어노테이션은 CloudNativePG 리소스의 리컨실레이션 루프를 일시적으로 비활성화할 수 있게 해줘요. "disabled"로 설정하면 연산자가 어노테이션이 붙은 리소스의 갱신 처리를 중단해, 어떤 자동 변경이나 자기 치유 동작도 방지해요.

이 어노테이션은 극도로 주의해서 응급 작업 중에만 사용하세요.

:::warning 이 어노테이션은 문제가 해결되는 즉시 제거해야 해요. 그대로 두면 연산자가 어노테이션이 붙은 리소스를 관리하지 못해요. Cluster에서는 자기 치유 동작과 페일오버가 포함돼요. :::

이 어노테이션을 지원하는 리소스:

  • Cluster: PostgreSQL 클러스터의 리컨실레이션 비활성화
  • Backup: 백업 작업의 리컨실레이션 비활성화

사용 예시:

metadata:
  name: cluster-example-no-reconcile
  annotations:
    cnpg.io/reconciliationLoop: "disabled"
spec:
  # ...

더 알아보기 (Learn more)