Amazon OpenSearch Service クラスターのステータスが赤または黄色なのはなぜですか?

所要時間2分
0

Amazon OpenSearch Service クラスターが赤または黄色のクラスターステータスになっています。

簡潔な説明

OpenSearch Service コンソールの [Monitoring] タブには、クラスター内の最も健全でないインデックスのステータスが表示されます。クラスターステータスが赤色で表示されていても、クラスターがダウンしているわけではありません。このステータスは、少なくとも 1 つのプライマリシャードとそのレプリカがノードに割り当てられていないことを示します。クラスターのステータスが黄色の場合は、すべてのインデックスのプライマリシャードがクラスター内のノードに割り当てられます。ただし、1 つ以上のレプリカシャードはどのノードにも割り当てられません。

**注:**最初に赤いクラスターのステータスを解決するまでは、ドメインを再構成しないでください。赤色のクラスターステータスにあるドメインを再構成しようとすると、「処理中」状態で停止する可能性があります。クラスターが「処理中」状態のままになる詳細については、OpenSearch Service ドメインが「処理中」 状態のままになるのはなぜですか?をご覧ください。

クラスターが赤のステータスになる理由は次のとおりです。

  • 複数の データノード障害
  • 壊れたシャードや赤いシャードをインデックスに使用する
  • JVM のメモリ負荷または CPU 使用率が高い
  • ディスク容量不足またはディスクスキュー
  • 未割り当てのシャードにはレプリカシャードはありません

**注:**場合によっては、自動スナップショットからインデックスを削除してから復元することで、赤いクラスターの状態を解決できる場合があります。

クラスターが黄色のヘルスステータスになる理由は次のとおりです。

  • 新しいインデックスの作成
  • シャードまたはディスクスキューに割り当てるノードが足りません
  • JVM メモリ圧が高い
  • 単一ノード障害
  • シャード割り当ての最大リトライ回数を超えました
  • レプリカシャードの数がデータノードの数よりも多い
  • データシャードの再配置による継続的なブルーまたはグリーンデプロイ

**注:**黄色のクラスターのステータスが自動的に解決しない場合は、インデックス設定を更新するか、未割り当てのシャードを手動で再ルーティングすることでステータスを解決できます。黄色いクラスターのステータスが自動的に解決しない場合は、根本原因を特定してトラブルシューティングを行います。‏クラスタの状態が黄色くなるのを防ぐには、[クラスタヘルスのベストプラクティス]を適用してください。

解決策

シャードが割り当てられていない理由の特定

割り当てられていないシャードを識別するには、次の手順を実行します。

1.    未割り当てのシャードを一覧表示します。

$ curl -XGET 'domain-endpoint/_cat/shards?h=index,shard,prirep,state,unassigned.reason' | grep UNASSIGNED

2.    シャードが割り当てられていない理由の詳細を取得してください。

$ curl -XGET 'domain-endpoint/_cluster/allocation/explain?pretty' -H 'Content-Type:application/json' -d'
{
     "index": "<index name>",
     "shard": <shardId>,
     "primary": <true or false>
}

3.    (オプション)クラスタステータスが赤の場合は、懸念事項のインデックスを削除し、根本原因を特定して対処してください。

curl -XDELETE 'domain-endpoint/<index names>'

次に、使用可能なスナップショットを特定し、スナップショットからインデックスを復元します。

curl -XGET 'domain-endpoint/_snapshot?pretty'

クラスターのステータスが黄色の場合は、原因を特定してシャードが割り当てられるようにします。

赤または黄色のクラスターステータスのトラブルシューティング

シャードに割り当てるノードが足りません

レプリカシャードは、プライマリシャードと同じノードには割り当てられません。レプリカシャードを含む単一ノードクラスターは、常に黄色のクラスターステータスで初期化されます。OpenSearch Service がレプリカを割り当てることができるノードが他にないため、単一ノードクラスターはこの方法で初期化されます。

また、OpenSearch Service バージョン 7.x 以降では、**cluster.max\ _shards\\ /node ** 設定にはデフォルトで「1,000」という制限があります。cluster.max\ _shards\ _per\ _node の設定をデフォルト値の「1000」のままにしておくことがベストプラクティスです。OpenSearch Service がシャードをどのように割り当てるかを制御するように シャード割り当てフィルター を設定すると、フィルター処理されたノードが十分にないためにシャードが割り当てられなくなる可能性があります。このノード不足を防ぐには、ノード数を増やしてください。各プライマリシャードのレプリカの数がデータノードの数よりも少ないことを確認してください。レプリカシャードの数を減らすこともできます。詳細については、OpenSearch サービスドメインのサイジングOpenSearch サービスのシャード割り当てをわかりやすく説明するを参照してください。

ディスク容量不足またはディスクスキュー

十分なディスク容量がない場合、クラスターは赤または黄色のヘルスステータスになります。OpenSearch Service がシャードを配布する前に、シャードを収容するのに十分なディスク容量が必要です。

クラスター内の各ノードで使用可能なストレージ容量を確認するには、次の構文を使用します。

$ curl domain-endpoint/_cat/allocation?v

ストレージスペースの問題の詳細については、OpenSearch Service ドメインのストレージスペース不足のトラブルシューティング方法を参照してください。

ディスクスキューが大きいと、一部のデータノードではストレージスペース不足の問題が発生する可能性もあります。シャードを再割り当てする場合、シャードの配布中にそのシャードが割り当てられなくなる可能性があります。この問題を解決するには、OpenSearch Service クラスター内の不均一なシャード分布を再調整するにはどうすればいいですか? を参照してください。

ディスクベースのシャード割り当て設定では、シャードが未割り当てになることもあります。たとえば、**cluster.routing.allocation.disk.watermark.low ** メトリックが 50 GB に設定されている場合、指定された量のディスク容量がシャード割り当てに使用できる必要があります。

現在のディスクベースのシャード割り当て設定を確認するには、次の構文を使用します。

$ curl -XGET domain-endpoint/_cluster/settings?include_defaults=true&flat_settings=true

ディスク容量の問題を解決するには、次の方法を検討してください。

  • 黄色と赤のクラスターの不要なインデックスをすべて削除します。
  • 赤色のクラスターの赤いインデックスを削除
  • EBS ボリュームをスケールアップします。
  • データノードをさらに追加します。

**注:**クラスターの状態が赤の場合は、クラスターの設定変更をしないでください。赤色のクラスターステータスにあるドメインを再構成しようとすると、「処理中」状態で停止する可能性があります。

JVM メモリ圧が高い

すべてのシャード割り当ては、CPU、ヒープスペース、およびディスクとネットワークリソースを使用します。JVM のメモリ負荷が高い状態が続くと、シャードの割り当てが失敗する可能性があります。たとえば、JVM のメモリ負荷が 95% を超えると、メモリの親回路ブレーカーがトリガーされます。その後、割り当てスレッドはキャンセルされ、シャードは未割り当てのままになります。

この問題を解決するには、まず JVM のメモリ負荷レベルを下げてください。JVM のメモリー負荷が軽減されたら、クラスターをグリーンヘルス状態に戻すために、次のヒントを参考にしてください。

  • デフォルトのシャードリトライ値を「5」以上に増やします。
  • レプリカシャードを非アクティブ化し、アクティブ化します。
  • 未割り当てのシャードを手動で再試行してください。

リトライ値を増やすための API の例:

PUT <index-name>/_settings
{
 "index.allocation.max_retries" : <value>
}

JVM のメモリ負荷を軽減する方法の詳細については、OpenSearch Service クラスターの JVM メモリ負荷が高い場合のトラブルシューティング方法を参照してください。

ノード障害

