Amazon Elasticsearch Service 클러스터에서 균일하지 않은 샤드 배포를 재분배하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2020년 8월 7일

Amazon Elasticsearch Service(Amazon ES) 도메인의 디스크 공간이 노드 전체에 균일하게 배포되지 않았습니다. 그 결과 디스크 사용량이 크게 편향됩니다. 노드 배포를 재분배하려면 어떻게 해야 합니까?

간략한 설명

디스크 사용량이 크게 편향될 수 있는 이유는 다음과 같습니다.

  • 클러스터의 불균일한 샤드 크기. Amazon ES는 노드 간에 샤드 수를 균등하게 배포하지만 샤드 크기가 다를 경우 필요한 디스크 공간이 달라질 수 있습니다.
  • 노드의 사용 가능한 디스크 공간. 자세한 내용은 Elasticsearch 웹 사이트의 Disk-based shard allocation을 참조하십시오.
    잘못된 샤드 할당 전략. 자세한 내용은 Elasticsearch 샤드 할당 이해를 참조하십시오.

Elasticsearch 클러스터에서 샤드 할당을 재분배하려면 다음 접근 방식을 고려하십시오.

  • 샤드 할당, 샤드 크기 및 인덱스 샤딩 전략을 확인합니다.
  • 샤드 크기는 인덱스 전체에서 같아야 합니다.
  • 성능 향상을 위해 샤드 크기를 10GB~50GB 사이로 유지합니다.
  • Elasticsearch 클러스터에 데이터 노드를 추가합니다.
  • 샤딩 전략을 업데이트합니다.
  • 이전 인덱스나 사용되지 않은 인덱스를 삭제하여 디스크 공간을 확보합니다.

해결 방법

샤드 할당, 샤드 크기 및 인덱스 샤딩 전략 확인

각 노드에 할당된 샤드 수와 각 노드에서 사용된 디스크 공간의 양을 확인하려면 다음 API를 사용합니다.

$ curl -XGET ES_Endpoint/_cat/allocation?v

각 노드에 할당된 샤드와 각 샤드의 크기를 확인하려면 다음 API를 사용합니다.

$ curl -XGET ES_Endpoint/_cat/shards?v

참고: 이 API는 인덱스에 따라 샤드 크기가 다를 수 있음을 보여줍니다.

인덱스의 샤딩 전략이 균일하지 않으면 데이터 편향이 발생할 수 있습니다. 즉, 더 큰 인덱스의 샤드가 소수의 노드에만 상주합니다. 다음 API를 사용하여 인덱스에 대한 샤딩 전략을 확인합니다.

$ curl -XGET ES_Endpoint/_cat/indices?v

인덱스 전체의 샤드 크기가 같은지 확인

인덱스 크기가 크게 다른 경우 특정 인덱스 크기에 도달할 때 rollover index API를 사용하여 새 인덱스를 생성합니다. 또는 ISM(인덱스 상태 관리)을 사용하여 Amazon ES 버전 7.1 이상에 대한 새 인덱스를 생성할 수 있습니다. ISM을 사용하여 별칭을 롤링하는 방법에 대한 자세한 내용은 Elasticsearch 웹 사이트에서 rollover를 참조하십시오.

성능 향상을 위해 샤드 크기를 10GB~50GB 사이로 유지

대규모 인스턴스 클래스가 있는 경우 Amazon Elasticsearch Service용 페타바이트 규모를 사용하여 샤드 크기를 결정합니다. 예를 들어 여러 i3.16xlarge.elasticsearch 인스턴스가 있는 Amazon ES 도메인에서는 더 많은 리소스를 사용할 수 있으므로 최대 100GB의 샤드 크기를 지원할 수 있습니다. 샤딩 전략에 대한 자세한 내용은 샤드 수 선택을 참조하십시오.

Elasticsearch 클러스터에 데이터 노드 추가

Elasticsearch 클러스터의 디스크 사용량이 높아지면 클러스터에 데이터 노드를 추가합니다. 데이터 노드를 추가하면 더 많은 리소스가 추가되므로 클러스터 성능이 개선될 수 있습니다.

참고: 사용 가능한 스토리지 공간이 부족한 경우 Amazon ES는 클러스터를 자동으로 재분배하지 않습니다. 따라서 데이터 노드에 여유 스토리지 공간이 부족하면 클러스터가 모든 쓰기를 차단합니다. 디스크 공간 관리에 대한 자세한 내용은 Amazon Elasticsearch Service(Amazon ES) 도메인에 스토리지 공간을 추가하려면 어떻게 해야 합니까?를 참조하십시오.

샤딩 전략 업데이트

기본적으로 Amazon ES는 각 인덱스를 5개의 기본 샤드로 나누는 5:1 샤딩 전략을 사용합니다. 각 인덱스 내의 각 기본 샤드에는 자체 복제본도 있습니다. Amazon ES는 별도의 데이터 노드에 기본 샤드 및 복제본 샤드를 자동으로 할당하여 장애가 발생할 경우 백업이 가능하도록 합니다.

Amazon ES 기본 동작을 수정하려면 샤드가 크기에 따라 균일하게 배포되도록 인덱스를 설계합니다.

  • 기존 인덱스의 경우 reindex API를 사용하여 기본 샤드 수를 변경합니다. _reindex API를 사용하면 작은 인덱스를 큰 인덱스로 병합하거나 큰 인덱스를 분할할 수 있습니다. 큰 인덱스를 더 많은 기본 샤드로 분할하면 샤드 크기가 줄어듭니다.
  • 새 인덱스의 경우 template API를 사용하여 기본 샤드 및 복제본 샤드 수를 정의합니다.

그런 다음 샤드에 대한 인덱스 설정을 업데이트합니다. 자세한 내용은 Elasticsearch 웹 사이트에서 Update indices settings를 참조하십시오.

이전 인덱스 또는 사용되지 않은 인덱스를 삭제하여 디스크 공간 확보

Amazon ES 버전 7.1 이상은 인덱스 상태 관리를 지원합니다. ISM을 사용하면 설정된 기간 후에 이전 인덱스 또는 사용되지 않은 인덱스를 삭제하도록 사용자 지정 관리 정책을 정의할 수 있습니다.


이 문서가 도움이 되었습니까?


결제 또는 기술 지원이 필요합니까?