メニュー
Amazon Elasticsearch Service
開発者ガイド (API Version 2015-01-01)

AWS サービスエラー処理

このセクションでは、一般的な AWS サービスエラーへの対応方法について説明します。AWS サポートに問い合わせる前に、このセクションの情報を参照してください。

障害が発生したクラスターノード

EC2 インスタンスでは、予期しない終了と再起動が発生する場合があります。 通常、Amazon ES はノードを再起動します。 ただし、Elasticsearch クラスターの 1 つ以上のノードが失敗した状態のままであることがあります。この状態を確認するには、Amazon ES コンソールでドメインダッシュボードを開きます。[Monitoring] タブを選択し、次に [Nodes] メトリクスを選択します。報告されるノード数がクラスターに設定した数より小さいかどうかを調べます。メトリクスが、1 つ以上のノードが 1 日以上ダウンしていることを示している場合は、AWS サポートまでお問い合わせください。

注記

[Nodes] メトリクスは、クラスター設定の変更中およびサービスの定期的なメンテナンス中は、正確ではありません。これは想定される動作です。メトリクスは、すぐに正しい数のクラスターノードを報告します。課金対象となるのは、クラスター用にリクエストしたノード数のみです。

クラスターを予期しないノードの終了と再起動から保護するには、Amazon ES ドメインで各インデックスに少なくとも 1 つのレプリカを作成します。詳細については、Elasticsearch のドキュメントの「シャードとレプリカ」を参照してください。

