트러블슈팅&기술선택
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은 데이터를 장기적으로 효율적으로 보관하는 관리 전략이다.