Skip to content

docs(redis): 8편 HA와 토폴로지 - 단일/센티넬/클러스터, 리더 승격, 정합성, 장애 대처 #168

Description

@devy1540

상위 이슈

목적

Redis의 배포 토폴로지(단일 인스턴스, Sentinel, Cluster)가 각각 어떤 문제를 해결하는지 이해한다.
리더 승격(failover)이 어떻게 일어나며 그 과정에서 데이터 정합성이 어디까지 보장되는지 설명할 수 있어야 한다.
실제 장애("Redis가 죽었다") 상황에서 토폴로지별 대처 절차를 정리한다.

실무 면접에서 반복적으로 나온 질문(리더 승격, failover 시 정합성, Redis가 죽었을 때 대처)을 정면으로 다루기 위한 편이다.

다룰 질문

토폴로지 (단일 / Sentinel / Cluster)

  • 단일 인스턴스는 언제까지 괜찮고, 무엇을 보장하지 못하는가?
  • Sentinel은 무엇을 해결하는가? (마스터 감시, 자동 failover, 클라이언트에게 새 마스터 알림)
  • Cluster는 무엇을 해결하는가? (해시 슬롯 샤딩으로 수평 확장 + 노드별 failover)
  • Sentinel과 Cluster를 각각 언제 선택하는가? 데이터가 한 노드에 안 들어갈 때 vs 가용성만 필요할 때.

리더 승격 (failover 메커니즘)

  • Sentinel: 마스터 다운 판정(SDOWN → ODOWN), quorum의 의미, 리더 Sentinel 선출, replica 승격은 누가 어떻게 결정하는가?
  • Cluster: 노드 실패 감지(gossip, PFAIL → FAIL), replica가 마스터로 승격되는 투표(마스터 노드들의 과반)는 어떻게 이뤄지는가?
  • 승격이 진행되는 동안 클라이언트는 어떤 상태가 되고, 언제 다시 쓰기가 가능해지는가?

데이터 정합성

  • replication이 비동기이기 때문에 failover 시 어떤 write가 유실될 수 있는가? (마스터가 ACK했지만 replica로 복제되기 전 죽은 경우)
  • split-brain(구 마스터가 살아 돌아와 두 마스터가 공존)은 어떻게 생기고 어떻게 방지하는가?
  • min-replicas-to-write / min-replicas-max-lag, WAIT는 각각 무엇을 보장하고 무엇을 보장하지 못하는가?
  • Cluster에서 슬롯이 마이그레이션되는 동안(MIGRATING/IMPORTING, ASK/MOVED) 정합성은 어떻게 유지되는가?

장애 대처 ("Redis가 죽었을 때")

  • 단일 인스턴스가 죽으면? 복구 절차, 데이터 손실 범위(RDB/AOF), 애플리케이션 폴백.
  • Sentinel/Cluster에서 마스터가 죽으면 클라이언트는 어떻게 새 마스터를 찾는가? (클라이언트 재연결, topology 갱신, MOVED 리다이렉트)
  • Redis가 캐시일 때 vs source-of-truth일 때 장애 대응이 어떻게 달라지는가?
  • 캐시 전체가 날아갔을 때 thundering herd / cache stampede를 어떻게 막는가?

실험 산출물

  • 로컬 Sentinel 구성(마스터 1 + replica 1~2 + sentinel 3) 및 마스터 kill로 failover 유도 기록
  • (선택) 로컬 Cluster 구성 및 노드 kill 시 replica 승격 관찰
  • failover 전후 INFO replication, SENTINEL master <name>, CLUSTER NODES 결과
  • failover 중 write 유실 재현 시도와 결과(비동기 복제 지연 활용)
  • 토폴로지별 "Redis가 죽었을 때" 대처 절차 요약표

완료 조건

  • 단일 / Sentinel / Cluster를 각각 언제 선택하는지 근거를 들어 설명한다.
  • Sentinel과 Cluster의 리더 승격 과정을 각각 설명한다.
  • failover 시 정합성 보장 한계(유실 가능한 write, split-brain)를 설명한다.
  • 토폴로지별 "Redis가 죽었을 때" 대처 절차를 정리한다.

다음 세션 시작 지점

Sentinel failover 실험 기록과 정합성 한계 정리를 먼저 확인한다.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: blogBlog listing, post rendering, search, tags, or seriesarea: contentBlog post content changesdocumentationImprovements or additions to documentationtrack: redisRedis learning and mastery tracktype: experimentHands-on experiment or verification task

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions