AWS re:Post을(를) 사용하면 다음에 동의하게 됩니다. AWS re:Post 이용 약관

Amazon OpenSearch Service 클러스터가 빨간색 또는 노란색 상태인 이유는 무엇입니까?

6분 분량
0

Amazon OpenSearch Service 클러스터가 빨간색 또는 노란색 클러스터 상태입니다.

간략한 설명

OpenSearch Service 콘솔의 모니터링 탭에는 클러스터에서 상태가 가장 낮은 인덱스의 상태가 표시됩니다. 클러스터 상태가 빨간색 상태로 표시된다고 해서 클러스터가 다운된 것은 아닙니다. 이 상태는 하나 이상의 기본 샤드와 해당 복제본이 노드에 할당되지 않았음을 나타냅니다. 클러스터 상태가 노란색 상태로 표시되면 모든 인덱스의 기본 샤드가 클러스터의 노드에 할당됩니다. 하지만 하나 이상의 복제본 샤드는 어떤 노드에도 할당되지 않습니다.

참고: 빨간색 클러스터 상태를 먼저 해결할 때까지 도메인을 재구성하지 마세요. 빨간색 클러스터 상태일 때 도메인을 재구성하려고 하면 “처리 중” 상태로 멈출 수 있습니다. 클러스터가 “처리 중” 상태에서 멈춘 것에 대한 자세한 내용은 OpenSearch Service 도메인이 "처리 중" 상태에서 멈춘 이유는 무엇입니까?를 참조하세요.

클러스터가 빨간색 상태로 전환되는 이유는 빨간색 클러스터 상태를 참조하세요.

참고: 경우에 따라 자동화된 스냅샷에서 인덱스를 삭제한 다음 복원하여 빨간색 클러스터 상태를 해결할 수 있습니다.

클러스터가 노란색 상태로 전환되는 이유는 노란색 클러스터 상태를 참조하세요.

참고: 노란색 클러스터 상태가 저절로 해결되지 않는 경우 인덱스 설정을 업데이트하거나 할당되지 않은 샤드를 수동으로 다시 라우팅하여 상태를 해결할 수 있습니다. 노란색 클러스터 상태가 자동으로 해결되지 않으면 근본 원인을 식별하고 문제를 해결하세요. 노란색 클러스터 상태를 방지하려면 클러스터 상태 모범 사례를 적용하세요.

해결 방법

샤드가 할당되지 않은 이유 파악

AWS Systems Manager Automation 런북 또는 수동 curl 명령을 사용하여 샤드가 할당되지 않은 이유를 파악할 수 있습니다.

자동화 런북 사용

AWS Systems Manager 콘솔에서 AWSSupport-TroubleshootOpenSearchRedYellowCluster로 이동합니다. 그리고 다음 단계에 따라 자동화를 구성합니다.

curl 명령 사용

할당되지 않은 샤드를 식별하려면 다음 단계를 수행하세요.

  1. 할당되지 않은 샤드를 나열합니다.

    $ curl -XGET 'domain-endpoint/_cat/shards?h=index,shard,prirep,state,unassigned.reason' | grep UNASSIGNED
  2. 샤드가 할당되지 않은 이유에 대한 세부 정보를 검색합니다.

    $ curl -XGET 'domain-endpoint/_cluster/allocation/explain?pretty' -H 'Content-Type:application/json' -d'{
         "index": "<index name>",
         "shard": <shardId>,
         "primary": <true or false>
    }
  3. (선택 사항) 빨간색 클러스터 상태의 경우 우려 인덱스를 삭제하고 근본 원인을 식별하여 해결하세요.

    curl -XDELETE 'domain-endpoint/<index names>'
  4. 그런 다음 사용 가능한 스냅샷을 식별하고 스냅샷에서 인덱스를 복원합니다.

    curl -XGET 'domain-endpoint/_snapshot?pretty'

노란색 클러스터 상태의 경우 샤드가 할당되도록 근본 원인을 해결하세요.

빨간색 또는 노란색 클러스터 상태 문제 해결

샤드에 할당할 노드가 충분하지 않음

복제본 샤드는 기본 샤드와 동일한 노드에 할당되지 않습니다. 복제본 샤드가 있는 단일 노드 클러스터는 항상 노란색 클러스터 상태로 초기화됩니다. OpenSearch Service에서 복제본을 할당할 수 있는 다른 사용 가능한 노드가 없기 때문에 단일 노드 클러스터는 이러한 방식으로 초기화됩니다.

또한 OpenSearch Service 버전 7.x 이상에 대한 cluster.max_shards_per_node 설정의 기본 한도는 "1,000"입니다. cluster.max_shards_per_node 설정을 기본값인 "1000"으로 유지하는 것이 가장 좋습니다. OpenSearch Service에서 샤드를 할당하는 방법을 제어하도록 샤드 할당 필터를 설정하면 필터링된 노드가 충분하지 않아 샤드가 할당되지 않을 수 있습니다. 이러한 노드 부족을 방지하려면 노드 수를 늘리세요. 모든 기본 샤드의 복제본 수가 데이터 노드 수보다 적어야 합니다. 복제본 샤드의 수를 줄일 수도 있습니다. 자세한 내용은 OpenSearch 서비스 도메인 크기 조정OpenSearch Service 샤드 할당 이해하기항목을 참조하세요.

디스크 공간 부족 또는 디스크 스큐

디스크 공간이 충분하지 않은 경우 클러스터가 빨간색 또는 노란색 상태로 전환될 수 있습니다. OpenSearch Service에서 샤드를 배포하기 전에 샤드를 수용할 수 있는 충분한 디스크 공간이 있어야 합니다.

클러스터의 각 노드에 사용할 수 있는 스토리지 공간을 확인하려면 다음 구문을 사용하세요.

$ curl domain-endpoint/_cat/allocation?v

스토리지 공간 문제에 대한 자세한 내용은 OpenSearch Service 도메인의 스토리지 공간 부족 문제를 해결하려면 어떻게 해야 합니까?를 참조하세요.

디스크 스큐가 심하면 일부 데이터 노드의 스토리지 공간 부족 문제가 발생할 수도 있습니다. 샤드를 재할당하기로 결정하면 샤드를 배포할 때 샤드가 할당되지 않을 수 있습니다. 이 문제를 해결하려면 OpenSearch Service 클러스터에서 고르지 않은 샤드 분포를 재조정하려면 어떻게 해야 합니까?를 참조하세요.

디스크 기반 샤드 할당 설정으로 인해 샤드가 할당되지 않을 수도 있습니다. 예를 들어 cluster.routing.allocation.disk.watermark.low 지표가 50GB로 설정된 경우 지정된 양의 디스크 공간을 샤드 할당에 사용할 수 있어야 합니다.

현재 디스크 기반 샤드 할당 설정을 확인하려면 다음 구문을 사용하세요.

$ curl -XGET domain-endpoint/_cluster/settings?include_defaults=true&flat_settings=true

디스크 공간 문제를 해결하려면 다음 접근 방식을 고려하세요.

  • 노란색 및 빨간색 클러스터의 불필요한 인덱스를 모두 삭제합니다.
  • 빨간색 클러스터의 빨간색 인덱스 삭제
  • EBS 볼륨을 스케일업합니다.
  • 더 많은 데이터 노드를 추가합니다.

참고: 클러스터가 빨간색 상태일 때는 클러스터의 구성을 변경하지 마세요. 빨간색 클러스터 상태일 때 도메인을 재구성하려고 하면 “처리 중” 상태로 멈출 수 있습니다.

높은 JVM 메모리 사용량

모든 샤드 할당에는 CPU, 힙 공간, 디스크 및 네트워크 리소스가 사용됩니다. 지속적으로 높은 수준의 JVM 메모리가 사용되면 샤드 할당에 실패할 수 있습니다. 예를 들어 JVM 메모리 사용량이 95%를 초과하면 메모리 상위 회로 차단기가 시작됩니다. 그러면 할당 스레드가 취소되고 샤드는 할당되지 않은 상태로 남습니다.

이 문제를 해결하려면 먼저 JVM 메모리 사용량 수준을 낮추세요. JVM 메모리 사용량을 줄인 후에는 클러스터를 녹색 상태로 되돌리려면 다음과 같은 추가 팁을 고려해 보세요.

  • 기본 샤드 재시도 값을 “5" 이상에서 늘리세요.
  • 복제본 샤드를 비활성화하고 활성화합니다.
  • 할당되지 않은 샤드를 수동으로 재시도하세요.

재시도 값을 높이기 위한 예제 API:

PUT <index-name>/_settings{
 "index.allocation.max_retries" : <value>
}

JVM 메모리 사용량을 줄이는 방법에 대한 자세한 내용은 OpenSearch Service 클러스터의 높은 JVM 메모리 사용량 문제를 해결하려면 어떻게 해야 합니까?를 참조하세요.

노드 장애

클러스터에 노드 장애가 발생하면 노드에 할당된 샤드가 할당되지 않습니다. 지정된 인덱스에 사용할 수 있는 복제본 샤드가 없는 경우 단일 노드 장애라도 빨간색 상태가 발생할 수 있습니다. 복제본 샤드 2개와 다중 AZ 배포를 사용하여 하드웨어 장애로 인한 데이터 손실로부터 클러스터를 보호합니다.

모든 인덱스에 복제본 샤드가 있는 경우 단일 노드 장애로 인해 클러스터가 일시적으로 노란색 상태가 될 수 있습니다. 클러스터가 일시적으로 노란색 상태가 되면 노드가 다시 정상 상태가 되는 즉시 OpenSearch Service가 자동으로 복구됩니다. 또는 샤드가 새 노드에 할당되면 OpenSearch Service가 복구됩니다.

Amazon CloudWatch 지표를 확인하여 노드 장애를 확인하세요. 노드 장애 식별에 대한 자세한 내용은 장애가 발생한 클러스터 노드를 참조하세요.

참고: 또한 각 인덱스에 하나의 복제본 샤드를 할당하거나 전용 프라이머리 노드를 사용하여 영역 인지를 활성화하는 것이 좋습니다. 자세한 내용은 Elasticsearch 웹 사이트의 장애 대처를 참조하세요.

최대 재시도 횟수 초과

OpenSearch Service에서 클러스터는 샤드 할당을 위한 최대 시간 제한(5,000ms) 또는 재시도 횟수(5)를 초과해서는 안 됩니다. 클러스터가 최대 임계값에 도달한 경우 샤드 할당을 수동으로 시작해야 합니다. 샤드 할당을 수동으로 시작하려면 인덱스의 복제본 샤드를 비활성화하고 다시 활성화합니다.

클러스터 구성을 변경해도 샤드 할당이 시작될 수 있습니다. 샤드 할당에 대한 자세한 내용은 Elasticsearch 웹 사이트에서 모든 샤드에 충분한 가치 부여를 참조하세요.

참고: 클러스터의 워크로드가 많은 경우 샤드 할당을 수동으로 시작하는 것은 좋은 방법이 아닙니다. 인덱스에서 모든 복제본을 제거하면 인덱스는 기본 샤드에만 의존해야 합니다. 노드에 장애가 발생하면 기본 샤드가 할당되지 않은 상태로 남아 있기 때문에 클러스터가 빨간색 상태로 전환됩니다.

복제본 샤드를 비활성화하려면 number_of_replicas 값을 “0"으로 업데이트하세요.

$ curl -XPUT 'domain-endpoint/<indexname>/_settings' -H 'Content-Type: application/json' -d'{
     "index" : {
          "number_of_replicas" : 0
     }
}

또한 index.auto_expand_replicas 설정이 "false"로 설정되어 있는지 확인하세요. 클러스터가 녹색 상태로 돌아오면 index.number_of_replicas 값을 원하는 값으로 다시 설정하여 복제본 샤드에 대한 할당을 시작할수 있습니다. 샤드 할당이 성공하면 클러스터가 녹색 상태가 됩니다.

클러스터 상태 모범 사례

노란색 또는 빨간색 클러스터 상태를 해결하려면 다음 모범 사례를 고려하세요.

  • AutomatedSnapshotFailure에 대한 권장 Amazon CloudWatch 경보를 설정하세요. 경보를 통해 클러스터가 빨간색 상태가 되었을 때 인덱스를 복원할 수 있는 스냅샷이 있는지 확인할 수 있습니다.
  • 클러스터의 워크로드가 지속적으로 많은 경우 클러스터를 확장하세요. 클러스터 확장에 대한 자세한 내용은 OpenSearch Service 도메인을 확장하려면 어떻게 해야 합니까?를 참조하세요.
  • 디스크 사용량, JVM 메모리 사용량, CPU 사용량을 모니터링하고 설정된 임계값을 초과하지 않는지 확인하세요. 자세한 내용은 권장 CloudWatch 경보클러스터 지표를 참조하세요.
  • 노드 장애로부터 보호하기 위해 모든 기본 샤드에 복제본 샤드가 있어야 합니다.

자세한 내용은 Amazon OpenSearch Serivce의 운영 모범 사례를 참조하세요.