シャードの割り当て、移動、および回復

Elasticsearchの各indexは、1つ以上のshardsに分割されます。インデックス内の各ドキュメントは、単一のシャードに属します。

クラスターには、シャードの複数のコピーを含めることができます。各シャードには、プライマリと呼ばれる1つの特別なシャードコピーと、レプリカと呼ばれる0個以上の非プライマリコピーがあります。プライマリシャードコピーは、すべてのインデックス操作の主要なエントリポイントとして機能します。プライマリシャードコピーでの操作は、そのレプリカに転送されます。

レプリカは、クラスター内のnodesにわたってデータの冗長コピーを維持し、ハードウェアの故障から保護し、検索やドキュメントの取得などの読み取り要求に応じる能力を高めます。プライマリシャードコピーが失敗した場合、レプリカがプライマリに昇格し、プライマリの責任を引き継ぎます。

通常の操作の過程で、Elasticsearchはシャードコピーをノードに割り当て、クラスターのバランスを取るためにノード間でシャードコピーを移動し、新しいコピーを初期化するためにシャードを回復します。このトピックでは、これらの操作がどのように機能するか、そしてそれらを制御する方法を学びます。

クラスター内のシャードの数とサイズを最適化する方法については、Size your shardsを参照してください。シャードおよびシャードコピー間での読み取りおよび書き込み操作の複製方法については、Reading and writing documentsを参照してください。

シャードの割り当て

シャードの割り当ては、シャードコピーをノードに割り当てるプロセスです。これは、初期回復中、レプリカの割り当て、再バランス、ノードがクラスターに追加または削除されるとき、または割り当てに影響を与えるクラスターまたはインデックス設定が更新されるときに発生する可能性があります。

デフォルトでは、インデックスのプライマリおよびレプリカシャードコピーは、クラスター内の任意のノードに割り当てることができ、クラスターのバランスを取るために移動されることがあります。

シャードの割り当て設定を調整する

シャードコピーの割り当て方法を制御するには、次の設定を使用できます:

  • Cluster-level shard allocation settings:これらの設定を使用して、シャードコピーがクラスター全体にどのように割り当てられ、バランスが取られるかを制御します。たとえば、ノードの可用性ゾーンを割り当てたり、特定のノードが使用されないようにしてメンテナンスを行うことができます。
  • Index-level shard allocation settings:これらの設定を使用して、特定のインデックスのシャードコピーがどのように割り当てられるかを制御します。たとえば、特定のデータ層のノードにインデックスを割り当てたり、特定の属性を持つノードに割り当てたりすることができます。

シャードの割り当てを監視する

シャードコピーが未割り当ての場合、それはシャードコピーがクラスター内のどのノードにも割り当てられていないことを意味します。これは、シャードコピーを割り当てるのに十分なノードがクラスターにない場合や、シャード割り当てフィルタリングルールを満たすノードにシャードコピーを割り当てることができない場合に発生する可能性があります。シャードコピーが未割り当ての場合、クラスターは不健康と見なされ、黄色または赤のクラスター健康状態を返します。

シャードの割り当てを監視するには、次のAPIを使用できます:

未割り当てのシャードコピーのトラブルシューティングとクラスターの健康を回復する方法について詳しく学ぶ

シャードの回復

シャードの回復は、シャードコピーを初期化するプロセスであり、スナップショットからプライマリシャードを復元したり、プライマリシャードからレプリカシャードを作成したりします。シャードの回復が完了すると、回復されたシャードは検索およびインデックス作成に利用可能になります。

回復は、次のプロセス中に自動的に発生します:

  • インデックスを初めて作成するとき。
  • ノードがクラスターに再参加し、データパスに保持しているデータを使用して欠落しているプライマリシャードコピーを起動するとき。
  • プライマリから新しいレプリカシャードコピーを作成するとき。
  • 同じクラスター内の別のノードにシャードコピーを移動するとき。
  • snapshot restore操作。
  • cloneshrink、またはsplit操作。

シャードの回復の原因を特定するには、recoveryまたはcat recovery APIを使用できます。

シャード回復設定を調整する

シャードがどのように回復されるかを制御するには、たとえば回復操作で使用できるリソースや、回復の優先順位を付けるべきインデックスを調整するために、次の設定を調整できます:

シャード回復操作は、一般的なシャード割り当て設定も尊重します。

シャード回復を監視する

シャードの割り当てを監視するには、次のAPIを使用できます:

  • cat recovery APIを使用して進行中および完了した回復のリストを表示
  • index recovery APIを使用して特定の回復に関する詳細情報を表示

シャードの移動

シャードの移動は、シャードコピーを1つのノードから別のノードに移動するプロセスです。これは、ノードがクラスターに参加または離脱するとき、またはクラスターが再バランスされるときに発生する可能性があります。

シャードコピーが移動されると、ターゲットノードに新しいシャードコピーが作成されます。シャードコピーが完全に割り当てられ、回復されると、古いシャードコピーは削除されます。移動されるシャードコピーがプライマリの場合、古いシャードコピーが削除される前に、新しいシャードコピーがプライマリとしてマークされます。

シャード移動設定を調整する

シャードコピーがどのように、いつ移動されるかを制御できます。たとえば、シャードコピーがクラスターのバランスを取るために移動されるタイミングを制御する再バランス設定や、移動をトリガーするディスクベースのシャード割り当ての高水準を調整できます。これらの設定は、cluster-level shard allocation settingsの一部です。

シャード移動操作は、シャード割り当ておよび回復設定も尊重します。