"수정 중" 상태에서 멈춘 Amazon OpenSearch Service 클러스터의 문제를 해결하려고 합니다.
해결 방법
참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생하면 AWS CLI의 오류 해결을 참조하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.
구성을 변경하면 OpenSearch Service 클러스터가 수정 중 상태로 전환됩니다. 구성 변경에는 새 데이터 노드를 추가하거나, 초당 입출력 작업량(IOPS)을 프로비저닝하거나, AWS Key Management Service(AWS KMS) 키를 설정하는 경우가 포함됩니다.
참고: 구성 변경 사항을 제출하기 전에 클러스터가 블루/그린 배포를 지원하는지 확인하는 것이 좋습니다. 구성 변경 사항을 제출하기 전에 모의 실행을 수행하십시오.
오류로 인한 검증 확인 실패
구성 변경을 시작하면 OpenSearch Service에서 검증 확인을 수행하여 도메인이 업그레이드에 적합한지 확인합니다. 검증에 실패하면 도메인은 수정 중 상태로 유지됩니다. 이 문제를 해결하려면 오류에 대한 문제 해결 단계를 완료하십시오. 그런 다음, 구성 변경을 다시 시도하십시오.
새 리소스 세트 시작 실패
여러 구성 변경을 동시에 제출하면 클러스터가 중단될 수 있습니다. 구성 변경을 제출할 경우 변경이 완료될 때까지 기다린 후 다른 구성 변경을 제출하십시오.
검증 단계에서 완료된 검증 확인은 구성 변경 기간 동안 유효합니다. 구성이 검증 단계를 통과한 경우 도메인에 필요한 리소스를 수정하지 마십시오. 예를 들어 암호화에 사용하는 AWS KMS 키를 비활성화하지 마십시오.
새 데이터 노드 세트로의 샤드 마이그레이션이 완료되지 않음
OpenSearch Service에서 새 리소스를 생성한 후 기존 데이터 노드 세트에서 새로운 세트로의 샤드 마이그레이션이 시작됩니다. 이 단계는 클러스터 부하 및 크기에 따라 몇 분에서 몇 시간이 걸릴 수 있습니다.
기존 노드와 새 노드 간의 현재 샤드 마이그레이션을 모니터링하려면 다음 API 작업을 사용하십시오.
GET /DOMAIN_ENDPOINT/_cat/recovery?active_only=true
참고: DOMAIN_ENDPOINT를 도메인 엔드포인트로 바꾸십시오.
OpenSearch Service 클러스터가 빨간색 클러스터 상태인 경우 샤드 마이그레이션이 실패합니다. 빨간색 상태 문제를 해결하려면 Amazon OpenSearch Service 클러스터가 빨간색 또는 노란색 상태인 이유는 무엇입니까?를 참조하십시오.
클러스터에 과부하가 발생하면 클러스터는 샤드 마이그레이션을 처리하기 위한 리소스를 할당할 수 없습니다. CPU 및 JVM 압력이 높은 클러스터에는 과부하가 발생할 수 있습니다. 이 문제를 해결하려면 JVMMemoryPressure 및 CPUUtilization Amazon CloudWatch 지표를 모니터링하십시오.
새 노드 세트에 사용 가능한 스토리지 공간이 부족하면 샤드 마이그레이션이 실패할 수 있습니다. 이 문제는 블루/그린 배포 프로세스 중에 클러스터에 새 데이터를 추가할 경우 발생할 수 있습니다. 또한 이 문제는 기존 노드에 OpenSearch Service에서 새 노드에 할당할 수 없는 대규모 샤드가 있는 경우에도 발생합니다.
스토리지를 확보하려면 delete index API 작업을 사용하여 더 이상 필요하지 않은 이전 인덱스를 삭제합니다. 자세한 내용은 Elastic 웹 사이트에서 Delete index API를 참조하십시오.
샤드의 크기를 보려면 cat shards API 작업을 사용합니다. 그런 다음, 각 노드의 할당된 샤드 수를 보려면 cat allocation API 작업을 사용합니다. 새 노드에 필요한 모든 샤드가 없는 경우에는 cluster allocation explain API 작업을 사용하여 원인을 파악하십시오. 자세한 내용은 Elastic 웹 사이트에서 cat shards API, cat allocation API 및 Cluster allocation explain API를 참조하십시오.
샤드가 최대 재시도 횟수를 초과하고 노드에 할당되지 않은 상태로 남아 있는 경우, 할당을 다시 시도하십시오.
기본적으로 클러스터는 최대 5회 연속으로 샤드 할당을 시도합니다. 샤드에 대한 index.allocation.max_retries 인덱스 설정을 증가시키려면 다음 API 작업을 사용하십시오.
PUT INDEX_NAME/_settings
{
"index.allocation.max_retries" : 10
}
참고: INDEX_NAME을 인덱스 이름으로 바꾸십시오.
내부 하드웨어 장애로 인해 기존 데이터 노드의 샤드가 마이그레이션 중에 멈출 수 있습니다. OpenSearch Service는 하드웨어 문제에 따라 자가 복구 스크립트를 실행하여 노드를 정상 상태로 되돌립니다.
샤드를 기존 노드 세트에 고정하면 중단된 샤드 재배치가 발생할 수 있습니다. 샤드가 어떤 노드에도 고정되지 않도록 하려면 인덱스 설정을 확인합니다. 또는 클러스터에 ClusterBlockException 오류가 있는지 확인합니다.
새 노드에 할당할 수 없는 샤드 및 해당 인덱스 설정을 확인하려면 다음 명령을 실행합니다.
GET /DOMAIN_ENDPOINT/_cluster/allocation/explain?pretty
GET /DOMAIN_ENDPOINT/INDEX_NAME/_settings?pretty
참고: DOMAIN_ENDPOINT 및 INDEX_NAME을 원하는 값으로 바꾸십시오.
인덱스 설정 출력에 다음 설정이 표시되는지 확인합니다.
- "index.routing.allocation.require._name": "NODE_NAME"
- "index.blocks.write": true
**"index.routing.allocation.require._name": "NODE_NAME"**이 인덱스 설정에 표시되면 다음 명령을 실행하여 설정을 재설정합니다.
PUT /DOMAIN_ENDPOINT/INDEX_NAME/_settings
{
"index.routing.allocation.require._name": null
}
참고: DOMAIN_ENDPOINT 및 INDEX_NAME을 원하는 값으로 바꾸십시오.
자세한 내용은 Elastic 웹 사이트에서 인덱스 수준 샤드 할당 필터링을 참조하십시오.
인덱스 설정에 "index.blocks.write": true가 표시되면 인덱스에 쓰기 블록이 있는 것입니다. 이 쓰기 블록 문제는 ClusterBlockException 오류로 인해 발생할 수 있습니다. 자세한 내용은 OpenSearch Service의 403 "index_create_block_exception" 또는 "cluster_block_exception" 오류를 해결하려면 어떻게 해야 합니까?를 참조하십시오.
구성 변경 진행 상황을 모니터링하려면 DescribeDomainChangeProgress API 작업을 실행합니다.
클러스터가 수정 중 상태에서 멈추거나 도메인이 이전 리소스 삭제 중 상태에서 24시간 이상 멈춘 경우 AWS Support에 문의하십시오.