Amazon OpenSearch Service ドメインが「処理中」状態のまま変わらないのはなぜですか。

最終更新日: 2021 年 8 月 5 日

Amazon OpenSearch Service クラスターが「処理中」状態のままです。なぜこれが起こっているのですか。この問題を防ぐにはどうすればよいですか。

簡単な説明

OpenSearch Service クラスターは、設定変更の最中は [Processing] (処理中) 状態になります。次のいずれかの状況が発生すると、クラスターは「処理中」状態のままになることがあります。

  • 新しいデータノードのセットの起動に失敗した。
  • 新しいデータノードセットへのシャードの移行が失敗した。

設定変更を開始すると、ドメインの状態が「処理中」に変わる一方、OpenSearch Service は新しい環境を作成します。新しい環境では、OpenSearch Service は適用可能なノードの新しいセット (データ、マスター、UltraWarm など) を起動します。移行が完了すると、古いノードは終了します。

解決方法

新しいデータノードのセットの起動に失敗した

最初の変更が完了する前にクラスターに対して同時に設定変更を行うと、クラスターが処理を完了できなくなる可能性があります。クラスターに継続中の Blue/Green デプロイがないか確認してください。継続中の Blue/Green デプロイがあるかどうかを確認するには、Amazon CloudWatch でノードの総数をチェックします。予想よりも多いノード数が見られる場合は、Bule/Green デプロイが進行中である可能性があります。

追加ノードとシャードの移行プロセスに関する詳細情報を取得するには、次の API コールを使用します。

GET /_cluster/health?pretty and GET /_cat/recovery?pretty

Amazon Virtual Private Cloud (VPC) ドメインを使用している場合は、サブネットに十分な空きの IP アドレスがあることを確認してください。サブネットに十分な IP アドレスが指定されていない場合、新しいノードの起動は失敗します。その結果、クラスターは「処理中」状態のままになります。詳細については、VPC サブネットで IP アドレスをリザーブするを参照してください。

OpenSearch Service ドメインが暗号化されている場合は、設定を変更する前に、AWS KMS キーが AWS アカウントに存在することを確認してください。誤って AWS KMS キーを削除した場合、クラスターは「処理中」状態のままになる可能性があります。

クラスターは、次の理由によっても停止することがあります。

  • マスターノードが過負荷になっていて、保留タスクが多すぎるか、CPU および JVM メモリプレッシャーレベルが高すぎる。cat pending tasks API を使用して、保留中のタスクを確認します。Amazon CloudWatch で、MasterCPUUtilizationMasterJVMMemoryPressure メトリクスを確認することもできます。
  • OpenSearch Dashboards の認証の前提条件である Amazon Cognito 認証が満たされなかった。Amazon Cognito for OpenSearch Dashboards 認証を設定した場合は、認証の前提条件を満たしていることを確認してください。例えば、OpenSearch Service には、ユーザープール、Amazon Cognito アイデンティティプール、および AWS Identity Access Management (IAM) ロールが適切な許可を使用して設定されている必要があります。このロールのデフォルト名は、(AmazonESCognitoAccess ポリシーがアタッチされている) CognitoAccessForAmazonOpenSearch です。
    注: カスタム IAM ロールを作成した場合は、ロールに CognitoAccessForAmazonOpenSearch と同じ許可があることを確認してください。

新しいデータノードセットへのシャードの移行が失敗する

(古いデータセットから新しいデータノードセットへの) シャードの移行は、次の理由で失敗することがあります。

  • 現在、OpenSearch Service クラスターが赤のヘルスステータスになっている。クラスターのヘルスステータスが赤の場合は、クラスターが正常な状態になるように、赤いクラスターのステータスをトラブルシューティングします。
    注: クラスターが正常な状態のときに設定するのがベストプラクティスです。
  • JVM メモリ負荷と CPU 使用率が高いために大量の処理負荷が発生したため、ノードがサービスを停止している。この問題を解決するには、クラスターへのネットワークトラフィックを減らすか、ネットワークトラフィックを完全に停止して、クラスターを正常な状態に戻します。それを行わないと、Bule/Green のデプロイプロセスがタイムアウトし、手動による介入が必要になることがあります。
  • 内部ハードウェア障害のため、古いデータノード上のシャードが移行中に停止することがあります。(注: ハードウェアの問題によっては、クラスターも自動的に回復しない場合があります。) クラスターが自動的に回復しない場合、OpenSearch Service は自己修復スクリプトを実行して、ノードを正常な状態に戻します。ノードのルートボリュームが失われると、OpenSearch Service が応答しなくなり、Auto Scaling グループによってエラーが発生しているノードが自動的に置き換えられます。ノードに接続された EBS ボリュームがダウンした場合、EBS ボリュームを置き換えるには手動による介入が必要です。古いノードセットからまだ動作しているシャードを特定するには、cat allocation APIcat nodes API または cat shards API の API コマンドを使用します。
  • 新しいノードセット内の空きストレージが不十分であるためにシャードの再配置がスタックする。この問題は、Bule/Green のデプロイプロセス中にクラスターに新しいデータが入っている場合に発生します。
    注: OpenSearch Service が検出したスペースがデータ移行を完了するのに必要な容量よりも少ない場合、Bule/Green デプロイはトリガーされません。
  • 古いノードセットに固定されているシャードが原因で、シャードの再配置がスタックしている。設定の変更が行われる前に、シャードがどのノードにも固定されていないことを確認するには、インデックス設定を確認します。または、クラスターに JVM メモリ負荷が高いか、ディスク領域が不足しているために書き込みブロックが発生していないかどうかを確認します。

スタックしているインデックスシャードと対応するインデックス設定を特定するには、次のコマンドを使用します。

curl -X GET "ENDPOINT/_cluster/allocation/explain?pretty"
curl -X GET "ENDPOINT/INDEX_NAME/_settings?pretty"

インデックス設定で、次のいずれかの設定が表示されるかどうかを確認します。

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

"index.routing.allocation.require._name": "NODE_NAME" が表示されている場合、次のように設定を削除します。

curl -X PUT "ENDPOINT/INDEX_NAME/_settings?pretty" H 'Content-Type: application/json' -d '
{
"index.routing.allocation.require._name": null
}'

詳細については、Elasticsearch ウェブサイトのインデックスレベルのシャード割り当てのフィルタリングをご参照ください。

インデックス設定で "index.blocks.write": true が表示される場合、クラスターへの書き込みがブロックされています。書き込みブロックは、JVM メモリ負荷が高いか、ディスク領域が不足していることが原因である可能性があります。その他のトラブルシューティングのヒントを実装する前に、これらの問題に対処してください。この例外のトラブルシューティングの詳細については、ClusterBlockException を参照してください。

注: クラスターが 24 時間以上「処理中」状態のままになっている場合、クラスターは手動で介入する必要があります。また、設定を変更していないが、ノード数が予想よりも多い場合は、ソフトウェアパッチが進行中である可能性があります。

Amazon OpenSearch Service は、Amazon Elasticsearch Service の後継サービスです。


この記事は役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?