Get it on Google Play

Liferay 7 en alta disponibilidad(High Availability)

14-12-2017
 
Liferay HA

Liferay HA

Como todos sabéis el soporte a cluster a vuelto en la versión CE de Liferay y en este post vamos a ver como ponerlo en marcha.

Antes de empezar deberemos asegurarnos de lo siguiente:

  • No podemos usar la versión de Elastic Search embebido en el portal.
  • Necesitaremos una carpeta compartida para la ‘document library’. En este ejemplo configuraremos una carpeta compartida, pero se puedo configurar para usar la base de datos para guardar los ficheros(Solución mas practica pero con peor rendimiento).
  • Necesitaremos tener configurado el balanceador de carga que ya he explicado en el post ‘Balanceo de servidores Liferay(O no) con HAProxy y Docker‘.

El primer fichero a configurar será el ‘portal-ext.properties’. Aquí básicamente configuraremos la base de datos, el sistema de persistencia de ficheros ‘AdvancedFileSystemStore’ y el habilitaremos el cluster link. Aquí tenemos el ejemplo:

jdbc.default.driverClassName=org.mariadb.jdbc.Driver
jdbc.default.url=jdbc:mariadb://192.168.1.130/lportal_cluster?useUnicode=true&characterEncoding=UTF-8&useFastDateParsing=false
jdbc.default.username=root
jdbc.default.password=

cluster.link.enabled=true

setup.wizard.enabled=false

dl.store.impl=com.liferay.portal.store.file.system.AdvancedFileSystemStore

web.server.display.node=true

Despues deberemos copiar estos ficheros en la carpeta ‘%LIFERAY_HOME%/osgi/modules’:

com.liferay.portal.cache.ehcache.multiple.jar
com.liferay.portal.cluster.multiple.jar
com.liferay.portal.scheduler.multiple.jar

Para finalizar, deberemos configurar tres módulos OSGI. El primer módulo OSGI a configurar será el de ElasticSearch, para ello crearemos el fichero ‘%LIFERAY_HOME%/osgi/configs/com.liferay.portal.search.elasticsearch.configuration.ElasticsearchConfiguration.config’:

operationMode="REMOTE"
transportAddresses="192.168.1.130:9300"
clusterName="elasticsearch"

El segundo módulo OSGI a configurar será el que se refiere al sistema de persistencia de ficheros ‘AdvancedFileSystemStore
‘, concretamente tendremos que configurarle la ruta donde se guardarán los ficheros(Esta carpeta deberá ser compartida por todas las máquinas del cluster). El fichero ‘%LIFERAY_HOME%/osgi/configs/com.liferay.portal.store.file.system.configuration.AdvancedFileSystemStoreConfiguration.cfg’:

rootDir=/opt/liferay-ce-portal-7.0-ga5/data/document_library

I finalmente, deberemos configurar este módulo OSGI para bloquear que no se carguen los módulos OSGI originales y así que no sobrescriban los que hemos instalado nuevos(Los ficheros copiados en la carpeta osgi/modules). El fichero ‘%LIFERAY_HOME%/osgi/configs/com.liferay.portal.bundle.blacklist.internal.BundleBlacklistConfiguration.config’:

blacklistBundleSymbolicNames="com.liferay.portal.cache.single,com.liferay.portal.cluster.single,com.liferay.portal.scheduler.single"

Ya con todo solo nos queda arrancar el Liferay. Esta misma configuración se deberá hacer en todos las máquinas del cluster, yo tengo un Dockerfile que me genera una imagen Docker automáticamente para levantar máquinas automáticamente, a ver si en los próximos días me animo y lo subo.

Cosas a tener en cuenta sobre esta configuración

  • No he configurado la replicación de sesiones. El motivo es que no es obligatorio y es una funcionalidad que se debe pensar muy bien si realmente es necesaria por la repercusión en el rendimiento que tiene.
  • Para mejorar el rendimiento se puede tunear la forma como EHCache guarda los elementos de la cache.
  • Para mejorar el rendimiento Liferay permite configurar dos conexiones a la base de datos, una para lecturas y otra para escrituras(Es una funcionalidad que debe permitir la base de datos).
  • Al loro! Los plugins deben desplegarse en todos los nodos del cluster.

Interesado en formación Liferay?

 

Leave a Reply