この記事では設定例のみを示しており、ローカル/オンプレミス デプロイメントで Liferay DXP を Elasticsearch と共に設定する方法に精通していることを前提としています。
目次
- 環境 - Elastic Stack 7.x & 8.x
- 解決 - Elastic Stack 7.x & 8.x
- 環境 - Elastic Stack 6.8.x
- 解決 - Elastic Stack 6.8.x
- モニタリングの設定
- Elastic Cloud の制限
- Cloud Provider の制限
環境 - Elastic Stack
解決 - Elastic Stack 7.x and 8.x
-
前提条件:
- Elastic Cloud のトライアルまたは有料アカウント
- Elasticsearch で、必要な 4 つのアナライザー プラグイン (analysis-icu、analysis-kuromoji、analysis-smartcn、analysis-stempel) が有効になっていることを確認します (デプロイメントを選択 > Edit > Elasticsearch service > Manage user settings and extensions > Extensions)
-
elasticsearch.ymlに次のプロパティを追加します: Edit > Elasticsearch service > Manage user settings and extensions > User Settings of your deployment へ移動:
-
cluster.indices.close.enable: true
-
- デプロイメント作成プロセスの最後に Elastic Cloud から提供されるデプロイメント資格情報を保存します。
- username: elastic
- password: <password>
- デプロイメントの概要ページから、Elasticsearch Service の Endpoint をコピーします。これは次のようになります:
-
https://liferay****.gcp.cloud.es.io
- 9243 はHTTPポートです。DXP 7.3 および 7.4 では必要ありませんが、指定できます。ただし、DXP 7.2では、以下の設定でトランスポート ポートに9343を指定する必要があります。
-
- Liferay DXPが実行中の場合は停止します。
-
[Liferay-Home]/osgi/configs
に以下の内容のcom.liferay.portal.search.elasticsearch7.configuration.ElasticsearchConfiguration.config
を作成します。-
DXP 7.3 と 7.4:
-
networkHostAddresses=["https://liferay***.gcp.cloud.es.io"]
productionModeEnabled=B"true"
username="elastic"
password="<password>"
authenticationEnabled=B"true"
httpSSLEnabled=B"true"
truststorePassword="<password-of-the-JDK-cacerts-file>"
truststorePath="/PATH/TO/JDK/cacerts"
truststoreType="jks" - networkHostAddresses: この単一のトランスポート アドレス (Elasticsearch Endpointから取得可能) は、コネクタ構成で設定する必要がある唯一のアドレスです。
- truststorePath: JDK11の場合は JAVA_HOME/lib/security JDK8の場合は JAVA_HOME/jre/lib/security に有るデフォルトのcacertsファイルを指します。パスワードのデフォルトはchangeitです。
- Elastic CloudのSecurity related restrictionsもご参照ください。
-
-
DXP 7.2:
-
clusterName="5b8cfb0167c54ab4afb1bbd157471f77"
clientTransportSniff=B"false"
operationMode="REMOTE"
transportAddresses=["5b8cfb0167c54ab4afb1bbd157471f77.us-west1.gcp.cloud.es.io:9343"] - clusterName: Elasticsearch Endpointから取得されます。
- clientTransportSniff: スニッフィングを無効にする必要があります。(参照)
- transportAddresses: この単一のトランスポート アドレス (Elasticsearch Endpointから取得可能) は、コネクタ構成で設定する必要がある唯一のアドレスです。 "Elasticsearch Service でホストされているデプロイメントはproxyの背後にあるため、トランスポート クライアントが Elasticsearch クラスターと直接通信することはできません (参照)”。9343 を使用することを忘れないでください。
-
-
DXP 7.3 と 7.4:
- (DXP 7.2 のみ)
[Liferay-Home]/osgi/configs
のcom.liferay.portal.search.elasticsearch7.configuration.XPackSecurityConfiguration.config
に次の内容を追加します:-
certificateFormat="PKCS#12"
sslKeystorePath=""
sslKeystorePassword=""
sslTruststorePath="/PATH/TO/cacerts.p12"
sslTruststorePassword="changeit"
requiresAuthentication=B"true"
username="elastic"
password="<password>"
transportSSLVerificationMode="certificate"
transportSSLEnabled=B"true" -
sslTruststorePath: 次のコマンドを使用して、JDK のデフォルトの cacerts ファイルからすべてのエントリを PKCS#12 ファイルにエクスポートできます:
keytool -importkeystore -srckeystore /PATH/To/JDK/cacerts -srcstorepass changeit -destkeystore /PATH/TO/cacerts.p12 -deststoretype PKCS12 -storepass changeit
- Elastic Cloud のSecurity related restrictions もご参照ください 。
-
- (DXP 7.2 のみ) Connector to Elasticsearch 7 が以前にデプロイされていない場合は、LPKG ファイルをダウンロードして
[Liferay-Home]/osgi/marketplace
に配置します。 - Liferay DXPを起動します。
- コントロール パネルの検索管理に移動し、接続情報を確認します(DXP 7.1+)。すべてが正常に動作している場合は、次のように表示されます。
- インデックス アクションを使用して、完全な再インデックス (検索インデックスを再構築) を実行し、スペル チェック インデックス (スペルチェック辞書のインデックスを再構築します。) も再インデックスします。
環境 - Elastic Stack 6.8.x
- Liferay DXP 7.0-7.2 (DXP 7.2 SP2)*
- Liferay Connector to Elasticsearch 6 (v1.1.0, for DXP 7.0 only)
- Liferay Enterprise Search Security (Liferay Enterprise Search サブスクリプションが必要)
- Elasticsearch 6.8.10**
解決 - Elastic Stack 6.8.x
- 事前: デプロイメントのカスタマイズ画面で、必要な 4 つのアナライザー プラグイン (analysis-icu、analysis-kuromoji、analysis-smartcn、analysis-stempel) が設定されていることを確認します。
- デプロイメントの編集画面のユーザー設定の上書きセクションの elasticsearch.yml に次のプロパティを追加します:
-
cluster.indices.close.enable: true
-
- デプロイメント作成プロセスの最後に Elastic Cloud から提供されるデプロイメント資格情報を保存します。
- username: elastic
- password: <password>
- デプロイメントの概要ページからElasticsearch ServiceのDeployment Endpointをコピーします。これは次のようになります:
-
https://5b8cfb0167c54ab4afb1bbd157471f77.us-west1.gcp.cloud.es.io:9243
- 5b8cfb0167c54ab4afb1bbd157471f77 クラスタの名称です。
- 9243 は HTTP ポートです。以下の構成では、トランスポート ポートとして 9343 を使用する必要があります。
-
- Liferay DXPを停止します。
-
[Liferay-Home]/osgi/configs
に次の内容のcom.liferay.portal.search.elasticsearch6.configuration.ElasticsearchConfiguration.config
を作成します。-
clusterName="5b8cfb0167c54ab4afb1bbd157471f77"
operationMode="REMOTE"
transportAddresses=["5b8cfb0167c54ab4afb1bbd157471f77.us-west1.gcp.cloud.es.io:9343"]
clientTransportSniff=B"false" - clusterName: Deployment Endpointから取得されます。
- clientTransportSniff: スニッフィングを無効にする必要があります。 (参照)
- transportAddresses: この単一のトランスポート アドレス (Elasticsearch Endpointから取得可能) は、コネクタ構成で設定する必要がある唯一のアドレスです。 "Deployments hosted on Elasticsearch Service are behind proxies which prevent the transport client from communicating directly with Elasticsearch clusters" (参照). 9343 を使用することを忘れないでください。
-
-
[Liferay-Home]/osgi/configs
に次の内容のcom.liferay.portal.search.elasticsearch6.xpack.security.internal.configuration.XPackSecurityConfiguration.config
を作成します:-
certificateFormat="PKCS#12"
sslKeystorePath=""
sslKeystorePassword=""
sslTruststorePath="/home/tibusz/liferay/bundles/cacerts.p12"
sslTruststorePassword="changeit"
requiresAuthentication=B"true"
username="elastic"
password="<password>"
transportSSLVerificationMode="certificate"
transportSSLEnabled=B"true" -
sslTruststorePath: 次のコマンドを使用して、JDKのデフォルトのcacertsファイルからすべてのエントリをPKCS#12ファイルにエクスポートできます:
keytool -importkeystore -srckeystore /PATH/To/JDK/cacerts -srcstorepass changeit -destkeystore /PATH/TO/cacerts.p12 -deststoretype PKCS12 -storepass changeit
- Elastic Cloudの Security related restrictions もご参照ください。
-
-
Liferay Enterprise Search Security が以前にデプロイされていない場合は、LPKG ファイルをダウンロードして
[Liferay-Home]/osgi/marketplace
に配置します。 - Liferay DXP を開始。
- コントロールパネルの検索に移動し、接続情報を確認します。
-
DXP 7.2: すべてが正常に動作している場合は、次のような画面が表示されます:
-
Search Engine Vendor: Elasticsearch, Client Version: 6.8.6, Nodes: 5b8cfb0167c54ab4afb1bbd157471f77: [instance-0000000001 (6.8.10), instance-0000000000 (6.8.10), tiebreaker-0000000002 (6.8.10)]
-
-
DXP 7.3:「接続」タブに移動し、「アクティブな接続」セクションを確認します:
-
DXP 7.2: すべてが正常に動作している場合は、次のような画面が表示されます:
- インデックス管理を使用して、完全な再インデックス (検索で利用するインデックスを再構築する。) を実行し、スペル チェック インデックス (スペルチェック用インデックスを再構築する。) も再インデックスします。
Enterprise Search Monitoring/X-Pack Monitoring の設定
Kibanaサービスはserver.basePath
と server.rewriteBasePath
などの必要なユーザー設定をサポートしていないため、ホストされているKibanaを接続するように Liferay Enterprise Search Monitoring を構成することができません。
トラブルシューティング
サーバー証明書のダウンロードとインポート
通常、Azure、AWS、GCP のサーバーの証明書は信頼できる CA によって署名されているため、JDK のデフォルトの cacerts ファイルで十分です。接続の問題 (NoNodeAvailableException など) が発生した場合は、サーバーの証明書を取得してインポートし、DXP のコネクタ構成で使用してください。:
- Elasticsearchデプロイメントの証明書をダウンロードしてインポートします
- PEM 形式でサーバーの証明書をダウンロードします (たとえば、ブラウザの HTTPS 接続検査ツールまたは openssl を使用します):
openssl s_client -connect 5b8cfb0167c54ab4afb1bbd157471f77.us-west1.gcp.cloud.es.io:9243 -showcerts
- サーバー
gcp.cloud.es.io
の Base64 でエンコードされたテキスト(“-----BEGIN CERTIFICATE-----“ と “-----END CERTIFICATE -----“ の間) が対象の証明書です。
- 証明書のテキストを server.pem というファイルにコピーします。
- サーバーの証明書をクライアント(Liferay DXP)のPKCS# 12形式のトラストストアにインポートします。 (elastic-certificates.p12 はすでに作成されているものとします):
keytool -importcert -keystore elastic-certificates.p12 -storepass <password> -alias <preferred-alias> -file server.pem
- PEM 形式でサーバーの証明書をダウンロードします (たとえば、ブラウザの HTTPS 接続検査ツールまたは openssl を使用します):
- この .p12 ファイルを使用するようにコネクタ構成を更新します。
Elastic Cloud の制限
Elasticsearch と Kibana のすべての機能と構成が Elastic Cloud でサポートされているわけではありません。詳細については、以下の記事を参照してください:
https://www.elastic.co/guide/en/cloud/current/ec-restrictions.html
Cloud Provider の制限
選択したクラウド プロバイダーとサブスクリプション方法によっては、Elasticsearch Service のデプロイメントに追加の制限が適用される場合があります。影響を受ける機能の詳細については、次のリソースを参照してください:
- https://www.elastic.co/guide/en/cloud/current/ec-billing-aws.html
- https://www.elastic.co/guide/en/cloud/current/ec-billing-gcp.html
- https://www.elastic.co/guide/en/cloud/current/ec-billing-azure.html
Liferay DXP で利用可能な Elasticsearch コネクタの技術的な概要につきましては、こちらの記事をご参照ください。