블로그

Elasticsearch 인덱스에서 복제본 수를 구성하는 방법

Elasticsearch 인덱스에서 검색 성능을 개선하고 노드 장애에 대한 복원력을 제공하기 위해 number_of_replicas를 구성하는 방법을 알아보세요.

New to Elasticsearch? Join our getting started with Elasticsearch webinar. You can also start a free cloud trial or try Elastic on your machine now.

Elasticsearch는 대량의 데이터를 처리하고 고가용성을 제공할 수 있는 분산 시스템으로 설계되었습니다. 이를 가능하게 하는 핵심 기능 중 하나는 number_of_replicas 설정으로 제어되는 인덱스 복제 개념입니다. 이 문서에서는 이 설정의 세부 사항과 그 의미, 올바르게 구성하는 방법에 대해 자세히 설명합니다.

Elasticsearch에서 복제본의 역할

Elasticsearch에서 인덱스는 여러 기본 샤드에 걸쳐 분할된 문서의 모음입니다. 각 기본 샤드는 독립적인 Apache Lucene 인덱스이며, 인덱스 내의 문서는 모든 기본 샤드에 분산되어 있습니다. 고가용성과 데이터 이중화를 보장하기 위해 Elasticsearch는 각 샤드에 복제본이라고 하는 하나 이상의 복사본을 가질 수 있도록 합니다. number_of_replicas 설정은 인덱스의 각 기본 샤드에 대해 Elasticsearch가 생성하는 복제 샤드(복사본)의 수를 제어합니다. 기본적으로 Elasticsearch는 각 기본 샤드에 대해 하나의 복제본을 생성하지만 시스템의 요구 사항에 따라 변경할 수 있습니다.

수_오브_복제본 구성하기

number_of_replicas 설정은 인덱스 생성 시 구성하거나 나중에 업데이트할 수 있습니다. 인덱스 생성 중에 설정하는 방법은 다음과 같습니다:

PUT /my_index
{
  "settings": {
    "number_of_replicas": 2
  }
}

이 예제에서 Elasticsearch는 my_index 인덱스의 각 기본 샤드에 대해 두 개의 복제본을 생성합니다.

기존 인덱스에 대한 number_of_replicas 설정을 업데이트하려면 _settings API를 사용하면 됩니다:

PUT /my_index/_settings
{
  "number_of_replicas": 3
}

이 명령은 my_index 인덱스를 업데이트하여 각 기본 샤드에 대해 3개의 복제본을 갖도록 합니다.

number_of_replicas 설정의 의미

number_of_replicas 설정은 Elasticsearch 클러스터의 성능과 복원력에 상당한 영향을 미칩니다. 다음은 고려해야 할 몇 가지 핵심 사항입니다:

  1. 데이터 중복성 및 가용성: number_of_replicas 을 늘리면 각 샤드의 복사본을 더 많이 생성하여 데이터의 가용성이 향상됩니다. 노드에 장애가 발생해도 Elasticsearch는 나머지 노드에 있는 복제본 샤드의 데이터를 계속 제공할 수 있습니다.

  2. 검색 성능: 복제본 샤드는 읽기 요청을 처리할 수 있으므로 복제본이 많으면 더 많은 샤드에 부하를 분산하여 검색 성능을 향상시킬 수 있습니다.

  3. 쓰기 성능: 그러나 각 쓰기 작업은 샤드의 모든 복사본에서 수행해야 합니다. 따라서 number_of_replicas 이 높을수록 각 쓰기마다 수행해야 하는 작업 수가 증가하므로 인덱싱 성능이 느려질 수 있습니다.

  4. 스토리지 요구 사항: 복제본이 많을수록 더 많은 저장 공간이 필요합니다. 클러스터에 추가 복제본을 저장할 수 있는 충분한 용량이 있는지 확인해야 합니다.

  5. 노드 장애에 대한 복원력: number_of_replicas 은 클러스터의 노드 수를 고려하여 설정해야 합니다. number_of_replicas 이 노드 수보다 크면 클러스터는 데이터 손실 없이 여러 노드의 장애를 견딜 수 있습니다.

number_of_replicas 설정 모범 사례

최적의 number_of_replicas 설정은 시스템의 특정 요구 사항에 따라 다릅니다. 그러나 다음은 몇 가지 일반적인 모범 사례입니다:

  • 단일 노드 클러스터의 경우, 복제본을 보관할 다른 노드가 없으므로 number_of_replicas 을 0으로 설정해야 합니다.

  • 멀티노드 클러스터의 경우 데이터 중복성과 고가용성을 보장하려면 number_of_replicas 을 최소 1로 설정해야 합니다.

  • 검색 성능이 우선순위라면 number_of_replicas 을 늘리는 것이 좋습니다. 하지만 쓰기 성능 및 스토리지 요구 사항과의 절충점을 염두에 두어야 합니다.

  • 항상 클러스터에 추가 복제본을 저장할 수 있는 충분한 용량이 있는지 확인하세요.

관련 콘텐츠

Azure AKS 자동에 Elasticsearch를 배포하는 방법

Eduard Martin

Elasticsearch에서 구조화된 문서에 대한 재귀 청크 구성하기

Daniel Rubinstein

Kibana의 Elasticsearch 쿼리 규칙 UI 소개

Jhon Guzmán

AWS Marketplace에 Elasticsearch를 배포하는 방법

Eduard Martin

Elasticsearch 샤드와 복제본: 실용적인 가이드

Piotr Przybyl