OpenSearch Service クラスターのステータスが赤または黄色になっている原因を教えてください。
Amazon OpenSearch Service クラスターのステータスが赤または黄色になっています。
簡単な説明
OpenSearch Service コンソールの [モニタリング] タブには、クラスター内で最も正常性が低いインデックスのステータスが表示されます。OpenSearch Service がプライマリシャードおよびそのレプリカを 1 つ以上割り当てていない場合、ステータスは赤になります。OpenSearch Service がすべてのプライマリシャードを割り当てたものの、1 つ以上のレプリカシャードを割り当てていない場合、ステータスは黄色になります。
重要: クラスターステータスが赤であることは、一部のデータが利用できないことを示唆しています。クラスターステータスが黄色であることは、データ損失は起こっていないものの、クラスターの完全な冗長性が欠けていることを示唆しています。ノードに障害が発生した場合、データが失われる可能性があります。
解決策
重要: ドメインを再構成するには、まず赤のクラスターステータスを解決する必要があります。ステータスが赤であるドメインの再構成を試行した場合、"Modifying" ステータスで停滞する可能性があります。
シャードが割り当てられていない原因を特定する
シャードが割り当てられない根本原因を特定し、トラブルシューティングするには、AWSSupport-TroubleshootOpenSearchRedYellowCluster ランブックを使用します。手順については、AWSSupport-TroubleshootOpenSearchRedYellowCluster の「手順」を参照してください。
または、割り当てられていないシャードを手動で特定する場合は、次のコマンドを実行します。
curl -XGET 'domain-endpoint/_cat/shards?h=index,shard,prirep,state,unassigned.reason' | grep UNASSIGNED
注: domain-endpoint をドメインエンドポイントに置き換えてください。出力に表示されるシャード ID を書き留めます。
次に、以下のコマンドを実行し、シャードが割り当てられない原因を確認します。
curl -XGET 'domain-endpoint/_cluster/allocation/explain?pretty' -H 'Content-Type:application/json' -d'{ "index": "index-name", "shard": shardID, "primary": false }'
注: domain-endpoint をドメインエンドポイントに、index-name をインデックス名に、shardID を割り当てられていないシャード ID に置き換えてください。シャードがプライマリシャードの場合は、false を true に置き換えます。
ステータスが赤または黄色である場合のトラブルシューティング
クラスターのステータスが黄色または赤である原因を特定するには、次の手順を実行します。
-
ClusterStatus.yellow、ClusterStatus.red、Shards.unassigned、CPUUtilization、JVMMemoryPressure、FreeStorageSpace の各 Amazon CloudWatch メトリクスを確認します
-
次のクエリを実行し、問題があるインデックスを特定します。
GET /_cat/indices?v&health=yellow GET /_cat/indices?v&health=red -
次のクエリを実行し、シャードがすべてのインデックスで割り当てられていない原因を把握します。
GET /_cluster/allocation/explain注: このコマンドの出力には、クラスター全体にわたる未割り当てのシャードおよび割り当てステータスが包括的に表示されます。この情報を参照し、割り当てに関する問題の全体的な概要を確認します。
クラスターステータス「赤」を解決するには、次のコマンドを実行して赤色のインデックスを削除します。
curl -XDELETE 'domain-endpoint/index-names'
注: domain-endpoint をドメインエンドポイントに、index-names をインデックス名に置き換えてください。
次に、スナップショットからインデックスを復元します。
ステータスが黄色であるクラスターが自己解決されない場合は、シャードが割り当てられない原因に関する情報を参照し、根本原因に対処します。
シャードに割り当てるノードが不足している
プライマリシャードとレプリカシャードは、異なるノードに配置する必要があります。結果的に、OpenSearch Service がレプリカシャードを割り当てられないため、レプリカシャードを含む単一のノードクラスターは、常に黄色ステータスで初期化されます。
OpenSearch Service バージョン 7.x 以降では、cluster.max_shards_per_node に 1000 のデフォルトクォータが適用されます。cluster.max_shards_per_node には、デフォルト値を使用することをおすすめします。詳細については、OpenSearch のウェブサイトで「クラスターレベルのシャード、ブロック、およびタスク設定」を参照してください。
シャード割り当てフィルターが設定されている場合、フィルターされたノードが十分でないことが原因で、シャードが未割り当てとなる可能性があります。シャード割り当てフィルターの詳細については、OpenSearch のウェブサイトで「インデックスレベルのインデックス設定」を参照してください。
この問題を解決するには、次の手順を実行します。
- ノード数を増やします。
- 各プライマリシャードのレプリカの数がデータノードの数よりも少ないことを確認します。
- レプリカシャードの数を減らします。
詳細については、「OpenSearch Service ドメインのサイズ調整」および「OpenSearch Service のシャード割り当てに関する詳解」を参照してください。
ストレージ容量の問題
ディスク容量が不足している場合場合、クラスターのヘルスステータスは赤または黄色になります。OpenSearch Service がシャードを分散する前に、シャードを収容するのに十分なディスク容量をノードに確保する必要があります。
クラスター内の各ノードで使用可能なストレージ容量を確認するには、次のコマンドを実行します。
curl domain-endpoint/_cat/allocation?v
注: domain-endpoint をドメインエンドポイントに置き換えてください。
シャードの分散が不均等な場合、他のノードに容量があるにもかかわらず、一部のノードで容量が枯渇する可能性があります。この問題は、シャードの再割り当て中に発生し、結果的にOpenSearch Service が再調整プロセス中に新しいシャードを割り当てられない可能性があります。
シャードの分散設定を確認するには、次のコマンドを実行します。
curl -XGET domain-endpoint/_cluster/settings?include_defaults=true&flat_settings=true
注: domain-endpoint をドメインエンドポイントに置き換えてください。
クラスターの正常性を確保するために、ディスク容量を定期的に監視し、ディスク不均衡の問題にプロアクティブに対処することをおすすめします。
詳細については、「OpenSearch Service ドメインでのストレージ容量不足をトラブルシューティングする方法を教えてください」および「OpenSearch Service クラスターでシャード分散の不均衡を再調整する方法を教えてください」を参照してください。
JVM の高メモリ負荷
シャード割り当ては、リソース負荷の高いプロセスであり、CPU、ヒープ領域、ディスク、およびネットワークリソースを消費します。Java Virtual Machine (JVM) のメモリ負荷が継続的に高い場合、シャード割り当てが正常に行われない可能性があります。この問題を解決するために、JVM の高メモリ負荷をトラブルシューティングします。JVM のメモリ負荷を軽減した後、次の手順を実行してクラスターを緑ステータスに戻します。
- 次のコマンドを実行し、デフォルトのシャード再試行値を増やします。
注: index-name をインデックス名に、10 を再試行の値に置き換えてください。PUT /index-name/_settings { "index.allocation.max_retries": 10 } - シャードの再試行値を 0 に変更すると、レプリカシャードが無効になります。次に、正の値に変更してシャードを再度有効にします。
ノードの障害
ノードに障害が発生すると、割り当てられたシャードが未割り当てになります。レプリカシャードが存在しない場合、単一のノード障害であってもヘルスステータスは赤になる場合があります。ただし、インデックスにレプリカシャードを含めて構成した場合は、ノードに障害が発生すると、通常は一時的に黄色のステータスになります。この黄色のステータスは、OpenSearch Service の自動復旧に伴うものです。障害が発生したノードが正常状態に復帰するか、OpenSearch Service がシャードを他のノードに再割り当てすると、ステータスは黄色ではなくなります。
ハードウェア障害を防ぐために、次の手順を実行します。
- ノードを複数のアベイラビリティーゾーンに分散します。
- 各インデックスに 1 つ以上のレプリカシャードがあることを確認します。
- 専用マスターノードを有効にします。
- ドメインの耐障害性を強化します。
- 障害を迅速に特定して対処するために、CloudWatch メトリクスを使用してクラスターの正常性を監視します。
ノード障害の特定方法に関する詳細は、「障害が発生したクラスターノード」を参照してください。
クラスターヘルスが繰り返し黄色になる
次の原因で、クラスターのヘルスステータスが頻繁に黄色になる可能性があります。
- ノードでの一時的な障害、または障害によりレプリカシャードが未割り当てとなった際の再起動。
注: クラスターは、ノードが復帰する際、または OpenSearch Service がシャードを再調整する際に、自力で復旧する可能性があります。 - リソースの制約または構成の問題を原因とする、シャード割り当ての失敗または再試行クォータの超過。
- リソース使用率の高いクラスターにおけるスケジュールされたメンテナンス、バックアップジョブ、または大量の負荷急増を原因とする、ノードの不安定化やシャード割り当ての拒否。
- 定期アップグレードまたは自動作成されたインデックスにより新しいレプリカが作成されたことを原因とする、クラスターの容量超過。
ヘルスステータスが繰り返し黄色になることを防ぎ、トラブルシューティングするには、次の手順を実行します。
- 単一ノードクラスターでは、すべてのインデックスにおいてレプリカが 0 個であることを確認します。
注: 単一ノードクラスターでは、OpenSearch Service はシステムインデックス (例: opendistro_security) を自動的に管理、構成します。システムインデックスの設定は変更できません。 - マルチノードクラスターでは、1 つ以上のレプリカノードを維持します。ノードとレプリカの数を増やし、冗長性を高めます。
- 高可用性と耐障害性を実現するためにマルチ AZ ドメインを構成します。
注: シャードの割り当てに失敗する場合は、クラスター内のノード数、アベイラビリティーゾーン、スタンバイ構成が、クラスターの要件に合っているかどうかを確認します。 - シャードがメモリ内ロックを取得できない場合は、index.allocation.max_retries を増やします。
- リソースの枯渇を防ぐために、高負荷時にドメインをスケールアップします。
- リソース需要の変化をプロアクティブに監視するために、ClusterStatus.yellow、ClusterStatus.red、JVMMemoryPressure、AutomatedSnapshotFailure、FreeStorageSpace の各メトリクスに対する CloudWatch アラームを作成します。
詳細については、「OpenSearch Service 運用のベストプラクティス」を参照してください。
関連するコンテンツ
質問済み 3年前

