목록 보기
Running Elasticsearch on Kubernetes the Easy Way, Part 2 — Data Node Warm-Up
데브옵스

Running Elasticsearch on Kubernetes the Easy Way, Part 2 — Data Node Warm-Up

당근마켓
당근마켓
2025년 12월 16일

두줄요약

Elasticsearch 롤링 재시작 시 캐시 미준비 노드로 트래픽이 유입돼 지연과 장애가 발생하는 문제를 다뤘습니다. search-coordinator 프록시로 워밍업 완료 노드에만 검색 트래픽을 보내는 구조를 소개했습니다.

문제 상황

  • ECK 기반 Elasticsearch를 Kubernetes에서 운영하며 배포 자동화는 얻었지만, 피크 시간 회피가 사실상 필수인 상태가 남음
  • 데이터 노드 롤링 재시작 시 캐시가 비어 있는 상태로 트래픽을 받아 p99 지연과 오류율이 급등하는 문제
  • 노드 수가 줄어든 동안 부하가 남은 replica로 집중되며, 운영자가 배포 시간과 상태를 지속 감시해야 하는 부담

원인 분석

  • StatefulSet 롤링 재시작이 Ready 기준으로 다음 Pod를 올리는 방식이라 Elasticsearch의 실제 준비 상태와 불일치
  • Elasticsearch 데이터 노드는 기동 직후 페이지 캐시, 쿼리 캐시 등이 비어 있어 즉시 안정적인 검색 처리 불가
  • Kubernetes readinessProbe나 postStart hook만으로는 Elasticsearch 클러스터 내부의 트래픽 유입 시점을 제어할 수 없음

해결 방법

  • 검색 트래픽 앞단에 search-coordinator 프록시를 두어, 워밍업이 끝난 데이터 노드로만 요청 전달
  • 노드는 자유롭게 재시작하되, warm-up 완료 전에는 검색 트래픽을 받지 않도록 구조 분리
  • 내부 DNS 기반 프록시로 추가 지연을 최소화하면서 트래픽 제어와 워밍업 오케스트레이션을 결합

댓글 0

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...