Amazon OpenSearch Service 클러스터가 빨간색 또는 노란색 상태인 이유는 무엇입니까?
최종 업데이트 날짜: 2021년 7월 30일
Amazon OpenSearch Service 클러스터가 빨간색 또는 노란색 클러스터 상태입니다. 이유가 무엇인가요?
간략한 설명
OpenSearch Service 콘솔의 모니터링 탭은 클러스터에서 가장 정상이지 않은 인덱스의 상태를 나타냅니다. 빨간색 상태를 보여주는 클러스터 상태는 클러스터가 다운되었음을 의미하지는 않습니다. 오히려 이 상태는 한 개 이상의 기본 샤드와 해당 복제본이 노드에 할당되지 않았음을 나타냅니다. 클러스터 상태가 노란색 상태로 표시되는 경우, 모든 인덱스의 기본 샤드가 클러스터의 노드에 할당됩니다. 그러나 하나 이상의 인덱스에 대한 복제본 샤드는 노드 중 하나에 할당되지 않습니다.
참고:먼저 빨간색 클러스터 상태를 해결할 때까지 도메인을 재구성하지 마세요. 빨간색 클러스터 상태일 때 도메인을 재구성하려고 하면 ‘처리 중’ 상태로 멈출 수 있습니다. 자세한 내용은 OpenSearch Service 도메인이 ‘처리 중’ 상태에서 멈춘 이유는 무엇입니까?를 참조하세요.
클러스터는 다음과 같은 이유로 빨간색 상태로 전환될 수 있습니다.
- 여러 데이터 노드 장애
- 인덱스에 손상되었거나 빨간색 샤드 사용
- 높은 JVM 메모리 압력 또는 CPU 사용률
- 디스크 공간 부족 또는 디스크 스큐
참고: 경우에 따라 자동화된 스냅샷에서 인덱스를 삭제한 다음 복원하여 빨간색 클러스터 상태를 해결할 수 있습니다.
클러스터는 다음과 같은 이유로 노란색 상태로 전환될 수 있습니다.
- 새 인덱스 생성
- 샤드 또는 디스크 스큐에 할당할 노드 부족
- 높은 JVM 메모리 압력
- 단일 노드 장애
- 샤드 할당 재시도의 최대 수 초과
참고: 노란색 클러스터 상태가 자체적으로 해결되지 않으면 인덱스 설정을 업데이트하거나 할당되지 않은 샤드를 수동으로 다시 라우팅하여 상태를 해결할 수 있습니다. 노란색 클러스터 상태가 자체 해결되지 않는 경우 근본 원인을 파악하고 문제를 해결하세요. 노란색 클러스터 상태를 방지하려면 클러스터 상태 모범 사례를 적용하세요.
해결 방법
할당되지 않은 샤드의 이유 식별
할당되지 않은 샤드를 식별하려면 다음 단계를 수행하세요.
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>'
그런 다음 사용 가능한 스냅샷을 확인하고 스냅샷에서 인덱스 복원:
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 Service 도메인 크기 조정 및 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’ 이상에서 늘리세요.
- 복제본 샤드를 비활성화하고 활성화하세요.
- 할당되지 않은 샤드를 수동으로 다시 시도하세요.
JVM 메모리 압력을 줄이는 방법에 대한 자세한 내용은 OpenSearch Service 클러스터에서 높은 JVM 메모리 압력을 해결하려면 어떻게 해야 합니까?를 참조하세요.
노드 장애
클러스터에 노드 오류가 발생하면 노드에 할당된 샤드가 할당되지 않게 됩니다. 지정된 인덱스에 사용할 수 있는 복제본 샤드가 없는 경우 단일 노드 장애로 인해 빨간색 상태가 발생할 수 있습니다. 두 개의 복제본 샤드와 다중 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 경보 및 클러스터 지표를 참조하세요.
- 모든 기본 샤드에 모든 노드 장애로부터 보호하기 위해 복제본 샤드가 있는지 확인하세요.
OpenSearch Service 모범 사례에 대한 자세한 내용은 OpenSearch Service 모범 사례를 참조하세요.