Elasticsearch Shards

JunMyung Lee·2024년 4월 8일
0

Elasticsearch

목록 보기
37/41

Elasticsearch에서는 한번 생성된 Primary Shards의 개수는 변경이 불가능
(Replica Shards는 가능)

  • Shards 독립적이고 Master Node에 의해서 세그먼트가 분배
  • Primary Shards의 개수를 변경하면 기존의 모든 데이터를 재 분배
    개수가 늘어나면 Lucene segments를 잘게 쪼개 새로운 Shards에 데이터를 보내야함
    개수가 작아지면 없어지는 ShardsLecene segments를 기존 Shards에 추가해야함

이렇게 많은 리소스가 소모되는 특성으로 인해서 Primary Shards의 개수는 조정이 불가능하다

정책에 따라서 새로운 정적색인(Static)을 진행하거나 _reindex를 통해 새로운 인덱스 생성시 Primary Shards개수를 조절하여 수행 처리한다.

Replica Shards 개수

  • 장애 복구를 위해 최소 1개 이상의 복제본은 가지고 있어야 하나, 너무 많은 복제본은 과도한 리소스가 소모되어 전체 색인 성능 저하가 이루어진다
  • Primary Shards로 데이터 색인 시, Replica Shards에도 동일하게 색인된다.
    * 이로 인해 Replica Shards에서도 검색을 수행할 수 있어서 분산처리가 가능

Replica Shards가 많아질 수록 읽기성능은 올라가지만 색인 성능은 점점 떨어진다. (색인 대상이 많아짐)
검색은 각 Shards가 독립적으로 검색 수행 후 최종적으로 1개의 결과로 합쳐서 제공되기에, 다수의 Shards로 분산될수록 검색 속도도 비례해서 증가

Shards 제한

  • 클러스터에 존재하는 ShardsMaster Node에서 관리하며, Shards가 많아질 수록 Master Node 부하 증가
  • Shards의 용량은 10GB ~ 50GB를 권장하며 50GB는 넘지 말아야함
  • 1개의 Shards는 최대 JavaInteger.MAX_VALUE - 128
    * 2,147,483,519 ( 약20억 )
  • 1개의 인덱스는 최대 1024의 Shards
    2,147,483,519 1024 ( 약 2조 )
profile
11년차 검색개발자 입니다. 여러 지식과 함께 실제 서비스를 운영 하면서 발생한 이슈에 대해서 정리하고 공유하고자 합니다.

0개의 댓글