Liferay Enterprise Search
ご覧のページは、お客様の利便性のために一部機械翻訳されています。また、ドキュメントは頻繁に更新が加えられており、翻訳は未完成の部分が含まれることをご了承ください。最新情報は都度公開されておりますため、必ず英語版をご参照ください。翻訳に問題がある場合は、 こちら までご連絡ください。

[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の商標です。 そして他の国々でも。