問題
- 一方のノードからは、ドキュメントをアップロードしたり、Webコンテンツを作成したりする際に、もう一方のノードのコンテンツセクションの下で利用できるようになっています。 ただし、ページを作成し、アップロードされたドキュメントと既存のWebコンテンツをページに追加する場合、クラスター全体の コンテンツキャッシュを手動でクリアするか、サーバーを再起動しない限り、他のノードに反映されません。
環境への配慮
- Liferay DXP 7.0 SP11 とFP80
決議
-
バニラバンドルを使用して動作を再現する手順です。
- 2ノードのLiferayクラスタ環境で、両方のノードで同じパッチレベルを使用する
- 同一データベース、同一ファイルリポジトリを2ノードに設定する[試験用簡易ファイルシステム]の設定
- "cluster.link.enabled=true", "cluster.link.autodetect.address=www.google.com:80" のプロパティを portal-ext.propertiesに追加する。
-
追加手順
-
すべてのノードでクラスタリンクを有効にすると、利用可能なノードはお互いにメッセージ/ハートビートを送信できるようになります。
- クラスタリンクは JGroupsに依存します。 したがって、最新の Jgroups.jarをダウンロードしてください。 についてはこちら を参照してください。
- ダウンロードした jgroups からjarから、JARの
libフォルダの下に、jgroups-[version].Final.jar. それを展開して、tcp.xmlを見つけます。 このtcp.xmlファイルをLiferay DXPからアクセス可能な場所に展開し、 $LIFERAY_HOME/tomcat-XXX/webapps/ROOT/WEB-INF/classesフォルダ の下に配置します。 -
ドキュメントの4番目の手順に従ってください。 tcp.xmlファイルを開き、以下のように設定します。
<TCP bind_port="[some unused port]"
...
/> like TCP bind_port="7800" -
ドキュメントの5番目の手順に従ってください。 パラメータ singleton_name="liferay_tcp_cluster" を上記の同じタグに設定します。 注意: この名前は両方のノードで同じ名前でなければなりません。
-
タグ内 <TCPPING async_discovery="true", set initial_hosts="${jgroups.tcpping.initial_hosts.IP_of_node1[7800],IP_of_node2[7800]}"と設定し、ポートを 同じ とします。
-
ドキュメントの6番目のステップに従ってください。 上記の設定を有効にするには、 のグローバル設定ファイルiに以下のプロパティを追加します。例えば、 portal-ext.properties の両ノードにtcp.xmlファイルのそれぞれのパスを追加します。
cluster.link.channel.properties.control=[CONFIG_FILE_PATH]/tcp.xml
cluster.link.channel.properties.transport.0=[CONFIG_FILE_PATH]/tcp.xml -
ドキュメントから UNICAST OVER TCPの設定 の部分に従ってください。
-
Setenv.bat (Linux の場合は Setenv.sh) を開き、両ノードの CATALINA_OPTS に以下の変更を加えます。
-
-Djgroups.bind_addr=IP_of_respective_node -Djgroups.tcpping.initial_hosts=IP_of_node1[7800],IP_of_node2[7800]以上の設定を行った後、ノードを1つずつ起動していきます。 両方のノードから一時的なOSGi/stateディレクトリがある場合は削除してください。
-
追加情報