Amazon OpenSearch Service에서 “failed to obtain in-memory shard lock” 예외를 해결하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2021년 8월 6일

Amazon OpenSearch Service 클러스터가 노란색으로 바뀌었고 “failed to obtain in-memory shard lock” 오류 메시지가 표시됩니다. 이 오류 메시지가 나타나는 이유는 무엇이며 어떻게 해결합니까?

간략한 설명

샤드가 샤드 할당에 대한 메모리 내 잠금(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에서 클러스터는 샤드 할당에 대한 시간 제한(5,000ms)과 최대 재시도 횟수(5)를 초과하지 않아야 합니다.

오류 메시지를 해결하려면 다음 방법을 시도해 보세요.

  • 노란색 클러스터 상태 문제를 해결합니다.
  • 최대 재시도 설정을 늘립니다.
  • 복제본 수를 업데이트합니다.
    참고: 워크로드가 많은 OpenSearch Service 클러스터의 복제본 수를 업데이트하는 것은 최선의 방법이 아닙니다.

해결 방법

노란색 클러스터 상태 문제 해결

노드 또는 네트워크 장애로 인해 OpenSearch Service 클러스터가 노란색 상태로 전환될 수 있습니다. 내부 하드웨어 문제로 인해 클러스터의 노드가 실패하면 기존 노드가 새 노드로 대체됩니다. 이러한 대체는 OpenSearch Service의 자동 탐지 기능입니다. 그러나 경우에 따라 결함이 있는 노드의 복제 샤드가 할당되지 않은 상태로 남아 있습니다. 복제 샤드는 이전에 사용한 리소스가 확보되지 않은 경우 할당되지 않은 상태로 남아 있습니다. 이 시간 동안 리더 노드는 복제 샤드 할당을 다섯 번 시도합니다. 리더 노드의 복제 샤드 할당 시도가 다섯 번 실패하면 클러스터가 빨간색 또는 노란색 상태로 전환됩니다.

참고: 할당되지 않은 샤드를 진단하기 위한 클러스터 할당 설명 API를 실행하는 것이 가장 좋습니다. 자세한 내용은 Elasticsearch 웹 사이트의 클러스터 할당 설명 API를 참조하세요.

클러스터가 노란색 상태로 전환되도록 하는 인덱스를 식별하려면 다음 쿼리를 사용합니다.

GET /_cat/indices?v&health=yellow

그런 다음 클러스터 할당되지 않은 샤드의 근본 원인을 확인하려면 다음 쿼리를 사용합니다.

GET /_cluster/allocation/explain

참고: 클러스터 재라우팅 API는 OpenSearch Service에서 인식되지 않습니다. 지원되는 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 OpenSearch Service는 Amazon Elasticsearch Service의 후속 서비스입니다.