How to trace Liferay Portal data sync in a clustered environment

Overview

A problem we someetimes face with our Liferay Portal enterprise (EE) customers is configuring and resolving data sync issues across nodes in a cluster.

Thsi article provides some tips and configuration for tracing Liferay Portal data sync issues in a clustered environment.

NOTE: There is no "one size fits all" solution to resolving data sync issues.

Scenario

You are using Liferay Portal 6.2 EE and have installed the Liferay Ehcache Cluster EE plugin from the Liferay Marketplace.

You have configured the Liferay Portal clustering and caching portal properties, but are not seeing data replicated across nodes in the cluster.

In some environments, multicast simply does not work. Packets are lost. Gone, gone, gone. A workaround is to use point-to-point unicast to ensure packets are delivered to each node in the network.

 

Tips

Cluster Tracing Tips

  • Review Liferay Portal messages on Liferay channel as mbeans via JMX
  • Review ehcache cluster config
  • Review cluster event send/receive messages in portal log(s). Refer to Configuration (below).
  • Review cluster event send/receive messages using IEEE Cluster Utility.

 

Configuration

Portal Configuration

Enable cluster link and replication in portal properties

Update file "LIFERAY_HOME/portal-ext.properties" with the following portal properties.

Sample Configuration

e.g.

##
## Cluster Link
##

    #
    # Set this to true to enable the cluster link. This is required if you want
    # to cluster indexing and other features that depend on the cluster link.
    #
    #cluster.link.enabled=false
    cluster.link.enabled=true

    # https://www.liferay.com/group/customer/knowledge/kb/-/knowledge_base/article/37840259
    #ehcache.cluster.link.replication.enabled=false
    ehcache.cluster.link.replication.enabled=true


##
## Cluster Executor
##

    # Set this to true to enable the cluster executor debugging. This will
    # attach a debugging listener which will log every cluster event it
    #cluster.executor.debug.enabled=false
    cluster.executor.debug.enabled=true

Logging Configuration

The following logging configuration will enable logging of cache events and cache replication.

NOTE: Also define portal property "cluster.executor.debug.enabled=true".

Define some, or all, of the following logging categories to assist with monitoring cache events and cache replication

 

Logging Configuration via Liferay Portal Control Panel

  • Sign into Liferay Portal as admin user.
  • Navigate to "Control Panel > Server Administration > Log Levels".
  • Add/update the folllowing logging entries.

Sample Configuration

e.g.

com.liferay.portal.cache.cluster = ALL

com.liferay.portal.cache.cluster.clusterlink = ALL

com.liferay.portal.cache.cluster.clusterlink.ClusterLinkPortalCacheClusterChannelFactory = ALL

com.liferay.portal.cache.cluster.clusterlink.messaging.ClusterLinkPortalCacheClusterListener = ALL

com.liferay.portal.cache.ehcache = ALL

com.liferay.portal.cluster = ALL

com.liferay.portal.cluster.DebuggingClusterEventListenerImpl = ALL

com.liferay.portal.deploy.hot.PluginPackageHotDeployListener = ALL

com.liferay.portal.kernel.cache = ALL

com.liferay.portal.kernel.cache.cluster = ALL

com.liferay.portal.kernel.cache.cluster.PortalCacheClusterLink = ALL

com.liferay.portal.kernel.cluster = ALL

com.liferay.portal.kernel.cluster.messaging = ALL

net.sf.ehcache = ALL

org.jgroups.protocols.pbcast = ALL

Logging Configuration via portal-log4j-ext.xml file

FILE: LIFERAY_HOME/tomcat/lib/ext/META-INF/portal-log4j-ext.xml

Sample Configuration

e.g.

<category name="com.liferay.portal.cache.cluster">
   <priority value="ALL" />
</category>

<category name="com.liferay.portal.cache.cluster.clusterlink">
   <priority value="ALL" />
</category>

<category name="com.liferay.portal.cache.cluster.clusterlink.ClusterLinkPortalCacheClusterChannelFactory">
   <priority value="ALL" />
</category>

<category name="com.liferay.portal.cache.cluster.clusterlink.messaging.ClusterLinkPortalCacheClusterListener">
   <priority value="ALL" />
</category>

<category name="com.liferay.portal.cache.ehcache">
   <priority value="ALL" />
</category>

<category name="com.liferay.portal.cluster">
   <priority value="ALL" />
</category>

<category name="com.liferay.portal.cluster.DebuggingClusterEventListenerImpl">
   <priority value="ALL" />
</category>

<category name="com.liferay.portal.deploy.hot.PluginPackageHotDeployListener">
   <priority value="ALL" />
</category>

<category name="com.liferay.portal.kernel.cache">
   <priority value="ALL" />
</category>

<category name="com.liferay.portal.kernel.cache.cluster">
   <priority value="ALL" />
</category>

<category name="com.liferay.portal.kernel.cache.cluster.PortalCacheClusterLink">
   <priority value="ALL" />
</category>

<category name="com.liferay.portal.kernel.cluster">
   <priority value="ALL" />
</category>

<category name="com.liferay.portal.kernel.cluster.messaging">
   <priority value="ALL" />
</category>

<category name="net.sf.ehcache">
   <priority value="ALL" />
</category>

<category name="org.jgroups.protocols.pbcast">
   <priority value="ALL" />
</category>

 

References

Liferay

Misc