Documentation

クラスター横断レプリケーション

Liferay Enterprise Search(LES)サブスクライバー

従来のLiferay DXP/検索エンジンのインストールでは、1つのLiferay DXPクラスターが1つのElasticsearchクラスターと通信し、検索エンジンクラスターへの1つの接続を介して、すべての読み取り(検索クエリの実行)および書き込み(ドキュメントの作成)要求を送信します。 この設定では、すべてのElasticsearchクラスターノードが単一のデータセンターに配置されていることを前提としています(ただし、Liferay DXPサーバーとは異なるデータセンターに配置することもできます)。

Elasticsearchは、データの局所性とディザスタリカバリに関する懸念に対処するために、 LESサブスクライバー がElasticsearch 7以降でLiferay DXPで使用できる クラスター横断レプリケーション(CCR) 機能をリリースしました(バージョン互換性の詳細は、 LES互換性マトリックス を参照してください)。 LES CCRモジュールを使用すると、別の形のマルチデータセンター展開が可能です。 Elasticsearchクラスターのノードを複数のデータセンターに分散することはできませんが、各データセンターで個別のElasticsearchクラスターを構成して接続することはできます。

この構成では、 リーダー インデックスを保持する1つのクラスターと、リーダーからレプリケートされた フォロワー インデックスを保持する少なくとも1つのクラスターを想定しています。 フォロワーインデックスは、Liferay DXPがデータを読み取るためにのみ使用されます。 リーダーインデックスは常に書き込みに使用されますが、読み取りにも使用できます。

クラスター横断レプリケーションを使用すると、異なるデータセンターがLiferay DXPインデックスを使用して同期されたElasticsearchクラスターを保持できます。

上の図は、CCRの最小限の例を示しています。 各データセンターには、1つ以上のDXPノードと1つのElasticsearchクラスターがあります。 米国のデータセンターには、すべてのDXPノードが書き込みを行うリーダーインデックスが保持されています。 ハンガリーのデータセンターには、ローカル(ハンガリー)のDXPノードが読み取りを行うフォロワーインデックスが保持されています。 データは、リーダーからフォロワーへの一方向にレプリケートされます。

Liferay DXPは、ワイドエリアネットワーク(WAN)プロトコルを介して、ノードが異なる場所にある分散クラスターのアイデアを長い間サポートしてきました。 Liferay DXPの柔軟性とElasticsearchのクラスター横断レプリケーションのサポートにより、さまざまなシステム設計をサポートできます。

クラスター横断レプリケーションを設定するには、次のことを行う必要があります

  • LESの活性化

  • Liferay 7.2 と 7.3 では、フォロワーの Elasticsearch インデックスから読み込む Liferay DXP ノードに CCR モジュールをインストールします。

  • リーダークラスターからレプリケートするインデックスを選択する

  • Elasticsearchクラスターを構成する

  • Liferay DXPクラスターのElasticsearch接続を設定する

  • フォロワーインデックスから読み取りを行うLiferay DXPノードでクラスター横断レプリケーションを有効にして設定する

Liferay DXP:LESクラスター横断レプリケーションモジュールのインストール

注釈

Liferay DXP 7.4より、Liferay Enterprise Search (LES)アプリケーションは、すべてのLiferay DXPバンドルとDockerコンテナに含まれています。 そのため、Liferay DXP 7.4+ では、モジュールのインストールは不要です。 詳しくは、LESの有効化を参照してください。

ローカルクラスターのフォロワーインデックスから読み取りを行い、リモートクラスターのリーダーインデックスへの個別の接続を介して書き込みを行うLiferay DXPノードには、CCRモジュールがインストールされている必要があります。 一貫性と適応性のために、クラスター内のすべてのノードにインストールするのが最善です。 このモジュールは、LESサブスクリプションとともに(LPKGファイルとして)ダウンロードできます。

Liferay DXP:リモートクラスターからレプリケートするインデックスを決定する

インストールされているデフォルトのLiferay DXP 7.3インデックスは、以下のリストに近似しています(変更される可能性があります)。 デフォルトのグローバル インデックス名接頭辞liferay-です。これはElasticsearch 7コネクタ設定で変更できます。 20101は、データベース内の特定の会社の生成されたcompanyIdです。 UIにインスタンスIDとして表示され、仮想インスタンスを表します。

インデックスID

インデックスタイプ

インデックスの目的

liferay-0

システムインデックス

システム設定アプリケーションでの検索

liferay-20101

会社インデックス

Liferay DXP仮想インスタンスのインデックス付きアセットの検索

liferay-20101-search-tuning-rankings

アプリインデックス

結果ランキングアプリケーションのプライマリデータストレージ

liferay-20101-search-tuning-synonyms

アプリインデックス

特定の仮想インスタンスの同義語セットアプリケーションのプライマリデータストレージ

liferay-20101-workflow-metrics-instances

アプリインデックス

ワークフロー統計情報アプリケーションのワークフローインスタンスに関するデータを保存する

liferay-20101-workflow-metrics-nodes

アプリインデックス

ワークフロー統計情報アプリケーションのワークフローノードに関するデータを保存する

liferay-20101-workflow-metrics-processes

アプリインデックス

ワークフロー統計情報アプリケーションのワークフロープロセスに関するデータを保存する

liferay-20101-workflow-metrics-sla-instance-results

