목록 보기
당근 검색 엔진, 쿠버네티스로 쉽게 운영하기 2편 — 데이터 노드 웜업 적용
데브옵스

당근 검색 엔진, 쿠버네티스로 쉽게 운영하기 2편 — 데이터 노드 웜업 적용

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

두줄요약

Elasticsearch 데이터 노드 재시작 시 캐시 미적재로 레이턴시가 급증하는 문제를 다뤘습니다. search-coordinator와 웜업 절차로 배포 중에도 안정적으로 트래픽을 받도록 개선했습니다.

문제 상황

  • ECK 도입 후에도 데이터 노드 롤링 리스타트 시 캐시가 비어 레이턴시가 급증하는 문제
  • 피크 타임을 피해서만 배포해야 하는 운영 제약과 긴 모니터링 부담
  • Elasticsearch 노드가 쿠버네티스 readinessProbe와 무관하게 즉시 클러스터에 join하는 구조

원인 분석

  • 새로 재시작한 데이터 노드의 page cache, query cache, field data cache, request cache 초기화
  • 샤드 재배치와 replica 부하 집중으로 남은 노드의 응답 지연 악화
  • 쿠버네티스 기본 메커니즘만으로는 웜업 완료 전 트래픽 차단 불가

해결 방법

  • search-coordinator 프록시를 두고 웜업 완료 노드만 검색 대상에 포함
  • Central Dogma의 prefer_nodes로 라우팅 대상 노드 목록을 단일 상태로 관리
  • Redis 분산 락과 검색 로그 기반 웜업 쿼리로 캐시를 채운 뒤 p50, p90 기준 충족 시 트래픽 전환

적용해볼 점

  • 노드 재시작과 트래픽 수용 시점을 분리하는 운영 구조 검토
  • 캐시 웜업과 라우팅 제어를 별도 오케스트레이터로 캡슐화하는 방식 고려

댓글 0

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

댓글을 불러오는 중...