Liferay Enterprise Search

[LES] Elasticsearchでロードバランサーを使うには?

本コンテンツは、 Liferay Enterprise Search (LES) の有効なサブスクリプションをお持ちのお客様にご利用いただけます。

環境

  • Liferay DXP 7.0-7.2
  • Elasticsearch 6.x. 7.x.

質問

F5のようなロードバランサーでElasticsearch*を利用する際のガイドラインはありますか?

回答

ロードバランシングについては、外部のロードバランサーを使用することなく、すぐに利用できるソリューションがいくつかあります。

  • Elasticsearch には軽量なロードバランサーが含まれており、私たちはこれを 調整ノードと呼んでいます。 クラスタに参加するのは、別のESノードです。 データを保存しませんが、クラスタの状態を把握しており、リクエストされたデータを保存している適切なノードに自動的にリクエストを誘導します。 結果セットを受信したら、それを縮小してリクエスト元に送り返す。 Kibanaのコーディネートノードによるロードバランシングの設定について詳しくはこちら.
  • .NET クライアントを使用している場合、 利用可能な ConnectionPool タイプの 1 つを使用することができます。 例えば、アプリケーションコード内で、ES接続を確立する際に、 SniffingConnectionPool を定義することができます。 .NETクライアントは、クラスタの状態をスニッフィングして利用可能なノードのリストを決定し、それらの間で自動的にリクエストをラウンドロビンすることができます。
  • NEST クライアントを使用している場合、同様に ConnectionSettings に適切な IConnectionPool 型を渡すことで同様のことが実現できます。 これは、Elasticsearchにロードバランシングを実装するためのわかりやすい方法です。

つまり、HTTPまたはTransport Clientでロードバランサーを使用することは問題ありませんが、いくつか注意すべき点があります。

  • HTTPクライアントと Transport Client は、ラウンドロビンを使用して単一のElasticsearchノードまたはノードのリストに接続します。 そのノードは、正しいデータノードと操作を調整します。 ほとんどのオペレーションは2ホップであり、最初に接続するノードがどこであっても問題ないことを意味します。 ロードバランサーのシナリオでは、これは良いことです。 ロードバランサーのIPまたは名前をクライアントに与えるだけです。
  • TLSセキュリティの場合、Elasticsearchがロードバランサーの後ろにある場合、2つのオプションがあります:
    • 各ノードの証明書のSAN(Subject Alternative Name)にロードバランサーのDNS名を含め、TCPポート9200/9300をパススルーする。
    • ロードバランサーのSSLをプロキシのように終了させ、ロードバランサーの証明書を利用する
  • トランスポートクライアントを使用する場合、 スニッフィング (ドキュメントを参照) を有効にしないでください。トランスポートクライアントは各ノードへの直接接続を試みます。

* Elastic、Elasticsearch、X-Packは、Elasticsearch BVの商標であり、米国およびその他の国で登録されています。 を始めとする諸外国での

On this page