アプリインデックス

ワークフロー統計情報アプリケーションのワークフローインスタンスごとのSLA結果のストレージ

liferay-20101-workflow-metrics-sla-task-results

アプリインデックス

ワークフロー統計情報アプリケーションのワークフロー タスクごとのSLA結果のストレージ

liferay-20101-workflow-metrics-tokens

アプリインデックス

ワークフロー統計情報アプリケーションのワークフロートークンに関するデータを保存する

liferay-20101-workflow-metrics-transitions

アプリインデックス

ワークフロー統計情報アプリケーションのワークフロートランジションに関するデータを保存する

重要

Liferay 7.2のインデックス名は、パッチによってインデックスの命名パターンに変更が加えられたため、より複雑になっています。 詳しくは、 マルチテナント・インデックス名 をご覧ください。 Liferay 7.1のインストールには、会社とシステムのインデックスだけが含まれています。

注釈

Liferay DXPは、カスタムElasticsearchインデックスを作成、使用(書き込み、読み込み)するためのAPIを提供します。 これらのAPIの使用方法については、 デベロッパーガイド を参照してください。

Liferay Commerce サブスクリプションがあり、インストールでアクティブ化されている場合は、次のようなインデックスもあります。

インデックスID

インデックスタイプ

インデックスの目的

liferay-20101-commerce-ml-forecast

アプリインデックス

機械学習機能

liferay-20101-product-content-commerce-ml-recommendation

アプリインデックス

レコメンデーションサービス

liferay-20101-product-interaction-commerce-ml-recommendation

アプリインデックス

レコメンデーションサービス

特段の理由がない限り、すべてのLiferay DXPインデックスとすべてのカスタムインデックスをフォロワーのElasticsearchクラスターにレプリケートする必要があります。

Elasticsearchクラスターを構成する

クラスター横断レプリケーションにも対応しているLiferay DXPでサポートされているバージョンを使用して、Elasticsearchクラスターをセットアップします。 詳細は、 LES互換性マトリックス を参照してください。

Liferay DXPが必要とするElasticsearchプラグインをインストールし、フォロワークラスターとリーダークラスターを区別するためのクラスター名 を指定してください。

CCRにはElasticsearchプラチナレベルのライセンスが必要ですが、 LESのお客様 はすでに所有しています。 ローカルでテストしている場合は、各クラスターで トライアルライセンス を開始してください。

Liferay DXPをElasticsearchに接続する

重要

最初にLiferay Clusteringの動作を設定します。 チュートリアルの例では、テスト用にいくつかの設定を行っています。 クラスタリングのドキュメント には、本番用クラスタのセットアップについての詳細が記載されています。

すべてのLiferay DXPノードには、2つのElasticsearch構成が必要です。本番モードを有効にし、リモートElasticsearch接続を宣言します。 これに対応するために、リモートElasticsearch接続をElasticsearch接続で設定する必要があります。 フォロワーのElasticsearchクラスターから読み取りを行うノードにも、追加の接続を定義する必要があります。 (.configファイルまたはシステム設定で)適切な構成値を指定してから、DXPノードを起動(または再起動)します。 リーダーインデックスの読み取りと書き込みを行うノードが正しく機能していることを確認します。

ノードを起動し、クラスター内のすべてのノードにLESアプリをインストールします(まだ起動していない場合)。

クラスター横断レプリケーションを有効にして構成する

Liferay DXPには、CCRセットアップを完了するためのロジックが含まれていますが、構成ファイルではなく、システム設定UIでCCR機能を有効にすることに依存しています。 最低でも、readFromLocalClustersプロパティがUIからトリガーされなければなりません。 CCRを構成したら、あとはインデックスのレプリケーションを確認して検索を開始するだけです。

初めてCCRを有効にすると(設定で [アップデート] をクリックした後--- ローカルフォロワーデータセンターでのCCRの構成 を参照)、ローカルクラスター構成の各エントリが処理されます。 まず、 リモートクラスタークラスターアップデート設定API を介して登録されます。 次に、リモートクラスター内の各インデックス(.から始まるインデックスまたは[除外するインデックス]設定で定義されたインデックスを除く)に対して、 フォロワーの作成API が呼び出され、リモートインデックスとのフォロワー/リーダーの関係が設定されます。

既存のCCR構成を編集した後、またはCCRを無効にすると、以前にローカルクラスター構成に保存された各エントリが処理されます。 インデックスごとに、 フォローが一時停止 され、 インデックスが閉じられリーダーがフォロー解除されフォロワーインデックスが削除 されます。 その後、リモートクラスターは クラスターアップデート設定API を介して登録解除されます。 CCRを無効にするだけの場合は、ここで処理が終了します。 構成を編集する場合、既存のローカルクラスター構成エントリは、CCRを初めて有効にする場合と同じように引き続き処理されます。 エントリごとに、 リモートクラスタークラスターアップデート設定API を介して登録されます。 各リモートクラスター内のすべてのインデックス(.から始まるインデックスまたは[除外するインデックス]設定で定義されたインデックスを除く)に対して、 フォロワーの作成API が呼び出され、リモートインデックスとのフォロワー/リーダーの関係が設定されます。

手順を理解したところで、基本的な特定のユースケースを使用して、ローカルの例の設定を開始しましょう。