レジリエンスの設計

Elasticsearchのような分散システムは、そのコンポーネントの一部が故障しても動作し続けるように設計されています。十分に接続されたノードがその責任を引き継ぐことができる限り、Elasticsearchクラスターは、いくつかのノードが利用できないまたは切断されている場合でも、通常通りに動作し続けることができます。

レジリエントなクラスターのサイズには限界があります。すべてのElasticsearchクラスターは、機能するために以下のコンポーネントを必要とします:

レジリエントなクラスターは、必要なすべてのクラスターコンポーネントに冗長性を必要とします。これは、レジリエントなクラスターが以下のコンポーネントを持たなければならないことを意味します:

  • 少なくとも三つのマスターノード候補
  • 各役割の少なくとも二つのノード
  • 各シャードの少なくとも二つのコピー(主コピーと一つ以上のレプリカ、インデックスが 検索可能スナップショットインデックス でない限り)

レジリエントなクラスターは、三つのマスターノード候補を必要とします。これにより、もしそのうちの一つが故障した場合でも、残りの二つが過半数を形成し、成功した選挙を行うことができます。

同様に、各役割のノードの冗長性は、特定の役割のノードが故障した場合に、別のノードがその責任を引き継ぐことができることを意味します。

最後に、レジリエントなクラスターは、各シャードの少なくとも二つのコピーを持つべきです。一つのコピーが故障した場合、別の正常なコピーが引き継ぐべきです。Elasticsearchは、故障後にクラスターを完全な健康状態に戻すために、残りのノード上で故障したシャードコピーを自動的に再構築します。

故障は一時的にクラスターの総容量を減少させます。さらに、故障後、クラスターは自らを健康に戻すために追加のバックグラウンド活動を行う必要があります。いくつかのノードが故障しても、クラスターがワークロードを処理できる能力を持っていることを確認する必要があります。

ニーズと予算に応じて、Elasticsearchクラスターは単一のノード、数百のノード、またはその中間の任意の数で構成できます。小さなクラスターを設計する際には、通常、単一ノードの故障に対してレジリエントにすることに焦点を当てるべきです。大規模なクラスターの設計者は、複数のノードが同時に故障するケースも考慮しなければなりません。以下のページでは、さまざまなサイズのレジリエントなクラスターを構築するための推奨事項を示しています: