生産計画

Elasticsearchは常に利用可能で、ニーズに応じてスケールするように設計されています。これは、自然に分散されることによって実現されます。サーバー(ノード)をクラスターに追加して容量を増やすことができ、Elasticsearchは自動的にデータとクエリの負荷をすべての利用可能なノードに分散します。アプリケーションを全面的に見直す必要はありません。Elasticsearchは、スケールと高可用性を提供するためにマルチノードクラスターのバランスを取る方法を知っています。ノードが多いほど、より良い結果が得られます。

これはどのように機能するのでしょうか?内部的には、Elasticsearchのインデックスは、1つ以上の物理シャードの論理的なグループに過ぎません。各シャードは実際には自己完結型のインデックスです。インデックス内のドキュメントを複数のシャードに分散し、それらのシャードを複数のノードに分散させることで、Elasticsearchは冗長性を確保し、ハードウェアの故障から保護し、クラスターにノードが追加されるとクエリ容量を増加させることができます。クラスターが成長(または縮小)すると、Elasticsearchは自動的にシャードを移動してクラスターのバランスを再調整します。

シャードには2種類あります:プライマリとレプリカです。インデックス内の各ドキュメントは1つのプライマリシャードに属します。レプリカシャードはプライマリシャードのコピーです。レプリカは、ハードウェアの故障から保護するためにデータの冗長コピーを提供し、ドキュメントの検索や取得などの読み取りリクエストに応じるための容量を増加させます。

インデックス内のプライマリシャードの数はインデックスが作成される時点で固定されますが、レプリカシャードの数はインデックスやクエリ操作を中断することなく、いつでも変更できます。

シャードサイズとシャード数

シャードサイズとインデックスに設定されたプライマリシャードの数に関しては、いくつかのパフォーマンス上の考慮事項とトレードオフがあります。シャードが多いほど、それらのインデックスを維持するためのオーバーヘッドが増えます。シャードサイズが大きいほど、Elasticsearchがクラスターのバランスを再調整する必要があるときにシャードを移動するのに時間がかかります。

多くの小さなシャードをクエリすることは、シャードごとの処理を速くしますが、クエリが多いほどオーバーヘッドも増えるため、少数の大きなシャードをクエリする方が速いかもしれません。要するに…それは状況によります。

出発点として:

  • 平均シャードサイズを数GBから数十GBの間に保つことを目指してください。時間ベースのデータを使用するケースでは、20GBから40GBの範囲のシャードが一般的です。
  • 無限のシャードの問題を避けてください。ノードが保持できるシャードの数は、利用可能なヒープスペースに比例します。一般的なルールとして、ヒープスペース1GBあたりのシャード数は20未満であるべきです。

最適な構成を決定する最良の方法は、自分のデータとクエリでテストすることです。

災害復旧

クラスターのノードは、お互いに良好で信頼できる接続を持つ必要があります。より良い接続を提供するために、通常は同じデータセンターまたは近くのデータセンターにノードを共同配置します。しかし、高可用性を維持するためには、単一障害点を避ける必要があります。ある場所で大規模な障害が発生した場合、別の場所のサーバーが引き継ぐことができる必要があります。その答えは?クロスクラスター複製(CCR)です。

CCRは、プライマリクラスターからセカンダリリモートクラスターにインデックスを自動的に同期する方法を提供し、ホットバックアップとして機能します。プライマリクラスターが失敗した場合、セカンダリクラスターが引き継ぐことができます。また、CCRを使用して、ユーザーに地理的に近い読み取りリクエストを処理するためのセカンダリクラスターを作成することもできます。

クロスクラスター複製はアクティブ-パッシブです。プライマリクラスターのインデックスはアクティブリーダーインデックスであり、すべての書き込みリクエストを処理します。セカンダリクラスターに複製されたインデックスは読み取り専用のフォロワーです。

セキュリティ、管理、監視

あらゆるエンタープライズシステムと同様に、Elasticsearchクラスターを保護、管理、監視するためのツールが必要です。Elasticsearchに統合されたセキュリティ、監視、管理機能により、Kibanaをクラスター管理のコントロールセンターとして使用できます。ダウンサンプリングインデックスライフサイクル管理などの機能は、時間の経過とともにデータを賢く管理するのに役立ちます。

詳細については、クラスターの監視を参照してください。