トピック

    赤のクラスター状態

    Amazon CloudWatch を使用した、クラスターメトリクスと統計情報の監視」で説明されているように、赤のクラスター状態は、プライマリとレプリカのシャードが、クラスターのノードに割り当てられていないことを意味します。赤のクラスター状態が保持されている間は、正常なインデックスのものであっても、Amazon ES によって自動スナップショットは作成されません。

    この状態は、一般的に次のような原因で発生します。

    • Elasticsearch クラスターのデータノードで空きストレージ容量が不足しています

    • データノードの処理の継続的な高負荷のために Elasticsearch プロセスがクラッシュしました

    赤のクラスター状態の原因が、空きストレージ容量の不足や、処理の負荷が継続的に高いことである場合は、対応が必要です。

    空きストレージ容量の不足からの復旧

    Elasticsearch クラスターのデータノードで空きストレージ容量が不足しないようにするには、FreeStorageSpace クラスターメトリクスをモニタリングします。メトリクスが 0 に到達すると、Amazon ES は ClusterBlockException をスローします。このような場合、影響を受けるクラスターは設定の変更を処理できず、サービスに対するソフトウェアアップグレードのメリットを得ることができません。

    赤のインデックスによって発生した赤のクラスター状態を解決する

    1. Amazon ES ドメインのインデックスのうち、クラスター内のノードに割り当てられていないものを確認するには、Elasticsearch API の /_cat/indices を使用します。

      Copy
      curl -XGET 'http://<Elasticsearch_domain_endpoint>/_cat/indices

      詳細については、Elasticsearch のドキュメントの「cat インデックス」を参照してください。

    2. EBS ベースのストレージを追加し、より大きなインスタンスタイプを使用するか、影響を受けるインデックスからデータを削除します。 詳細については、「EBS ストレージ設定」および「Amazon ES ドメイン設定」を参照してください。

    クラスターが赤の状態になった場合に通知を受信できるように、Amazon CloudWatch アラームを作成できます。詳細については、『Amazon CloudWatch 開発者ガイド』の「Amazon CloudWatch アラームの作成」を参照してください。

    処理の継続的な高負荷からの復旧

    赤のクラスター状態がデータノードの処理の継続的な高負荷によるものであるかどうかを判断するには、次のクラスターメトリクスをモニタリングします。

    関連するメトリクス 説明 復旧
    JVMMemoryPressure クラスター内のすべてのデータノードで使用する Java ヒープのパーセンテージを指定します。このメトリクスの [Maximum] の統計を表示し、重いメモリプレッシャーのパターンを示す変動を探します。このパターンは通常、複雑なクエリまたは大きいデータフィールドが原因です。 JVM のメモリ サーキットブレーカーを設定します。 詳細については、「JVM OutOfMemoryError」を参照してください。
    CPUUtilization クラスター内のデータノードで使用する CPU リソースのパーセンテージを指定します。このメトリクスの [Maximum] の統計を表示し、使用量の多い継続的なパターンを探します。 データノードを追加するか、既存のデータノードのインスタンスタイプのサイズを大きくします。詳細については、「Amazon ES ドメイン設定」を参照してください。
    Nodes クラスターのノード数の指定。このメトリクスの [Minimum] の統計を表示します。 サービスがクラスターの新しいインスタンス群をデプロイすると、この値が変動します。 データノードを追加します。詳細については、「Amazon ES ドメイン設定」を参照してください。

    黄色のクラスター状態

    黄色のクラスター状態は、すべてのインデックスのプライマリシャードがクラスター内のノードに割り当てられ、少なくとも 1 つのインデックスのレプリカシャードは割り当てられていないことを意味します。単一ノードクラスターでは、Amazon ES がレプリカを割り当てることができる他のノードがないため、常に黄色のクラスター状態で初期化されることに注意してください。緑のクラスター状態を確保するには、ノード数を増やします。詳細については、このガイドの「Amazon ES ドメインの設定」および Elasticsearch ドキュメントの「インデックス設定を更新する」を参照してください。

    ClusterBlockException

    以下の問題の ClusterBlockException エラーを受け取る場合があります。

    FreeStorageSpace を使用しない Logstash

    Logstash では、書き込み可能なストレージ容量の不足など、多くの理由で ClusterBlockException がスローされる場合があります。クラスターへバルクデータをロードするときに Logstash から ClusterBlockException エラーを受け取った場合は、クラスターでストレージ容量が不足していないかどうかを確認します。そのためには、Amazon ES コンソールのドメインダッシュボードを開きます。[Monitoring] タブを選択し、次に [FreeStorageSpace] メトリクスを選択します。利用可能な空きストレージ容量が 0 の場合、より大きなインスタンスタイプを使用するようクラスターを設定するか、EBS ボリュームを追加してストレージを増やします。詳細については、「Amazon ES ドメイン設定」および「EBS ストレージ設定」を参照してください。

    メモリ不足によるディスクのブロック

    t2 インスタンスでは、[JVMMemoryPressure] メトリクスが 92% を超えた場合、クラスターが赤の状態になるのを防ぐため、Amazon ES はすべての書き込みオペレーションをブロックすることによる保護メカニズムをトリガーします。保護が有効な状態では、書き込みオペレーションは ClusterBlockException エラーで失敗し、新しいインデックスは作成できず IndexCreateBlockException エラーがスローされます。

    JVM OutOfMemoryError

    JVM の OutOfMemoryError は、一般的に次のいずれかの JVM サーキットブレーカーに到達したことを意味します。

    サーキットブレーカー 説明 クラスター設定プロパティ
    親ブレーカー すべてのサーキットブレーカーで JVM ヒープメモリのパーセンテージの合計に許可されます。 デフォルト値は 70% です。 indices.breaker.total.limit

    詳細については、Elasticsearch のドキュメントの「Cluster Update Settings」を参照してください。

    フィールド データ ブレーカー JVM ヒープメモリのパーセンテージは、メモリに単一のデータフィールドをロードすることを許可します。 デフォルト値は 60% です。 大きいフィールドを使用してデータをアップロードする場合は、この上限を引き上げることをお勧めします。 indices.breaker.fielddata.limit

    詳細については、Elasticsearch のドキュメントの「フィールドデータ」を参照してください。

    リクエストブレーカー JVM ヒープメモリのパーセンテージは、サービスリクエストに応答するために使用されるデータ構造に許可されます。 デフォルト値は 40% です。 サービスリクエストが集計の計算を含む場合は、この上限を引き上げることをお勧めします。 indices.breaker.request.limit

    詳細については、Elasticsearch のドキュメントの「フィールドデータ」を参照してください。

    注記

    /_cluster/settings オペレーションでは、HTTP GET メソッドはサポートされていません。 3 つのクラスター設定を設定できますが、取得することはできません。