OpenSearch
ご覧のページは、お客様の利便性のために一部機械翻訳されています。また、ドキュメントは頻繁に更新が加えられており、翻訳は未完成の部分が含まれることをご了承ください。最新情報は都度公開されておりますため、必ず英語版をご参照ください。翻訳に問題がある場合は、 こちら までご連絡ください。

演習:Dockerを使用してLiferayとOpenSearchを実行する

サブスクリプションが必要です Liferay DXP 2025.Q1+

ローカルマシン上で最小限のLiferay-OpenSearchセットアップを実行して、OpenSearchとLiferay間の安全なHTTPS接続がどのように構成されるかを確認してください。 この例では、共有Dockerネットワーク上で、OpenSearch用とLiferay用の2つのDockerコンテナを使用し、OpenSearchコンテナのホスト名をサブジェクト代替名(SAN)として含むカスタム証明書を使用します。 完全なインストールガイドについては、 OpenSearch のインストール を参照してください。

始める前に、 DockerOpenSSL をインストールしてください。

ローカルフォルダとDockerネットワークを作成する

  1. バインドマウントの設定とデータをコンテナ内に格納するためのフォルダ構造を作成します。 OpenSearchはデータフォルダに書き込む必要があるため、それに応じてアクセス権限を設定してください。

    mkdir -p test-opensearch-install/certs && \
    mkdir -p test-opensearch-install/opensearch-data -m a+w && \
    mkdir -p test-opensearch-install/dxp/files/osgi/configs && \
    mkdir -p test-opensearch-install/dxp/deploy && \
    cd test-opensearch-install
    
    ヒント

    cd test-opensearch-install コマンドを実行すると、 test-opensearch-install フォルダーに移動します。 このフォルダにある残りのコマンドをすべて実行してください。

  2. コンテナがホスト名で通信できるように、Dockerネットワークを作成します。

    docker network create opensearch-net
    

セキュリティ証明書を生成する

