Amazon OpenSearch Service のドメインが「処理中」状態のままになっているのはなぜですか?

所要時間2分
0

Amazon OpenSearch Service クラスターが「処理中」状態でスタックしています。

簡単な説明

OpenSearch Service クラスターが、設定変更の最中に「処理中」状態になります。次のいずれかが発生すると、クラスターが「処理中」状態で停止する可能性があります。

  • 検証チェックがエラーで失敗した。
  • 新しいリソースセットを起動できなかった。
  • 新しいデータノードセットへのシャード移行が完了していない。
  • 古いリソースセットが終了できなかった。

設定変更を開始すると、OpenSearch Service が新しい環境を作成する間、ドメインの状態は 「処理中」に変わります。新しい環境では、OpenSearch Service は、データノード、専用プライマリノード、UltraWarm ノードなど、該当するノードの新しいセットを起動します。移行が完了すると、古いノードは終了します。

設定変更の進行状況は、コンソールのドメインステータスで確認できます。DescribeDomainChangeProgress API を使用して設定変更の進行状況を監視することもできます。詳細については、「設定変更のステージ」を参照してください。

解決策

検証チェックがエラーで失敗した

設定変更を開始したり、OpenSearch Service のドメインバージョンのアップグレードを実行したりすると、OpenSearch Service は最初に一連の検証チェックを実行します。検証チェックにより、ドメインがアップグレードの対象となるかどうかが確認されます。検証チェックがエラーで失敗すると、ドメインが「処理中」状態で停止することがあります。検証チェックが失敗する理由はいくつかあります。この問題を解決するには、「検証エラーのトラブルシューティング」を参照してください。検証エラーに関連するトラブルシューティング手順に従い、設定変更を再試行してください。

新しいリソースセットを起動できなかった

最初の設定変更が完了する前にクラスターに同時に設定変更を送信すると、クラスターが停止する可能性があります。新しい設定変更を送信する場合は、変更が完了するまで待ってから、別の設定変更を送信してください。

検証ステージでのドメインの検証チェックは、設定変更の間ずっと有効です。設定が検証ステージを通過した場合は、ドメインが依存するリソースを変更しないでください。たとえば、暗号化に使用する AWS Key Management Service (AWS KMS) キーを非アクティブ化しないでください。

また、ClusterBlockException エラーが発生すると、ドメインが停止する可能性があります。これは、使用可能なストレージ容量が不足しているか、JVM のメモリ負荷が高いことが原因で発生する可能性があります。詳細とトラブルシューティングについては、「ClusterBlockException」を参照してください。
注: Amazon CloudWatch の FreeStorageSpaceMasterCPUUtilizationMasterJVMMemoryPressure を確認できます。

新しいデータノードセットへのシャード移行が完了していない

OpenSearch Service によって新しいリソースが作成されると、古いデータノードセットから新しいセットへのシャード移行が開始されます。このステージは、クラスターの負荷とサイズに応じて、数分から数時間かかる場合があります。

古いノードと新しいノード間のシャードの現在の移行を監視するには、次の API 呼び出しを実行します。

GET /<DOMAIN_ENDPOINT>/_cat/recovery?active_only=true

シャードの移行は、以下の理由で失敗する可能性があります。

  • お使いの OpenSearch サービスクラスターのヘルスステータスが、現在赤色になっている。クラスターのヘルスステータスが赤の場合は、クラスターが正常な状態になるまで赤色のクラスターステータスのトラブルシューティングを行います。詳細については、「Amazon OpenSearch Service クラスターのステータスが赤または黄色なのはなぜですか?」を参照してください。
  • クラスターが過負荷状態で、シャード移行を処理するためのリソースを割り当てることができない。CPU と JVM の負荷が高いクラスターは過負荷になる可能性があります。CloudWatch JVM のメモリ負荷と CPU 使用率のメトリクスをモニタリングします。詳細については、「CloudWatch でのメトリクスの表示」を参照してください。
  • 新しいノードセットの空きストレージ容量が不足している。この問題は、ブルー/グリーンデプロイプロセス中にクラスタに新しいデータが入ってくる場合に発生します。この問題は、古いノードに新しいノードに割り当てられない大きなシャードがある場合にも発生する可能性があります。

