트러블슈팅&기술선택

Elasticsearch 샤드 관리와 확장

JABHACK 2025. 3. 19. 17:33

엘라스틱 서치(Elasticsearch) 샤드 관리와 확장성 전략

1. 문제 발생

엘라스틱 서치는 데이터를 저장할 때 샤드(Shard) 단위로 분할하여 저장한다. 샤드의 개수는 검색 성능과 확장성에 큰 영향을 미치며, 이에 대한 적절한 설정이 필요하다.

 

2. 문제 원인

  • 샤드는 병렬 처리를 위한 단위다. 검색 쿼리는 여러 개의 샤드에서 동시에 실행되므로, 샤드 개수를 적절히 설정하면 성능이 향상된다.
  • 예를 들어, 100만 개의 문서를 하나의 샤드에 저장하여 검색하는 것50만 개씩 2개의 샤드에 나누어 병렬로 처리하는 것은 검색 속도에서 차이가 발생한다.
  • 그러나 샤드 개수가 너무 많으면 오버헤드가 증가하여 속도가 오히려 느려질 수 있다.
  • 샤드 관리는 직접적인 성능 최적화와 관련되며, 샤드의 개수와 크기를 조절하는 것이 핵심적인 관리 포인트다.

 

3. 문제 해결책 수립

해결 방법 비교

해결 방법 설명 장점 단점
샤드 개수 증가 데이터를 더 많은 샤드로 분할하여 병렬 처리 읽기 성능 향상 오버헤드 증가, 관리 복잡성 증가
샤드 개수 감소 샤드 수를 줄여 관리 부담 감소 클러스터 안정성 증가 검색 속도 저하 가능
샤드 크기 최적화 적정 샤드 크기를 유지하여 균형을 맞춤 성능 최적화 데이터 볼륨 예측 필요

 

4. 문제 해결: 샤드 크기 최적화 및 ILM 활용

(1) 샤드 크기 설정 기준

  • 엘라스틱 서치 공식 문서에 따르면, 샤드 하나의 크기는 10GB~50GB 사이로 유지하는 것이 권장된다.
  • 적절한 샤드 개수를 계산하는 공식:
  • 샤드 개수 = 예상 인덱스 크기 / 적정 샤드 크기
  • 예를 들어, 예상 데이터 크기가 500GB이고, 샤드 하나의 크기를 50GB로 설정하면, 샤드 개수는 500GB / 50GB = 10개가 된다.
  • 샤드 개수를 설정할 때는 데이터 증가량을 고려하여 유연하게 확장할 수 있도록 설계해야 한다.

(2) ILM(인덱스 수명 주기)와의 관계

  • ILM(인덱스 수명 주기)은 샤드 크기와 직접적인 관계는 없지만, 데이터의 저장 전략을 관리하는 개념으로 샤드 운영을 최적화할 수 있도록 돕는다.
  • Hot-Warm-Cold 노드 구조를 사용하여, 중요하고 자주 사용되는 데이터를 빠른 스토리지에 저장하고, 오래된 데이터는 비용이 저렴한 스토리지로 이동시킬 수 있다.
노드 유형 설명
Hot 노드 최신 데이터 저장, 검색 속도가 가장 빠름
Warm 노드 오래된 데이터 저장, 상대적으로 느린 검색
Cold 노드 압축된 데이터 저장, 읽기 전용
  • ILM을 적용하면 오래된 인덱스를 Cold 노드로 이동하면서, 샤드를 자동으로 병합하거나 크기를 조정하여 리소스를 최적화할 수 있다.
  • 그러나 ILM은 샤드 크기 자체를 조정하는 기능은 없으며, 샤드가 배치되는 노드를 관리하는 역할을 한다.

 

5. 결론

  • 샤드는 검색 성능 최적화를 위해 개수를 적절히 조정해야 하며, 지나치게 많은 샤드는 오버헤드를 증가시킬 수 있다.
  • 샤드 크기는 10GB~50GB 사이로 유지하는 것이 권장되며, 예상 데이터 크기를 기반으로 샤드 개수를 결정해야 한다.
  • ILM(인덱스 수명 주기)은 샤드 크기를 직접 조정하지 않지만, 데이터를 노드별로 분산하여 운영 최적화를 돕는다.
  • 샤드 관리는 검색 성능과 직접적인 관련이 있으며, ILM은 데이터를 장기적으로 효율적으로 보관하는 관리 전략이다.