miércoles, 12 de febrero de 2014

Configurando un cluster de Alfresco 4.2 de alta disponibilidad usando mod_jk

Escenario

El sistema ECM está desplegado sobre una red de 5 ordenadores de la siguiente manera:
  • Un ordenador aloja al Servidor Web Apache (192.168.1.138).
  • Un ordenador aloja al servidor MySQL (192.168.1.136).
  • Un ordenador aloja el Almacén de Contenidos de Alfresco (192.168.1.134).
  • Dos ordenadores alojan, cada uno, un Servidor Tomcat que contiene un Alfresco Repository junto con sus propios Share y Solr (192.168.1.130 y 192.168.1.132).
Cada Tomcat tiene su propio Solr y su propio Almacén de Índices; y ambos acceden simultáneamente a la Base de Datos y al Almacén de Contenidos. El Balanceador de Carga (Apache HTTP Server) debe soportar sesiones "Sticky" para que cada cliente se conecte con el mismo servidor (Tomcat) durante la sesión.

Prerrequisitos

Se debe tener instalado:
  • Alfresco One 4.2
  • Apache HTTP Server 2.2.15
  • MySQL 5.6

Configurando cluster

Para configurar Alfresco Cluster se debe seguir los siguientes enlaces:
  1. http://docs.alfresco.com/4.2/topic/com.alfresco.enterprise.doc/tasks/cluster-setup.html
  2. http://docs.alfresco.com/4.2/topic/com.alfresco.enterprise.doc/concepts/cluster-startup.html
  3. http://docs.alfresco.com/4.2/topic/com.alfresco.enterprise.doc/tasks/cluster-test.html

Configurando la Alta Disponibilida

  1. Descargar el módulo (son archivos con extensión .so) que nos permitirá conectar Apache con los Tomcat's, para ello nos descargamos el módulo desde la sección Binary Releases del siguiente enlace: http://tomcat.apache.org/download-connectors.cgi.
  2. Instalamos el módulo en Apache. Para ello, deberemos copiar el archivo descargado (actualmente mod_jk-1.2.28-httpd-2.2.3.so) al directorio modules de Apache, debe estar apagado, y lo renombramos como mod_jk.so
  3. Modificamos la configuración de Apache para cargar el módulo cuando sea nuevamente iniciado. Para ello deberemos agregar la siguiente linea a continuación de los otros LoadModule que aparecen en el archivo de configuración de Apache <APACHE_HOME>/conf/httpd.conf:
    LoadModule jk_module modules/mod_jk.so
  4. Creamos en el directorio <APACHE_HOME>/conf un archivo de nombre workers.properties en donde especificaremos las direcciones y puertos en donde escuchan todos los servidores (Tomcat).
    # Los servidores a balancear estarán definidos más abajo en "balancer" worker.list=balancer # Configuración del Tomcat 1 worker.worker1.port=8009 worker.worker1.host=192.168.1.130; worker.worker1.type=ajp13 worker.worker1.lbfactor=1 # Configuración del Tomcat 2 worker.worker2.port=8009 worker.worker2.host=192.168.1.132; worker.worker2.type=ajp13 worker.worker2.lbfactor=1 # Configuración del balanceador worker.balancer.type=lb worker.balancer.balance_workers=worker1,worker2 worker.balancer.method=B # El siguiente parámetro indica al balanceador que todas las peticiones de una misma # sesión (usuario) vayan al mismo servidor worker.balancer.sticky_session=true
  5. En algunas ocasiones quizás sólo se desee alta disponibilidad sin balanceo de carga, pues bien con la siguiente configuración todas las peticiones irán a un tomcat y que sólo se utilizará el otro Tomcat en caso de fallo.
    # En caso de que falle worker1 que se use worker2 worker.worker1.redirect=worker2 # Por defecto, worker2 estará deshabilitado y el balanceador sólo lo usará en caso de fallo. worker.worker2.activation=disabled
  6. Agregamos las siguientes lineas al final del archivo APACHE_HOME/conf/httpd.conf
    # Le indicamos donde está ubicado el archivo de configuración workers.properties JkWorkersFile <APACHE_HOME>/conf/workers.properties # Le indicamos que redirija todas las peticiones de todos los contextos de aplicación al balanceador. JkMount /* balancer
  7. En la configuración de cada Tomcat (<TOMCAT_HOME>/conf/servers.xml), modificamos el parámetro jvmRoute del elemento Engine.
    <!-- Un Tomcat tendrá el valor worker1 y el otro worker2 --> <Engine name="Catalina" defaultHost="localhost" jvmRoute="worker1"> 

Prueba

Para verficar la Alta Disponibilidad dentro de cada Tomcat cree un archivo con distinto contenido en la misma ubicación (por ejemplo http://direccion_tomcat/a.html). Desde un navegador web solicite al Apache HTTP Server la página a.html, recargue varias veces la página y observará ambos contenidos de forma alternativa.
Detenga un Tomcat y el otro debería de prestar el servicio, inicie de nuevo el tomcat detenido y automáticamente debería de prestar el servicio también.

No hay comentarios:

Publicar un comentario