ehcache nicht replizieren in liferay cluster
Habe ich Folgendes setup
1.liferay-cluster mit 2 Maschinen, die auf AWS
2.unicast-clustering, Replikation JGroups über tcp
Habe ich die folgenden Parameter in der portal-ext.Eigenschaften
#Setup hibernate
net.sf.ehcache.configurationResourceName=/myehcache/hibernate-clustered.xml
#Setup distributed ehcache
ehcache.multi.vm.config.location=/myehcache/liferay-multi-vm-clustered.xml
#
# Clustering settings
#
cluster.link.enabled=true
ehcache.cluster.link.replication.enabled=true
cluster.link.channel.properties.control=tcp.xml
cluster.link.channel.properties.transport.0=tcp.xml
lucene.replicate.write=true
#In order to make use of jgroups
ehcache.bootstrap.cache.loader.factory=com.liferay.portal.cache.ehcache.JGroupsBootstrapCacheLoaderFactory
ehcache.cache.event.listener.factory=net.sf.ehcache.distribution.jgroups.JGroupsCacheReplicatorFactory
ehcache.cache.manager.peer.provider.factory=net.sf.ehcache.distribution.jgroups.JGroupsCacheManagerPeerProviderFactory
net.sf.ehcache.configurationResourceName.peerProviderProperties=file=/myehcache/tcp.xml
ehcache.multi.vm.config.location.peerProviderProperties=file=/myehcache/tcp.xml
cluster.executor.debug.enabled=true
ehcache.statistics.enabled=true
Ich bin nicht in der Lage, um die cluster-cache-Replikation arbeiten. Kann jemand mir die richtige Richtung?
Kann ich nach mehr details, wenn später benötigt. Ich war auch versucht zu ändern das hibernate-clustered.xml und liferay-multi-vm-clustered.xml, aber nichts funktioniert.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nachdem man tagelang Lesen unzählige blog-Beiträge, Foren-Themen, und natürlich SO Fragen, wollte ich hier kurz zusammenfassen, wie wir uns es endlich geschafft zu konfigurieren cache-Replikation in einer Liferay 6.2 cluster, mit unicast-TCP entsprechend Amazon EC2.
JGroups-Konfiguration
Vor der Konfiguration von Liferay für die cache-Replikation, müssen Sie verstehen, dass Liferay setzt auf JGroups-Kanäle. Grundsätzlich JGroups ermöglicht zu entdecken und die Kommunikation mit entfernten Instanzen. Standardmäßig (zumindest in Liferay) es nutzt multicast-UDP, um diese Ziele zu erreichen. Sehen JGroups website für mehr.
Aktivieren unicast-TCP, müssen Sie zuerst bekommen JGroups' TCP-Konfigurations-Datei von
jgroups.jar
im Liferay-webapp (so etwas wie$LIFERAY_HOME/tomcat-7.0.42/webapps/ROOT/WEB-INF/lib/jgroups.jar
). Extrahieren Sie diese Datei an einen Ort zur Verfügung zu Liferay webapp ist classpath. Sagen$LIFERAY_HOME/tomcat-7.0.42/webapps/ROOT/WEB-INF/classes/custom_jgroups/tcp.xml
. Beachten Sie diese Weg.Für diese Konfiguration funktioniert in einem Liferay-cluster, die Sie gerade brauchen, um hinzuzufügen, ein
singleton_name="liferay"
AttributTCP
tag:Haben Sie möglicherweise bemerkt, dass:
A. diese Konfigurations-Datei ist nicht festgelegt, eine bind-Adresse auf die zu hören, und
B., dass die ursprünglichen Wirte der cluster festgelegt werden muss, durch eine system-Eigenschaft.
In der Tat, müssen Sie zum ändern
$LIFERAY_HOME/tomcat-7.0.42/bin/setenv.sh
zu fügen Sie die folgenden JVM-Systemeigenschaften:Bind-address legt fest, welche Netzwerkschnittstelle zu hören (JGroups-port ist auf 7800 im TCP-Konfigurations-Datei). Die ersten hosts, die Eigenschaft enthalten muss jede einzelne Instanz des Clusters (für mehr auf diesem, sehen TCPPING und MERGE2 auf JGroups docs), zusammen mit Ihren listening-ports. Remote-Instanzen bezeichnet werden kann, die von Ihrem host-Namen, - local-Adressen oder öffentliche Adressen.
(Tipp: wenn Sie ein Liferay-cluster auf Amazon EC2, sind die Chancen der lokalen IP-Adresse und host-Namen der Instanzen sind unterschiedlich nach jedem Neustart. Um dies zu umgehen, können Sie ersetzen Sie die lokale Adresse in setenv.sh durch das Ergebnis der Befehl hostname:
`hostname`
-- beachten Sie, dass die backticks hier)(Tipp: wenn Sie Sicherheitsgruppen verwenden, die auf EC2, Sie sollten auch stellen Sie sicher, öffnen Sie die port-7800 auf alle Instanzen in der gleichen Sicherheitsgruppe)
Liferay-Konfiguration
JGroups-Replikation aktiviert ist, auf Liferay, indem die folgenden Objekte zu Ihren portal-ext.Eigenschaften:
Konfigurieren von JGroups für die unicast-TCP ist nur eine Frage der Hinweis auf die richtige Datei:
In der gleichen Datei, Lucene-index-Replikation erfordert dies eine einzige Eigenschaft:
EhCache caches Replikation ist subtiler. Sie müssen konfigurieren von JGroups für beide Hibernate cache-und Liferay-interne caches. Zum verstehen dieser Konfiguration müssen Sie wissen, dass seit Liferay 6.2, die Standard EhCache-Konfiguration-Dateien sind im "Cluster" (nicht festlegen dieser Eigenschaften):
Diese Konfigurations-Dateien basieren beide auf EhCache Fabriken, die festgelegt werden müssen, die ermöglichen, JGroups:
JGroups' cache-manager-peer-Anbieter Fabrik erwartet einen
file
parameter, der die JGroups-Konfiguration. Geben Sie den unicast-TCP-Konfigurations-Datei:(Tipp: wenn Sie Zweifel haben, konsultieren Sie die Eigenschaften-Definitionen und Standard-Werte: https://docs.liferay.com/portal/6.2/propertiesdoc/portal.properties.html)
Debugging
Darüber hinaus können Sie aktivieren debugging-traces mit:
Man kann sogar sagen, Liferay anzeigen auf alle Seiten die Namen der Knoten, der verarbeitet die Anfrage:
Schließlich JGroups-Kanäle verfügbar, einen Diagnose-service zur Verfügung durch Sonde-Werkzeug.
Erwähnenswert
Bitte denkt daran, dies deckt nur Indizes und cache-Replikation. Beim einrichten eines Liferay-cluster, Sie sollten auch die Möglichkeit in Betracht ziehen:
Verbrachte ich viele Stunden zu machen, Liferay 6.1.1 CE-cluster über die AWS.
Hier ist mein "portal-ext.Eigenschaften" mit wenigen Differenzen von Ihrem
Habe ich noch folgende Attribut
den TCP-Umschlag von "custom_cache/tcp.xml" JGroups config.
Schließlich habe ich noch folgende Optionen, um die Liferay-startup-Skript für node NODE_1
NODE_2 und
Ich hoffe, dies hilft Ihnen, Zeit zu sparen.
singleton_name="custom_cache"
ist ein sehr, sehr wichtiges Attribut 🙂 Cache-Replikation nicht funktionieren würde, ohne diese Einstellung. Vielen Dank für das teilen!