OpenSearchでは、トランスポート層(ノード内部通信)とHTTP層(クライアント接続)の両方に証明書が必要です。 証明書には、SAN として DNS:opensearch を含める必要があります。これにより、Docker ネットワーク上で名前を使用して OpenSearch コンテナに接続する際に、Liferay の SSL 検証が成功します。 以下の手順では、認証局(CA)を作成し、それを使用してノード証明書に署名し、OpenSearch用のPKCS#12キーストアと、Liferayが接続を検証するためのCA証明書を含む別のトラストストアという2つのファイルを生成します。

  1. 認証局(CA)を生成する:

    openssl genrsa -out certs/ca.key 2048
    openssl req -x509 -new -nodes -key certs/ca.key -sha256 -days 730 \
      -out certs/ca.pem -subj "/CN=OpenSearch-CA"
    
  2. ノードキーと証明書署名要求を生成します。

    openssl genrsa -out certs/opensearch.key 2048
    openssl req -new -key certs/opensearch.key \
      -out certs/opensearch.csr -subj "/CN=opensearch"
    
  3. SAN拡張ファイルを作成します。 DNS:opensearch エントリは、Docker ネットワーク上のコンテナ名と一致します。

    printf 'subjectAltName=DNS:opensearch,DNS:localhost,IP:127.0.0.1' \
      > certs/opensearch.ext
    
  4. 認証局(CA)と証明書に署名してください。

    openssl x509 -req -sha256 -days 730 \
      -in certs/opensearch.csr \
      -CA certs/ca.pem -CAkey certs/ca.key -CAcreateserial \
      -out certs/opensearch.pem \
      -extfile certs/opensearch.ext
    
  5. PKCS#12キーストアへのエクスポート:

    openssl pkcs12 -export \
      -in certs/opensearch.pem -inkey certs/opensearch.key \
      -CAfile certs/ca.pem -chain \
      -out certs/opensearch.p12 -passout pass:liferay
    
  6. CA証明書を信頼済みエントリとして含む別のトラストストアを作成します。

    keytool -import -trustcacerts -alias ca -file certs/ca.pem \
      -keystore certs/truststore.p12 -storetype PKCS12 \
      -storepass liferay -noprompt
    
  7. 証明書ファイルをコンテナが読み取れるようにします。

    chmod a+r certs/*
    

OpenSearchの設定

セキュリティプラグインがPKCS#12証明書を使用するように構成する opensearch.yml ファイルを作成します。 このファイルを test-opensearch-install フォルダーに保存してください。

cluster.name: LiferayOpenSearchCluster
node.name: opensearch
network.host: 0.0.0.0
discovery.type: single-node
indices.query.bool.max_clause_count: 4096

plugins.security.ssl.transport.enabled: true
plugins.security.ssl.transport.keystore_type: PKCS12
plugins.security.ssl.transport.keystore_filepath: certs/opensearch.p12
plugins.security.ssl.transport.keystore_password: liferay
plugins.security.ssl.transport.truststore_type: PKCS12
plugins.security.ssl.transport.truststore_filepath: certs/truststore.p12
plugins.security.ssl.transport.truststore_password: liferay
plugins.security.ssl.transport.enforce_hostname_verification: false

plugins.security.ssl.http.enabled: true
plugins.security.ssl.http.keystore_type: PKCS12
plugins.security.ssl.http.keystore_filepath: certs/opensearch.p12
plugins.security.ssl.http.keystore_password: liferay
plugins.security.ssl.http.truststore_type: PKCS12
plugins.security.ssl.http.truststore_filepath: certs/truststore.p12
plugins.security.ssl.http.truststore_password: liferay

plugins.security.allow_default_init_securityindex: true
plugins.security.nodes_dn:
  - 'CN=opensearch'
plugins.security.authcz.admin_dn:
  - 'CN=admin'

OpenSearchコンテナがファイルを読み取れるようにします。

chmod a+r opensearch.yml

OpenSearchを開始する

カスタム証明書と設定をマウントした状態で、 opensearch-net ネットワーク上で OpenSearch コンテナを起動します。 DISABLE_INSTALL_DEMO_CONFIG=true を設定すると、デモ構成インストーラーがカスタムの opensearch.yml を上書きするのを防ぎます。

docker run -it -m 2g \
  --name opensearch \
  --network opensearch-net \
  -e "DISABLE_INSTALL_DEMO_CONFIG=true" \
  -p 9200:9200 \
  -v $(pwd)/certs:/usr/share/opensearch/config/certs \
  -v $(pwd)/opensearch.yml:/usr/share/opensearch/config/opensearch.yml \
  -v $(pwd)/opensearch-data:/usr/share/opensearch/data \
  opensearchproject/opensearch:2

SELinuxが有効になっているシステム(例:Fedora、RHEL)では、コンテナがバインドマウントされたファイルにアクセスできるように、各ボリュームマウントに :z を追加します。

docker run -it -m 2g \
  --name opensearch \
  --network opensearch-net \
  -e "DISABLE_INSTALL_DEMO_CONFIG=true" \
  -p 9200:9200 \
  -v $(pwd)/certs:/usr/share/opensearch/config/certs:z \
  -v $(pwd)/opensearch.yml:/usr/share/opensearch/config/opensearch.yml:z \
  -v $(pwd)/opensearch-data:/usr/share/opensearch/data:z \
  opensearchproject/opensearch:2

OpenSearchがセキュリティインデックスをデフォルト設定で初期化するため、初回起動には通常よりも時間がかかります。 続行する前に、 [oonNode] [opensearch] started のようなログ メッセージが表示されるまで待ってください。

分析プラグインをインストールする

Liferayでは、OpenSearchに以下の分析プラグインが必要です。

  1. 新しいターミナルウィンドウを開き、実行中のコンテナにexecコマンドで接続します。

    docker exec -it opensearch /bin/bash
    
  2. 必要なプラグインをインストールしてください。

    ./bin/opensearch-plugin install analysis-icu analysis-kuromoji analysis-smartcn analysis-stempel
    
  3. シェルを終了する:

    exit
    
  4. OpenSearchコンテナをCtrl+Cで停止し、再起動してプラグインを登録してください。

    docker start -i opensearch
    

Liferayの設定

  1. Elasticsearch固有のモジュールを無効にするための設定ファイルを作成します。

    touch dxp/files/osgi/configs/com.liferay.portal.bundle.blacklist.internal.configuration.BundleBlacklistConfiguration.config
    

    ファイルを開いて、以下の内容を入力してください。

    blacklistBundleSymbolicNames=[\
     "com.liferay.portal.search.elasticsearch.cross.cluster.replication.impl",\
     "com.liferay.portal.search.elasticsearch.monitoring.web",\
     "com.liferay.portal.search.elasticsearch8.api",\
     "com.liferay.portal.search.elasticsearch8.impl",\
     "com.liferay.portal.search.learning.to.rank.api",\
     "com.liferay.portal.search.learning.to.rank.impl"\
    ]
    

    Liferay DXP 2025.Q1–Q4 では、Elasticsearch バンドルのシンボル名に elasticsearch7 が含まれ、 elasticsearch8 の代わりに含まれています。

  2. OpenSearchの設定ファイルを作成します。

    touch dxp/files/osgi/configs/com.liferay.portal.search.opensearch2.configuration.OpenSearchConfiguration.config
    

    ファイルを開いて、以下の内容を入力してください。

    remoteClusterConnectionId="REMOTE"
    
  3. 接続設定ファイルを作成します。

    touch dxp/files/osgi/configs/com.liferay.portal.search.opensearch2.configuration.OpenSearchConnectionConfiguration-REMOTE.config
    

    ファイルを開いて、以下の内容を入力してください。

    active=B"true"
    authenticationEnabled=B"true"
    connectionId="REMOTE"
    httpSSLEnabled=B"true"
    networkHostAddresses=["https://opensearch:9200"]
    password="admin"
    truststorePassword="liferay"
    truststorePath="/opt/liferay/opensearch/certs/truststore.p12"
    truststoreType="pkcs12"
    username="admin"
    
    警告

    これは、OpenSearch のセキュリティ プラグインのデフォルトのデモ管理者認証情報 (admin/admin) を使用します。 これは地域的な演習には許容されるが、実運用には使用してはならない。 認証を適切に設定するには、 OpenSearch のセキュリティドキュメント を参照してください。

OpenSearchコネクタをデプロイする

Liferay Marketplace から、 OpenSearch のインストール の手順に従って、OpenSearch 2 への Liferay コネクタをダウンロードします。 LPKG ファイルを入手したら、それを dxp/deploy/ フォルダーにコピーします。

cp /path/to/liferay-connector-to-opensearch-2.lpkg dxp/deploy/

Liferayは起動時にこのフォルダからコネクタを自動的に取得します。

Liferayを起動する

同じ opensearch-net ネットワーク上で Liferay コンテナを起動します。 DXP構成フォルダと証明書フォルダをマウントします。

docker run -it --memory 9g \
  --name liferay \
  --network opensearch-net \
  --publish 8080:8080 \
  --volume $(pwd)/dxp:/mnt/liferay \
  --volume $(pwd)/certs:/opt/liferay/opensearch/certs \
  liferay/portal:7.4.3.132-ga132

SELinuxが有効なシステム(例:Fedora、RHEL)では、各ボリュームマウントに :z を追加します。

docker run -it --memory 9g \
  --name liferay \
  --network opensearch-net \
  --publish 8080:8080 \
  --volume $(pwd)/dxp:/mnt/liferay:z \
  --volume $(pwd)/certs:/opt/liferay/opensearch/certs:z \
  liferay/portal:7.4.3.132-ga132

チェックポイント: Liferay が起動したら、 コントロール パネル設定検索 で OpenSearch 接続がアクティブになっていることを確認します。

検索管理パネルにアクティブな接続が表示されます。

インデックスアクション タブの コントロール パネル設定検索 から検索とスペルチェックのインデックスを再インデックスします。

掃除

この演習のために作成されたすべてのものを削除するには、まず両方のコンテナを停止してから、次の手順に従ってください。

  1. 容器を取り外します。

    docker container rm opensearch liferay
    
  2. Dockerネットワークを削除します。

    docker network rm opensearch-net
    
  3. フォルダ構造を削除します。 まず、 test-opensearch-install フォルダーの親フォルダーにいることを確認してから、以下を実行してください。

    rm -fr test-opensearch-install