Amazon OpenSearch Service 클러스터가 핫 노드 및 웜 노드 인덱스에 대한 “인 메모리 샤드 잠금을 가져오지 못했습니다.”라는 오류 메시지와 함께 노란색으로 바뀌었습니다.
간략한 설명
샤드가 OpenSearch Service 샤드 할당에 대해 설정된 임계값 내에서 인 메모리 잠금을 얻지 못하면 다음 오류가 발생합니다.
"failed_allocation_attempts" : 5,
"details" : "failed shard on node []: failed to create shard, failure IOException[failed to obtain in-memory shard lock]; nested: ShardLockObtainFailedException[[][5]: obtaining shard lock timed out after 5000ms]; ",
.
.
"explanation" : "shard has exceeded the maximum number of retries [5] on failed allocation attempts - manually call [/_cluster/reroute?retry_failed=true] to retry, [unassigned_info[[reason=ALLOCATION_FAILED], at[], failed_attempts[5], delayed=false, details[failed shard on node [lga-THKoSXykhSDbghN57A]: failed to create shard, failure IOException[failed to obtain in-memory shard lock]; nested: ShardLockObtainFailedException[[evelog-zdn-2020.04.28][5]: obtaining shard lock timed out after 5000ms]; ], allocation_status[no_attempt]]]"
OpenSearch Service에서 클러스터는 샤드 할당에 대한 시간 제한(5000ms) 및 최대 재시도 횟수(5회)를 초과할 수 없습니다. 오류 메시지를 해결하려면 핫 노드의 인덱스에 대해 다음과 같은 문제 해결 방법을 사용하세요.
참고: 워크로드가 많은 OpenSearch Service 클러스터의 복제본 개수를 업데이트하는 것은 모범 사례가 아닙니다.
해결 방법
노란색 클러스터 상태 문제 해결
노드 또는 네트워크 장애로 인해 OpenSearch Service 클러스터가 노란색 상태가 될 수 있습니다. 내부 하드웨어 문제로 인해 클러스터의 노드에 장애가 발생하면 기존 노드가 새 노드로 교체됩니다. 대체품은 OpenSearch Service에 의해 자동으로 감지됩니다. 하지만 이전에 사용한 리소스가 확보되지 않으면 장애가 발생한 노드의 복제본 샤드는 할당되지 않습니다. 이 기간 동안 리더 노드는 복제본 샤드 할당을 5회 시도합니다. 복제본 샤드를 할당하려는 5번의 시도가 성공하지 못하면 클러스터가 빨간색 또는 노란색 상태가 됩니다.
참고: (Elasticsearch 웹사이트에 있는) 클러스터 할당 설명 API를 실행하여 할당되지 않은 샤드를 진단하는 것이 가장 좋습니다. 클러스터가 노란색 상태로 전환되는 원인이 되는 인덱스를 식별하려면 다음 쿼리를 실행합니다.
GET /_cat/indices?v&health=yellow
그리고 다음 쿼리를 사용하여 클러스터의 할당되지 않은 샤드의 근본 원인을 식별하세요.
GET _cluster/allocation/explain
참고: OpenSearch Service에서는 클러스터 경로 변경 API를 인식하지 못합니다. 지원되는 API 작업에 대한 자세한 내용은 주요 API 차이점을 참조하세요.
최대 재시도 설정 늘리기
OpenSearch Service 클러스터를 녹색 상태로 되돌리려면 각 노란색 인덱스의 최대 재시도 횟수를 늘리세요.
PUT /<yellow-index-name>/_settings
{
"index.allocation.max_retries": 10
}
이 API 호출을 실행하면 리더 노드가 클러스터의 지정된 인덱스에 대한 샤드 할당을 재시도합니다.
참고: 최대 재시도 설정을 늘리면 샤드가 자동으로 할당되지 않는 경우가 있습니다. 샤드를 수동으로 할당해야 할 수도 있습니다.
복제본 개수 업데이트
**중요:**OpenSearch Service 클러스터 부하가 높은 경우에는 이 접근 방식을 사용하지 마세요. 인덱스에서 모든 복제본을 제거하는 경우 인덱스는 기본 샤드에만 의존해야 합니다. 노드가 다운되면 기본 샤드가 할당되지 않아 클러스터가 빨간색 클러스터 상태가 될 수 있습니다.
복제본 개수를 변경하려면 다음 단계를 수행하세요.
1. 영향을 받는 인덱스 개수가 0이 되도록 모든 복제본을 제거합니다.
\PUT /<yellow-index-name>/_settings
{
"index": {
"number_of_replicas": 0
}
}
2. 복제본 개수를 원하는 개수로 다시 변경합니다.
PUT /<yellow-index-name>/_settings
{
"index": {
"number_of_replicas": 1
}
}
인덱스가 웜 노드에 있는 경우 다음 문제 해결 단계를 참조하세요.
웜 인덱스가 자동으로 할당되어 녹색 상태로 돌아올 때까지 기다립니다.
웜 노드에 있는 인덱스의 노란색 클러스터 상태는 도메인에 리소스가 충분하면 자동으로 녹색으로 돌아갑니다. 웜 인덱스의 데이터는 Amazon Simple Storage Service(Amazon S3)에서 지원되므로 웜 인덱스가 노란색 또는 빨간색 상태일 때 데이터가 손실될 위험이 없습니다.
다음 시나리오에서는 AWS Support에 문의하여 할당되지 않은 웜 인덱스를 수동으로 다시 라우팅하세요.
- 몇 시간이 지나도 노란색 클러스터 상태가 녹색으로 돌아오지 않습니다.
- “샤드가 웜 인덱스에 대한 인 메모리 잠금 오류를 가져오지 못했습니다.”라는 오류가 표시되고 몇 시간이 지나도 노란색 클러스터 상태가 녹색으로 돌아오지 않습니다.
관련 정보
Amazon OpenSearch Service 클러스터가 빨간색 또는 노란색 상태인 이유는 무엇인가요?
Amazon OpenSearch Service 노드에 장애가 발생한 이유는 무엇인가요?
자세한 내용을 보려면 Amazon OpenSearch Service 클러스터의 높은 JVM 메모리 부족 문제를 해결하려면 어떻게 해야 하나요?를 참조하세요.