Las cookies nos permiten ofrecer nuestros servicios. Al utilizar nuestros servicios, aceptas el uso que hacemos de las cookies. Más Información. Aceptar

Configurando Hazelcast, el nuevo clustering de Alfresco

Antonio Domínguez Crespo
  • Escrito por Antonio Domínguez Crespo el 27 de Septiembre de 2013
  • <1 min de lectura | Sistemas
Configurando Hazelcast, el nuevo clustering de Alfresco

A partir de la versión 4.1.x Alfresco usa Hazelcast para usos en clustering. Hazelcast es un Data Grid en Java, una plataforma escalable para la distribución de datos . Entre sus características más interesantes encontramos:

  • Implementaciones distribuidas de Set,List,Map,Lock,MultiMap
  • Mensajería distribuida P/S
  • Soporte transaccional e integración JEE vía JCA
  • Soporte encriptación a nivel de sockets
  • Persistencia síncrona o asíncrona
  • Clusterizado Sesión HTTP
  • Discovery dinámico
  • Monitorización JMX
  • Escalado dinámico
  • Particionado dinámico
  • Fail-over dinámico
  • Modelo open-source con 2 versiones
Entre los usos típicos de Hazelcast tenemos:
  • Compartir datos/estados entre varios servidores: como compartición sesión Web
  • Cacheo distribuido de datos
  • Comunicación segura entre servidores
  • Particionado de datos en memoria
  • Distribución de trabajo entre servidores
  • Procesamiento paralelo
  • Gestión fail-safe de datos
La biblioteca Hazelcast proporciona apoyo a las estructuras de datos distribuidas y los canales de comunicación que permiten a ciertos componentes del servidor de repositorio de contenido de Alfresco funcionar correctamente en un entorno agrupado.

Habilitando Hazelcast

Para habilitar Hazelcast en Alfresco es necesario proveer un valor a la propiedad alfresco.cluster.name en el fichero alfresco-global.properties:
alfresco.cluster.name=mycluster

Propiedades de configuración típicas

Las propiedades que se muestran a continuación representan una configuración mínima que puede ser suficiente en muchos escenarios de implementación:
# Un nombre arbitrario pero único para el cluster en esta red
alfresco.cluster.name=mycluster
# Contraseña para unirse al cluster
alfresco.hazelcast.password=alfrescocluster
# Elementos XML para incorporar a la configuración de Hazelcast, en particular,
# Nombres de host/direcciones IP que puede utilizar para el descubrimiento de #miembros del cluster
alfresco.hazelcast.tcp.config=10.244.50.68,10.244.50.70;
La configuración permite que dos servidores en las direcciones IP 10.244.50.68 y 10.244.50.70 puedan participar en un clúster. Además de establecer estas propiedades es necesario habilitar EHcache para el para el cluster mediante la copia del archivo de ejemplo ehcache-custom.xml.sample en el directorio de la extensión del servidor de repositorio, por ejemplo, en tomcat puede ser $TOMCAT_HOME/shared/classes/alfresco/extension.

Propiedades de configuración extendidas

Existen otras propiedades que pueden ajustarse si es necesario:
# Un nombre arbitrario pero único para el cluster en esta red.
 alfresco.cluster.name = myCluster
 # Contraseña para unirse al clúster
 alfresco.hazelcast.password = alfrescocluster
 # Protocolo utilizado para el descubrimiento de miembros del cluster (tcp, EC2, udp)
 alfresco.hazelcast.protocol = tcp
 # Ubicación del archivo de configuración Hazelcast
 alfresco.hazelcast.configLocation=classpath:alfresco/hazelcast/hazelcast-${alfresco.hazelcast.protocol}.xml
 # Elementos XML para incorporar a configuración de Hazelcast, en particular,
 # Nombres de host / direcciones IP que puede utilizar para el descubrimiento de miembros
 alfresco.hazelcast.tcp.config =
 # Unirse a una interfaz de host específico
 alfresco.hazelcast.specify.interface = false
 # La interfaz que se va a emplear, si está habilitado anteriormente.
 alfresco.hazelcast.bind.interface =
 # Amazon Web Services - EC2 descubrimiento
 alfresco.hazelcast.ec2.accesskey = my-access-key
 alfresco.hazelcast.ec2.secretkey = my-secret-key
 alfresco.hazelcast.ec2.region = us-east-1
 # Sólo las instancias que pertenecen a este grupo se descubrirán, por defecto intentará todas las instancias
 alfresco.hazelcast.ec2.securitygroup =
 alfresco.hazelcast.ec2.tagkey = type
 alfresco.hazelcast.ec2.tagvalue = hz-nodes
La propiedad alfresco.hazelcast.protocol determina qué archivo de configuración se cargará por Hazelcast. El nombre del archivo que se carga desde el classpath es Hazelcast-p.xml donde p será sustituido por el valor de la propiedad de protocolo. Para obtener más control sobre el nombre y la ubicación del archivo de configuración, utilice la propiedad alfresco.hazelcast.configLocation y establecer a éste a cualquier valor que usted elija.

Pre-procesamiento del archivo de configuración de Hazelcast

Para apoyar el uso de las propiedades mencionadas anteriormente en el fichero de configuración de Hazelcast, una instancia de la clase org.alfresco.repo.cluster.HazelcastConfigFactoryBean se utiliza para pre-procesar el texto antes de devolver un objeto de configuración Hazelcast. Una instancia de la clase org.alfresco.repo.cluster.HazelcastInstanceFactory se utiliza para crear el clúster Hazelcast real y contiene una referencia al objeto com.hazelcast.config.Config creado por la HazelcastConfigFactoryBean anteriormente. Este nivel de indirección se requiere (en lugar de crear directamente un HazelcastInstance en la configuración de Spring para permitir la activación/desactivación del cluster Hazelcast.

Propiedades de ejemplo

Suponiendo que tiene dos nodos que desea tener en clúster, uno en la dirección IP 192.168.1.104 y otro en  la IP 192.168.56.101. Para configurar el primer nodo (mediante TCP / IP para el descubrimiento del nodo), puede utilizar las siguientes propiedades:
alfresco.cluster.name=my-cluster
alfresco.hazelcast.tcp.config=192.168.1.104,192.168.56.101
alfresco.hazelcast.specify.interface=true
alfresco.hazelcast.bind.interface=192.168.1.104
alfresco.ehcache.rmi.hostname=192.168.1.104
alfresco.cluster.name=my-cluster
alfresco.hazelcast.tcp.config=192.168.1.104,192.168.56.101
alfresco.hazelcast.specify.interface=true
alfresco.hazelcast.bind.interface=192.168.56.101
alfresco.ehcache.rmi.hostname=192.168.56.101
Observe que la propiedad alfresco.ehcache.rmi.hostname  se encuentra en los dos nodos, para garantizar que  las URLs  de RMI correctas se generan. Como siempre, gracias por leernos, y le invitamos a dejar un comentario si tiene alguna pregunta.

Estas son algunas de las empresas que ya confían en OpenWebinars

Profesores y profesionales

Nuestros docentes son profesionales que trabajan día a día en la materia que imparten

Conviértete en profesor de OpenWebinars