Amazon Elasticsearch Service クラスターで不均等なシャード分散を再調整するにはどうすればよいですか?

最終更新日: 2020 年 8 月 7 日

Amazon Elasticsearch Service (Amazon ES) ドメインのディスク容量がノード間で不均等に分散されています。その結果、ディスク使用量の歪度が高くなっています。ノード分散を再調整するにはどうすればよいですか?

簡単な説明

ディスク使用量は、次の理由により歪度が高くなる可能性があります。

  • クラスター内の不均等なシャードサイズ。Amazon ES はノード間でシャード数を均等に分散しますが、シャードのサイズによって必要となるディスク容量が異なる場合があります。
  • ノードで使用可能なディスク容量。(詳細については、Elasticsearch ウェブサイトの Disk-based shard allocation を参照してください。)
    正しくないシャード割り当て戦略。(詳細については、Elasticsearch シャード割り当ての解除を参照してください。)

Elasticsearch クラスターでシャード割り当てを再調整するには、次のアプローチを検討します。

  • シャードの割り当て、シャードサイズ、インデックスシャーディング戦略を確認します。
  • シャードのサイズがインデックス間で同じであることを確認します。
  • パフォーマンスを向上させるために、シャードサイズを 10 GB~50 GB に維持します。
  • Elasticsearch クラスターにデータノードを追加します。
  • シャーディング戦略を更新します。
  • 古いインデックスまたは未使用のインデックスを削除して、ディスク容量を解放します。

解決方法

シャードの割り当て、シャードのサイズ、インデックスシャーディング戦略を確認する

各ノードに割り当てられたシャードの数と各ノードで使用されているディスク容量を確認するには、次の API を使用します。

$ curl -XGET ES_Endpoint/_cat/allocation?v

各ノードに割り当てられたシャードと各シャードのサイズを確認するには、次の API を使用します。

$ curl -XGET ES_Endpoint/_cat/shards?v

注意: この API は、シャードのサイズがインデックスごとに異なる可能性があることを示しています。

インデックスについての不均等なシャーディング戦略により、大きなインデックスのシャードが少数のノードにのみ存在する場合、データの歪度が高くなる可能性があります。次の API を使用して、インデックスのシャーディング戦略を確認します。

$ curl -XGET ES_Endpoint/_cat/indices?v

シャードのサイズがインデックス間で同じであることを確認します。

インデックスのサイズが大幅に異なる場合は、ロールオーバーインデックス API を使用して、特定のインデックスサイズに達したときに新しいインデックスを作成します。または、Index State Management (ISM) を使用して、Amazon ES バージョン 7.1 以降の新しいインデックスを作成できます。ISM を使用したエイリアスのローリングの詳細については、Elasticsearch ウェブサイトの rollover を参照してください。

シャードサイズを 10 GB~50 GB に維持してパフォーマンスを向上させる

インスタンスのサイズが大きい場合は、Amazon Elasticsearch Service のペタバイト規模を使用してシャードサイズを決定します。たとえば、複数の i3.16xlarge.elasticsearch インスタンスがある Amazon ES ドメインでは、利用可能なリソースが増えるため、最大 100 GB のシャードサイズをサポートできます。シャーディング戦略の詳細については、シャード数の選択を参照してください。

Elasticsearch クラスターにデータノードを追加する

Elasticsearch クラスターが高いディスク使用レベルに達した場合は、クラスターにデータノードを追加します。データノードを追加すると、リソースが増え、クラスターのパフォーマンスが向上します。

注意: 使用可能なストレージ領域が不足している場合、Amazon ES はクラスターを自動的に再調整しません。そのため、データノードのストレージの空き容量が不足すると、クラスターは書き込みをブロックします。ディスク容量管理の詳細については、Amazon Elasticsearch Service (Amazon ES) ドメインにストレージ容量を追加するにはどうすればよいですか? を参照してください。

シャーディング戦略を更新する

デフォルトでは、Amazon ES には 5:1 のシャーディング戦略があります。この戦略においては、各インデックスは 5 つのプライマリシャードに分割されます。各インデックス内では、各プライマリシャードにも独自のレプリカがあります。Amazon ES では、障害が発生した場合に確実にバックアップがあるようにするため、プライマリシャードとレプリカシャードが別々のデータノードに自動的に割り当てられます。

Amazon ES のデフォルト動作を変更するには、シャードがサイズに基づいて均等に分散されるようにインデックスを設計します。

  • 既存のインデックスの場合、reindex API を使用してプライマリシャードの数を変更します。_reindex API を使用すると、小さいインデックスを大きいインデックスにマージしたり、大きいインデックスを分割したりできます。大きいインデックスがより多くのプライマリシャードに分割されると、シャードサイズは小さくなります。
  • 新しいインデックスの場合、template API を使用して、プライマリシャードとレプリカシャードの数を定義します。

次に、シャードのインデックス設定を更新します。詳細については、Elasticsearch ウェブサイトの Update indices settings を参照してください。

古いインデックスまたは未使用のインデックスを削除してディスク容量を解放する

Amazon ES バージョン 7.1 以降では、Index State Management がサポートされています。ISM では、カスタム管理ポリシーを定義して、定められた期間後に古いインデックスまたは未使用のインデックスを削除できます。


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


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