シャードのサイズを確認するには、Elasticsearch ウェブサイトの cat shards API を使用してください。
各ノードに割り当てられたシャードの数を確認するには、Elasticsearch ウェブサイトの cat allocation API を使用してください。
一部のシャードを新しいノードに割り当てられない理由を調べるには、Elasticsearch ウェブサイトの cluster allocation explain API を使用してください。
不要になった古いインデックスがある場合は、Elasticsearch ウェブサイトの delete index API を使用してストレージを解放できます。

最大リトライ回数を超えたためにシャードをノードに割り当てることができない場合は、割り当てを再試行できます。次の API 呼び出しを使用して、そのシャードに関連付けられている「index.allocation.max_retries」インデックス設定を増やします。

PUT <INDEX_NAME>/_settings
{
    "index.allocation.max_retries" : 10
}

注: デフォルトでは、クラスターはシャードを連続して最大 5 回割り当てようとします。

  • 内部のハードウェア障害により、古いデータノードのシャードが移行中に停止する可能性があります。
    注: ハードウェアの問題に応じて、OpenSearch Service は自己修復スクリプトを実行してノードを正常な状態に戻します。
  • 古いノードセットに固定されているシャードが原因で、スタックしたシャードの再配置。シャードがどのノードにも固定されていないことを確認するには、インデックス設定を確認してください。または、クラスターに ClusterBlockException エラーが発生していないかどうかを確認してください。

新しいノードに割り当てられないシャードと対応するインデックス設定を特定するには、以下のコマンドを使用します。

GET /<DOMAIN_ENDPOINT>/_cluster/allocation/explain?pretty
GET /<DOMAIN_ENDPOINT>/<INDEX_NAME>/_settings?pretty

Elasticsearch ウェブサイトで get index settings API を使用して、次のいずれかの設定が表示されるかどうかを確認します。

{
    "index.routing.allocation.require._name": "NODE_NAME" (OR)
    "index.blocks.write": true
}

インデックス設定に "index.routing.allocation.require._name": "<NODE_NAME>" がある場合、次の API 呼び出しを使用してその設定をリセットします。

PUT /<DOMAIN_ENDPOINT>/<INDEX_NAME>/_settings
{
    "index.routing.allocation.require._name": null
}

詳細については、Elasticsearch ウェブサイトの「Index-level shard allocation filtering」を参照してください。

インデックス設定に "index.blocks.write": true がある場合、インデックスへの書き込みがブロックされています。この書き込みブロックの問題は、ClusterBlockException エラーが原因である可能性があります。詳細については、「OpenSearch Service の 403「index_create_block_exception」または「cluster_block_exception」エラーを解決する方法を教えてください。」を参照してください。

ベストプラクティス

OpenSearch Service クラスターが「処理中」の状態にならないようにするには、以下のベストプラクティスに従ってください。

  • 設定変更を送信する前に、クラスターがブルー/グリーンデプロイプロセスをサポートできることを確認してください。
  • 設定変更を送信する前に、変更の dry-run を送信してください。
  • クラスターが過負荷になっていないことを確認してください。
  • 複数の設定変更を同時に送信することは避けてください。
  • トラフィックが少ない時間帯に設定変更を送信することを検討してください。
  • 設定変更の進行状況を監視してください。

注: 次のいずれかが発生した場合は、AWS サポートに連絡してください。

  • クラスターが 24 時間以上「処理中」状態のままになっている。
  • ドメインが「古いリソースの削除」ステージのままになっている。
AWS公式
AWS公式更新しました 9ヶ月前