Elasticsearch가 처음이신가요? Elasticsearch 입문용 웨비나에 참여하세요. 지금 무료 클라우드 체험을 시작하거나, 내 기기에서 Elastic을 사용해 볼 수 있습니다.
Elasticsearch는 대량의 데이터를 처리하고 고가용성을 제공할 수 있는 분산 시스템으로 설계되었습니다. 이를 가능하게 하는 핵심 기능 중 하나는 number_of_replicas 설정으로 제어되는 인덱스 복제 개념입니다. 이 문서에서는 이 설정의 세부 사항과 그 의미, 올바르게 구성하는 방법에 대해 자세히 설명합니다.
Elasticsearch에서 복제본의 역할
Elasticsearch에서 인덱스는 여러 기본 샤드에 걸쳐 분할된 문서의 모음입니다. 각 기본 샤드는 독립적인 Apache Lucene 인덱스이며, 인덱스 내의 문서는 모든 기본 샤드에 분산되어 있습니다. 고가용성과 데이터 이중화를 보장하기 위해 Elasticsearch는 각 샤드에 복제본이라고 하는 하나 이상의 복사본을 가질 수 있도록 합니다.number_of_replicas 설정은 인덱스의 각 기본 샤드에 대해 Elasticsearch가 생성하는 복제 샤드(복사본)의 수를 제어합니다. 기본적으로 Elasticsearch는 각 기본 샤드에 대해 하나의 복제본을 생성하지만 시스템의 요구 사항에 따라 변경할 수 있습니다.
수_오브_복제본 구성하기
number_of_replicas 설정은 인덱스 생성 시 구성하거나 나중에 업데이트할 수 있습니다. 인덱스 생성 중에 설정하는 방법은 다음과 같습니다:
이 예제에서 Elasticsearch는 my_index 인덱스의 각 기본 샤드에 대해 두 개의 복제본을 생성합니다.
기존 인덱스에 대한 number_of_replicas 설정을 업데이트하려면 _settings API를 사용하면 됩니다:
이 명령은 my_index 인덱스를 업데이트하여 각 기본 샤드에 대해 3개의 복제본을 갖도록 합니다.
number_of_replicas 설정의 의미
number_of_replicas 설정은 Elasticsearch 클러스터의 성능과 복원력에 상당한 영향을 미칩니다. 다음은 고려해야 할 몇 가지 핵심 사항입니다:
- 데이터 중복성 및 가용성:
number_of_replicas을 늘리면 각 샤드의 복사본을 더 많이 생성하여 데이터의 가용성이 향상됩니다. 노드에 장애가 발생해도 Elasticsearch는 나머지 노드에 있는 복제본 샤드의 데이터를 계속 제공할 수 있습니다. - 검색 성능: 복제본 샤드는 읽기 요청을 처리할 수 있으므로 복제본이 많으면 더 많은 샤드에 부하를 분산하여 검색 성능을 향상시킬 수 있습니다.
- 쓰기 성능: 그러나 각 쓰기 작업은 샤드의 모든 복사본에서 수행해야 합니다. 따라서
number_of_replicas이 높을수록 각 쓰기마다 수행해야 하는 작업 수가 증가하므로 인덱싱 성능이 느려질 수 있습니다. - 스토리지 요구 사항: 복제본이 많을수록 더 많은 저장 공간이 필요합니다. 클러스터에 추가 복제본을 저장할 수 있는 충분한 용량이 있는지 확인해야 합니다.
- 노드 장애에 대한 복원력:
number_of_replicas은 클러스터의 노드 수를 고려하여 설정해야 합니다.number_of_replicas이 노드 수보다 크면 클러스터는 데이터 손실 없이 여러 노드의 장애를 견딜 수 있습니다.
number_of_replicas 설정 모범 사례
최적의 number_of_replicas 설정은 시스템의 특정 요구 사항에 따라 다릅니다. 그러나 다음은 몇 가지 일반적인 모범 사례입니다:
- 단일 노드 클러스터의 경우, 복제본을 보관할 다른 노드가 없으므로
number_of_replicas을 0으로 설정해야 합니다. - 멀티노드 클러스터의 경우 데이터 중복성과 고가용성을 보장하려면
number_of_replicas을 최소 1로 설정해야 합니다. - 검색 성능이 우선순위라면
number_of_replicas을 늘리는 것이 좋습니다. 하지만 쓰기 성능 및 스토리지 요구 사항과의 절충점을 염두에 두어야 합니다. - 항상 클러스터에 추가 복제본을 저장할 수 있는 충분한 용량이 있는지 확인하세요.