クラスターにノード障害が発生すると、ノードに割り当てられたシャードは割り当てられなくなります。特定のインデックスで使用できるレプリカシャードがない場合、1 つのノードに障害が発生した場合でも、ヘルスステータスが赤くなることがあります。2 つのレプリカシャードとマルチ AZ 配置により、ハードウェア障害時のデータ損失からクラスターを保護できます。

すべてのインデックスにレプリカシャードがある場合、1 つのノードに障害が発生すると、クラスターが一時的に黄色のヘルスステータスになる可能性があります。クラスターが一時的に黄色のヘルスステータスになった場合、OpenSearch Service はノードが再び正常になるとすぐに自動的に回復します。または、OpenSearch Service は、シャードが新しいノードに割り当てられたときに回復します。

Amazon CloudWatch メトリックスをチェックすることで、ノードの障害を確認できます。ノード障害の特定について詳しくは、障害が発生したクラスターノードを参照してください。

**注:**また、インデックスごとに 1 つのレプリカシャードを割り当てる か、専用のプライマリノードを使用してゾーン対応を有効にするのもベストプラクティスです。詳細については、Elasticsearch ウェブサイトの 障害への対処を参照してください。

最大リトライ回数を超えました

OpenSearch Service では、クラスターがシャード割り当ての最大時間制限 (5,000 ミリ秒) またはリトライ回数 (5) を超えてはなりません。クラスターが最大しきい値に達した場合は、シャード割り当てを手動でトリガーする必要があります。シャード割り当てを手動でトリガーするには、インデックスのレプリカシャードを非アクティブ化してから再度アクティブ化します。

クラスターの設定を変更すると、シャード割り当てがトリガーされることもあります。シャードの割り当てについて詳しくは、Elasticsearch ウェブサイトの すべてのシャードはホームに値する を参照してください。

**注:**クラスターの負荷が高い場合、手動でシャード割り当てをトリガーすることはベストプラクティスではありません。インデックスからすべてのレプリカを削除する場合、インデックスはプライマリシャードのみに依存する必要があります。ノードに障害が発生すると、プライマリシャードが未割り当てのままになるため、クラスターは赤色のヘルスステータスになります。

レプリカシャードを非アクティブ化するには、number_of_replicasの値を「0」に更新します。

$ curl -XPUT 'domain-endpoint/<indexname>/_settings' -H 'Content-Type: application/json' -d'
{
     "index" : {
          "number_of_replicas" : 0
     }
}

また、**index.auto\ _expand\ _replicas ** の設定が「false」に設定されていることを確認してください。クラスターが緑色の状態に戻ったら、**index.number\ _of\ _replicas ** の値を希望の値に戻して、レプリカシャードの割り当てをトリガーできます。シャードの割り当てが成功すると、クラスターは緑色のヘルスステータスになります。

クラスターヘルスのベストプラクティス

黄色または赤色のクラスターのステータスを解決するには、以下のベストプラクティスを検討してください。

  • AutomatedSnapshotFailureに対する推奨の Amazon CloudWatch アラームを設定します。アラームを使用すると、クラスターが赤の状態になったときからインデックスを復元できるスナップショットがあることを確認できます。
  • クラスターに継続的な負荷がかかっている場合は、クラスターをスケーリングしてください。クラスターのスケーリングの詳細については、OpenSearch Service ドメインをスケールアップするにはどうすればいいですか?を参照してください。
  • ディスク使用量、JVM メモリ圧力、CPU 使用率を監視し、設定したしきい値を超えていないことを確認します。詳細については、CloudWatch の推奨アラームクラスターメトリックスを参照してください。
  • ノード障害から保護するために、すべてのプライマリシャードにレプリカシャードがあることを確認してください。

詳細については、Amazon OpenSearch Service 運用のベストプラクティスを参照してください。

AWS公式
AWS公式更新しました 1年前
コメントはありません

関連するコンテンツ