Skip to content
SON BLOG
Go back

OpenSearch 샤드 구성 — number_of_shards 설정 가이드

Edit page

number_of_shards는 OpenSearch에서 인덱스를 물리적으로 분산 저장하고 병렬 처리 성능을 확보하기 위한 핵심 설정이다. 이 값은 인덱스 생성 후에는 변경할 수 없기 때문에, 인덱스 설계 시 신중하게 결정해야 한다.

1. number_of_shards의 역할

역할설명
데이터 분산 저장하나의 인덱스를 여러 노드에 나누어 저장함으로써 디스크 I/O 병목을 줄이고 부하를 분산시킬 수 있다.
병렬 검색 처리여러 샤드가 동시에 쿼리를 처리할 수 있어 검색 응답 속도를 향상시킬 수 있다.
수평 확장 지원클러스터에 노드가 추가되면 샤드가 자동으로 분산되어 확장성이 향상된다.

2. 설정 기준

샤드는 너무 적어도 확장성과 처리 성능에 제약이 생기며, 반대로 너무 많아도 리소스 낭비와 성능 저하를 유발할 수 있다. 일반적으로 샤드 하나의 크기는 약 10~30GB가 이상적이다.

예상 인덱스 데이터 크기권장 샤드 수비고
10GB 이하1단일 샤드로 충분하다.
10~50GB2~3중소 규모 데이터에 적합하다.
50~200GB3~5다중 노드 환경에서의 안정적인 분산을 도모할 수 있다.
200GB 이상5~10 이상대용량 처리 및 확장성을 고려해야 한다.

과도한 샤드는 file descriptor 소모, heap memory 증가, segment 병합 비용 등을 유발하므로 주의가 필요하다.

3. 설정 예시

{
  "settings": {
    "number_of_shards": 3,
    "number_of_replicas": 1
  }
}

4. 최적 설계 요령

샤드 수 × (replica 수 + 1) ≈ 총 데이터 노드 수
총 샤드 수 ≤ 데이터 노드 수 × 20

이 기준을 초과할 경우, 노드당 리소스 한계를 초과하거나 GC, 검색 지연 등의 문제가 발생할 수 있다.

5. 결론

number_of_shards 설정은 단순한 숫자가 아닌, 인덱스 성능, 확장성, 안정성에 영향을 미치는 중요한 요소이다.
운영 환경에 맞는 데이터 규모와 노드 수를 고려하여 적절한 수치를 설정하는 것이 클러스터의 장기적인 안정성과 성능 유지에 도움이 된다.

필요하다면 예상 데이터 크기를 입력받아 자동으로 샤드 수를 추천해주는 계산 도구도 함께 구축할 수 있다.


Edit page
Share this post:

Previous Post
OpenSearch 클러스터 구성 전략 — node.roles와 샤드 분산 설계
Next Post
OpenSearch ML 모델 배포 시 메모리 99% 점유 원인과 해결법