クラスター横断レプリケーション
サブスクリプション LES サブスクリプション
従来のLiferay DXP/検索エンジンのインストールでは、1つのLiferay DXPクラスターが1つのElasticsearchクラスターと通信し、検索エンジンクラスターへの1つの接続を介して、すべての読み取り(検索クエリの実行)および書き込み(ドキュメントの作成)要求を送信します。 この設定では、すべてのElasticsearchクラスターノードが単一のデータセンターに配置されていることを前提としています(ただし、Liferay DXPサーバーとは異なるデータセンターに配置することもできます)。
Elasticsearch は、データのローカリティとディザスタリカバリに関する懸念に対応するため、LES のサブスクライバがLiferay DXP で使用できる Elasticsearch 7+ 用のCross-Cluster Replication (CCR)機能をリリースしました(バージョンの互換性の詳細については、LES 互換性マトリックスを参照してください)。 LES CCRモジュールを使用すると、別の形のマルチデータセンター展開が可能です。 Elasticsearchクラスターのノードを複数のデータセンターに分散することはできませんが、各データセンターで個別のElasticsearchクラスターを構成して接続することはできます。
この構成では、リーダーインデックスを保持する1つのクラスターと、リーダーからレプリケートされたフォロワーインデックスを保持する少なくとも1つのクラスターを想定しています。 フォロワーインデックスは、Liferay DXPがデータを読み取るためにのみ使用されます。 リーダーインデックスは常に書き込みに使用されますが、読み取りにも使用できます。

上の図は、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 Platinum または Enterprise レベルのライセンスが必要です。 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を有効にすると(設定で[アップデート]をクリックした後---Configuring CCR in a Local Follower Data Centerを参照)、ローカルクラスター構成の各エントリが処理されます。 まず、 リモートクラスタ が クラスタ更新設定APIを介して登録されます。 リモート クラスター内の各インデックス ( . で始まるインデックスを除く) または除外インデックス設定で定義されているインデックス)の場合、 フォロワー作成API が呼び出され、リモートインデックスとのフォロワー/リーダー関係が設定されます。
既存のCCR構成を編集した後、またはCCRを無効にした場合、ローカルクラスタ構成に以前保存されていた各エントリが処理されます。 各インデックスについて、 フォローが一時停止され、、 インデックスが閉じられ、、 リーダーのフォローが解除され、、 フォロワーインデックスが削除されます。。 リモート クラスターは、 クラスター更新設定 API を介して登録解除されます。 CCRを無効にするだけの場合は、ここで処理が終了します。 構成を編集する場合、既存のローカルクラスター構成エントリは、CCRを初めて有効にする場合と同じように引き続き処理されます。 各エントリに対して、 リモート クラスター が クラスター更新設定 API を介して登録されます。 各リモート クラスター内のすべてのインデックス ( . で始まるインデックスを除く) または除外インデックス設定で定義されているもの) フォロワー作成API が呼び出され、リモートインデックスとのフォロワー/リーダー関係が設定されます。
手順が理解できたので、 基本的な具体的な使用例 を示し、ローカルの例の設定を開始します。