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

Tomcatによるセッションレプリケーション

Liferay DXP 2024.Q3+/ポータル GA92+

クラスタ内のすべてのインスタンス間でユーザーセッションデータが同期されるように、Liferay はセッションレプリケーションをサポートしています。 1 つのインスタンスに障害が発生しても、ユーザー セッションはクラスター内の他のノードに複製されるため、失われません。 Tomcat 上で DXP クラスターを使用している場合は、パフォーマンスを向上させるために、Liferay の DeltaManager の実装を使用できます。 これは、5 ノード以下のクラスターに推奨されます。

警告

LiferayDeltaManager は Tomcat の DeltaManager を完全に置き換えます。 セッションのレプリケーションは、Liferay の実装を使用した場合にのみ可能です。

警告

Liferay DXP 2025.Q3+/Portal GA146+にアップグレードする場合は、セッション永続性を手動で有効にする必要があります。 詳細については、 Apache のドキュメントを参照してください。

セッションレプリケーションの設定

  1. Liferay Home の conf/server.xml内の <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" /> を次の行に置き換えます。

    <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster">
        <Manager className="com.liferay.support.tomcat.session.LiferayDeltaManager" />
        <Channel className="org.apache.catalina.tribes.group.GroupChannel">
            <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
                <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender" timeout="300000" />
            </Sender>
        </Channel>
    </Cluster>
    
  2. Liferay Home の /webapps/ROOT/WEB-INF/web.xmlで、 <webapps>内に <distributable /> タグを追加します。 次のようになります。

    <web-app id="Liferay_Portal" metadata-complete="true" version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
    	   <distributable />
    	   <context-param>
    		   <param-name>axis.servicesPath</param-name>
    		   <param-value>/api/axis/</param-value>
    	   </context-param>
    
  3. portal-ext.properties ファイルに、次のプロパティを追加します。

    portlet.session.replicate.enabled=true
    
ヒント

デバッグ時に、Liferay Home の /webapps/ROOT/WEB-INF/classes/logging.propertiesにログを追加できます。

org.apache.catalina.ha.session.handlers=java.util.logging.ConsoleHandler
org.apache.catalina.ha.session.level=INFO
  1. 各ノードに対して手順 1 ~ 3 を繰り返します。 必ず portal-ext.propertiesでクラスター設定を定義し、すべてのノードが同じデータベースを指すようにデータベース接続を設定してください。

  2. サーバーを順番に起動します。 どのノードがマスター ノードであるかを決定するプロセスには時間がかかるため、クラスター ノードを同時に起動することはできません。

その他の最適化

セッションレプリケーションが機能するには、すべてのセッション属性が java.io.Serializableを実装する必要があります。 また、セッション レプリケーションは同じ URL 内のユーザー セッションにのみ適用されます。 これは、セッション状態がドメイン固有の Cookie によって追跡されるためです。 セッション レプリケーションの利点を最大限に活用するには、トラフィックをノードに送信するロード バランサーを使用することをお勧めします。

カスタム クラスター バルブを定義する場合は、 <Cluster> 要素で <ReplicationValve> も定義する必要があります。