Elasticsearchのインストール
オンプレミス環境にElasticsearchをインストール、設定、起動する方法は以下のとおりです。
プライマリデータストレージ(データベースによってバックアップされていないデータを保存)に使用されているElasticsearchインデックスがある場合は、 スナップショットとリストアのアプローチを使用して、そのデータを新しいElasticsearchクラスタに取り込むことができます。 Liferay独自の検索チューニングインデックス(結果ランキングと類義語用)は、Liferay DXP 7.2および7.3における主要なストレージインデックスです。
本番環境に近いインストール環境のセットアップ
ホストの追加
localhostまたはDockerコンテナを使用してテスト環境をセットアップする場合は、これをスキップできます。 ローカルマシンで本番環境のようにセットアップするには、LiferayとElasticsearchクラスターのホストを追加します。 お使いのオペレーティングシステムのpath/to/etc/hostsファイルに次の情報を追加します。
<your IP> es-node1
<your IP> es-node2
<your IP> es-node3
<your IP> dxp.liferay.com
ループバックアドレス127.0.0.1ではなく、システムの実際のIPアドレスを使用してください。
mmapの調整
Elasticsearch は、ほとんどのオペレーティングシステムのデフォルトよりも高い mmap カウント (インデックスを保持するディレクトリをメモリにマッピングするため) を必要とします。 Linuxでは、rootユーザーとして、次のように実行します。
sysctl -w vm.max_map_count=262144
互換性ヘッダー
Elasticsearch 8 の場合、Liferay と Elasticsearch の間にファイアウォールまたはプロキシが存在する場合は、Liferay が各リクエストに設定する互換性 HTTP ヘッダーがネットワーク トラフィック内で許可され、保持されるようにしてください。 詳細については、 Elasticsearch のリクエスト REST API 互換性 を参照してください。
Elasticsearchをインストールする
-
Elasticsearchのアーカイブは、 ElasticのWebサイトからダウンロードできます。
重要お使いのLiferay バージョンと互換性のある最新の Elasticsearch アーカイブ をダウンロードしてください。
-
Elasticsearchを実行するローカルフォルダにアーカイブの内容を展開します。 このフォルダはあなたの Elasticsearch ホーム です。
-
[Elasticsearch Home]/binフォルダで以下のコマンドを実行して、必要な Elasticsearch プラグインをインストールします。./elasticsearch-plugin install analysis-icu./elasticsearch-plugin install analysis-kuromoji./elasticsearch-plugin install analysis-smartcn./elasticsearch-plugin install analysis-stempel
Elasticsearchの設定
各 Elasticsearch サーバーは、 [Elasticsearch Home]/config/elasticsearch.yml ファイルによって構成されます。
Elasticsearch 7 または 8.0 を使用している場合、まれに indices.query.bool.max_clause_count 設定 (デフォルトは 4096) を増やす必要がある場合があります。これは、 [*] のフィールド展開が一致しすぎるフィールド や クエリにネストされた句が多すぎる、などのエラーを防ぐためです。 maxClauseCount は 1024 に設定されています。 これを 1024 * [ヒープサイズ (GB)] に設定することを検討してください。 例えば、Elasticsearch の 8GB ヒープサイズでは、max clauses count の値を 8192 にする必要があります。 Elasticsearch 8.1以降では、この設定は無効です。最大句数 の値は動的に計算されます。
以下に、シングルノードおよびマルチノードのElasticsearchクラスタ構成例を示します。
Elasticsearch サーバーとの通信の認証と暗号化については、 Elasticsearch のセキュリティ保護 を参照してください。
例:シングルノードのプロダクションElasticsearchクラスタ
単一ノードクラスタ用の elasticsearch.yml 設定例を以下に示します。
cluster.name: LiferayElasticsearchCluster
discovery.type: single-node
http.port: 9200
network.host: es-node1
node.name: es-node1
transport.port: 9300
# セキュリティ設定を以下に追加します
xpack.security.enabled: false
# DXP 2024.Q2/Portal GA120 より前の Liferay バージョンの場合はコメントを解除します。 これは
# 'liferay-' で始まるインデックスの自動作成を無効にします
# action.auto_create_index: "-liferay-*"
Liferay DXP 2024.Q2+/Portal GA120+ は、 liferay- で始まるインデックスと、定義済みの カスタム インデックス名プレフィックス で始まるインデックスの Elasticsearch でのインデックス自動作成を自動的に無効にします。
LiferayElasticsearchCluster と呼ばれるこのクラスターには、 es-node1 と呼ばれるノードが 1 つあります。
本番モードの設定用にホストを構成していない場合は、ホスト値として localhost を使用してください。 Elasticsearchは、HTTPおよびトランスポート通信のためにループバックアドレスにバインドできます。 単一ノード検出に加えて、これはElasticsearchサーバーが 開発モードで実行されていることを意味します。
例:マルチノード本番環境向けElasticsearchクラスタ
以下は、3ノードクラスタの es-node3 というノードの elasticsearch.yml です。
cluster.name: LiferayElasticsearchCluster
# 本番モード設定例 - 3ノードクラスタ
cluster.initial_master_nodes:
- es-node1
- es-node2
- es-node3
discovery.seed_hosts:
- es-node1:9300
- es-node2:9301
- es-node3:9302
http.port: 9202
network.host: es-node3
node.name: es-node3
transport.port: 9302
# セキュリティ設定を以下に追加します
xpack.security.enabled: false
# Liferay バージョンが DXP 2024.Q2/Portal GA120 より前の場合、コメントを解除して
# 'liferay-' で始まるインデックスの自動作成を無効にします
# action.auto_create_index: "-liferay-*"
Liferay DXP 2024.Q2+/Portal GA120+ は、 liferay- で始まるインデックスと、定義済みの カスタム インデックス名プレフィックス で始まるインデックスの Elasticsearch でのインデックス自動作成を自動的に無効にします。
本番モードの設定用にホストを構成していない場合は、ホスト値として localhost を使用してください。 Elasticsearchは、HTTPおよびトランスポート通信のためにループバックアドレスにバインドできます。 これは 開発モードと呼ばれます。
Liferayコネクタは、 ネットワークホストアドレス 設定内のすべてのホストにリクエストを分散するため、クラスタ全体にリクエストを分散するための外部ロードバランサーは必要ありません。
関連するElasticsearchドキュメント:
各 Elasticsearch ノードの elasticsearch.yml ファイルでは、次のプロパティに一意の値を使用する必要があります。
ノード名http.portネットワークホスト輸送港
本番環境におけるシングルサーバーのブートストラップチェックの強制
Elasticsearch ブートストラップチェック 起動時に構成を検査し、不足または疑わしい構成の警告をログに記録します。 本番環境では、設定ミスがあった場合に起動を停止するようにブートストラップチェックを設定する必要があります。
シングルノードクラスタでブートストラップチェックを強制するには、ノードの [Elasticsearch Home]/config/jvm.options ファイルの末尾に次のプロパティを追加します。
-Des.enforce.bootstrap.checks=true
Elasticsearchを起動します
bin フォルダから Elasticsearch を起動します。
./elasticsearch
Elasticsearch が起動に失敗し、ログに ERROR メッセージ Elasticsearch exited unexpectedly が表示される場合は、ヒープ サイズを増やしてください。 テスト中は、 config/jvm.options ファイルを開き、 -Xms4g および -Xmx4g の例の設定のコメントを解除できます。 本番環境では、そのファイルに記載されている手順に従って、これらのパラメータを適切に設定してください。
Elasticsearchは、ノードの役割と合計メモリに基づいてヒープのサイズを決定します。Elastic社は、ほとんどの運用環境において、この自動サイズ決定を推奨しています。 ヒープを手動で設定する場合は、Elastic の JVM ヒープ サイズに関するガイダンス に従ってください。 -Xms と -Xmxには同じ値を使用し、ヒープをノードの総メモリの 50% 以下、かつ圧縮オブジェクトポインタのしきい値以下に維持してください。 正確なしきい値はシステムによって異なりますが、ほとんどのシステムでは26GBのヒープサイズがそれ以下です。 ヒープサイズが大きいと、ファイルシステムキャッシュに割り当てられるメモリが少なくなり、しきい値を超えると圧縮ポインタが失われるため、ノードの処理速度が低下する可能性があります。
詳細については、 Elasticsearch インストールのトラブルシューティング を参照してください。
Elasticsearchが起動し、そのステータスメッセージの一つにトランスポートアドレスが含まれています。
[2019-04-01T16:55:50,127][INFO ][oetTransportService ] [HfkqdKv] publish_address {127.0.0.1:9300}, bound_addresses {[::1]:9300}, {127.0.0.1:9300}
Liferay 7.2 を実行している場合は、TransportServiceのステータスメッセージに記載されているpublish_addressのアドレスに注意してください。Liferay サーバーがこのアドレスで Elasticsearch に接続できるように設定する必要があります。
Elasticsearch は Liferay からのつながりを受け付ける準備ができています。
本番環境で実行している場合は、 Liferay と Elasticsearch 間の通信を安全にしてください。