상위: Elasticsearch
요약
샤드(Shard)는 데이터를 분산 저장하는 단위이며, 레플리카(Replica)는 데이터의 가용성과 검색 성능을 위해 샤드를 복제한 것입니다.
Shard (Primary Shard)
- 인덱스의 데이터를 나누어 저장하는 논리적/물리적 단위입니다.
- 불변성: 인덱스 생성 시 설정한 Primary Shard 개수는 변경할 수 없습니다 (Reindex 필요).
- 각 샤드는 독립적인 Lucene 인덱스입니다.
Replica (Replica Shard)
- Primary Shard의 복제본입니다.
- 역할:
- 고가용성 (High Availability): Primary Shard 유실 시 Replica가 Primary로 승격되어 서비스 중단을 방지합니다.
- 성능 향상: 읽기(검색) 요청을 Primary와 Replica가 분산 처리합니다.
- 개수는 운영 중에 언제든지 변경 가능합니다.
Replication 동작 원리
- 쓰기 (Write): 요청이 Primary Shard에 전달되어 저장된 후, 모든 Replica Shard로 복제됩니다.
- 읽기 (Read): Coordinating Node가 Primary 또는 Replica 중 부하가 적은 곳으로 요청을 라우팅합니다.
고려 사항
- Primary와 Replica는 같은 노드에 저장될 수 없음 → 충분한 노드 필요
- 복제본 유지에 따른 비용 증가 (네트워크 트래픽, 저장소)
- 트레이드오프: 복제본 수 증가 → 안정성↑, 비용↑
설정 예제
PUT books
{
"settings": {
"index": {
"number_of_shards": 5,
"number_of_replicas": 1
}
}
}
es.indices.create(
index="book",
body={
"settings": {
"index": {
"number_of_shards": 5,
"number_of_replicas": 1
}
}
}
)