liferay

Version 6.1

La configuration de deux serveurs Liferay en mode cluster n’est pas très bien documentée alors qu’elle est largement utilisée. Voici comment mettre en place rapidement un cluster.

Tout d’abord, admettons que nous avons deux instances Liferay (192.168.24.1, 192.168.24.2) et quelle « tapent » déjà la même base de données.

La première étape consiste à vérifier que l’on a bien les fichiers /ehcache/hibernate-clustered.xml, /ehcache/liferay-multi-vm-clustered.xml et /jgroups/tcp.xml. S’il sont manquant il faut aller les récupérer dans portal-impl.jar et jgroups.jar.

Il faut ensuite modifier le fichier tcp.xml en renseignant l’attribut singleton_name :

<TCP singleton_name="liferay_jgroups_tcp" bind_port="7800" ... />

Puis modifier le fichier portal-ext.properties afin de bien déclarer qu’on passe en mode cluster

# Activer le mode cluster et renseigner une adresse pour l'auto-détection des nœuds
cluster.link.enabled=true
cluster.link.autodetect.address=192.168.24.0:7700

# Activer le mode cluster pour le cache
net.sf.ehcache.configurationResourceName=/ehcache/hibernate-clustered.xml
ehcache.multi.vm.config.location=/ehcache/liferay-multi-vm-clustered.xml
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=/jgroups/tcp.xml
ehcache.multi.vm.config.location.peerProviderProperties=file=/jgroups/tcp.xml

# Activer le mode cluster pour les index
lucene.replicate.write=true
index.search.writer.max.queue.size=9999999

# Activer le mode cluster pour les tâches planifiées
org.quartz.jobStore.isClustered=true

# Indiquer que tous les fichiers media seront stockés en base (sous forme de BLOB)
dl.store.impl=com.liferay.portlet.documentlibrary.store.DBStore

# Si on ne souhaite pas utiliser la base pour stocker les fichiers media, on peut passer par un disque partagé
dl.store.impl=com.liferay.portlet.documentlibrary.store.AdvancedFileSystemStore
dl.store.file.system.root.dir=/data_shared/liferay/document_library

Enfin, il faut ajouter les options suivantes au démarrage de Liferay (en adaptant les IP en fonction du nœud sur lequel on est)

-Djava.net.preferIPv4Stack=true
-Djgroups.bind_addr=192.168.24.1
-Djgroups.tcpping.initial_hosts=192.168.24.2[7800],192.168.24.1[7800]

Un fois les deux serveur configurés, il faut les redémarrer et vérifier dans les logs que le mode cluster est bien pris en compte et que les serveurs se voient.

A vous de jouer !

Publicités