ご覧のページは、お客様の利便性のために一部機械翻訳されています。また、ドキュメントは頻繁に更新が加えられており、翻訳は未完成の部分が含まれることをご了承ください。最新情報は都度公開されておりますため、必ず英語版をご参照ください。翻訳に問題がある場合は、 こちら までご連絡ください。
[LES] Elasticsearchでロードバランサーを使用する方法は?
環境
- Liferay DXP 7.0-7.2
- Elasticsearch 6.x、7.x
質問
F5のようなロードバランサーでElasticsearch*を使用するためのガイドラインはありますか?
答え
負荷分散に関しては、外部のロードバランサーを使用せずに利用できる既製のソリューションがいくつかあります。
- Elasticsearchには軽量ロードバランサーが含まれており、これを コーディネーションノードと呼びます。 これは、クラスターに参加する独立したESノードです。 データ自体は保存しませんが、クラスタの状態を認識し、要求されたデータを保存している適切なノードにリクエストを自動的に転送します。 結果セットを受け取ると、それを縮小して要求元に返送します。 Kibanaのコーディネーターノードを使用したロードバランシングの設定について、詳しくはこちらをご覧ください。
- .NETクライアントを使用している場合は、 利用可能なConnectionPoolタイプのいずれかを使用できます。 例えば、アプリケーションコード内で、ES接続を確立する際にSniffingConnectionPoolを定義することができます。 .NETクライアントはクラスタの状態を監視して利用可能なノードのリストを特定し、それらのノード間でリクエストを自動的にラウンドロビン方式で分配します。
- NESTクライアントを使用している場合は、同様に適切なIConnectionPoolタイプを ConnectionSettings に渡すことで同じ結果を得ることができます。 これは、Elasticsearchでロードバランシングを実装する簡単な方法です。
とはいえ、HTTPクライアントやトランスポートクライアントでロードバランサーを使用すること自体は問題ないはずですが、いくつか注意すべき点があります。
- HTTP クライアントと トランスポート クライアント は、ラウンドロビンを使用して単一の Elasticsearch ノードまたはノードのリストに接続します。 そのノードは、適切なデータノードと連携して操作を調整します。 ほとんどの操作は2ホップで行われるため、最初にどのノードに接続しても問題ありません。 ロードバランサーのシナリオでは、これは良いことです。 クライアントにロードバランサーのIPアドレスまたは名前を伝えるだけで済みます。
- TLSセキュリティを使用する場合、Elasticsearchがロードバランサーの背後にある場合は、2つの選択肢があります。
- 各ノードの証明書のSAN(Subject Alternative Name)にロードバランサーのDNS名を含め、TCPポート9200/9300をパススルーします。
- ロードバランサー上でプロキシのようにSSLを終端し、ロードバランサーの証明書を使用する
- トランスポート クライアントを使用する場合は、
スニッフィング(ドキュメントを参照を有効にしないでください。有効にすると、トランスポート クライアントが各ノードに直接接続しようとします。
* Elastic、Elasticsearch、およびX-Packは、米国で登録されたElasticsearch BVの商標です。 そして他の国々でも。