Pentaho HA


Hola a todos,

Después de mucho tiempo estamos de vuelta y con ganas. Hoy vamos a montar una arquitectura de alta disponibilidad o HA con pentaho.

Alguna vez en algun proyecto os han pedido que pentaho o alguna aplicación  tenga alta disponibilidad , pero ¿que es alta disponibilidad?.

La alta disponibilidad y la tolerancia a errores no son lo mismo. Una definición de la alta disponibilidad es importante porque la tolerancia a errores se usa con frecuencia como sinónimo para describir cómo se implementa la alta disponibilidad.

Las soluciones de alta disponibilidad son de ámbito amplio y proporcionan un conjunto de recursos compartidos en todo el sistema que se integran para proporcionar los servicios necesarios predefinidos. La solución usa diferentes combinaciones de hardware y software estándar de la industria para minimizar el tiempo de inactividad y restaurar los servicios cuando el sistema o parte del sistema falla.

Una solución de tolerancia a errores se centra en el hardware y usa hardware especializado para detectar errores y conmutar de forma instantánea a un componente de hardware redundante. Este componente puede ser un procesador, una tarjeta de memoria, un sistema de alimentación, un subsistema E/S o un subsistema de almacenamiento. El conmutador a un componente redundante proporciona un alto nivel de servicio.

Cluster Pentaho

Aquí explicaremos como hacer para que pentaho tenga la posibilidad de ser un cluster y que cuando un de los frontales se pare , caiga o simplemente esta al 100% otro host ocupe su lugar sin que el usuario se de cuente.

Vamos a partir de tener ya instalados y configurados pentaho 5 en los dos host  hacia mysql  ok.

  • Jackrabbit Journal Configuration and Quartz

En esta direcciòn vamos a editar el fichero con vi por ejemplo

vi ../bi-server/Pentaho-solutions/system/jackrabbit/repository.xml

Y en ambos host buscamos el tag cluster y nos sale algo así:

<Cluster id=”node1″>
<Journal class=”org.apache.jackrabbit.core.journal.MemoryJournal”/>
</Cluster>

Lo que hacemos es cambiar lo por esto

<Cluster id=”Unique_ID “>
<Journal class=”org.apache.jackrabbit.core.journal.DatabaseJournal”>
<param name=”revision” value=”${rep.home}/revision.log”/>
<param name=”url” value=”jdbc:mysql://HOSTNAME:PORT/jackrabbit”/>
<param name=”driver” value=”com.mysql.jdbc.Driver”/>
<param name=”user” value=”jcr_user”/>
<param name=”password” value=”password”/>
<param name=”schema” value=”mysql”/>
<param name=”databaseType” value=”mysql”/>
<param name=”janitorEnabled”value=”true”/>
<param name=”janitorSleep” value=”86400″/>
<param name=”janitorFirstRunHourOfDay” value=”3″/>
</Journal>
</Cluster>

Después lo que tenemos que hacer es cambiar la configuración de Quartz vamos al fichero de configuración y cambiamos estas propiedades:

../bi-server/pentaho-solutions/system/quartz/quartz.properties

org.quartz.scheduler.instanceId = AUTO # esto es para añadir las instancias de manera automática

org.quartz.jobStore.isClustered = true #activamos el modo cluster por defecto esta a false.

org.quartz.jobStore.clusterCheckinInterval = 20000 # esta linea hay que añadirla para tener un intervalo de tiempo y que compruebe como esta.

Bien ya tenemos montado la solución de pentaho en modo cluster , sencillo y para toda la familia. Ahora vamos a por el paso siguiente  y es que cuando un usuario entre en pentaho lo hace a través de un tomcat por defecto y que pasa si ese tomcat se cae , no queremos que el usuario se de cuenta y se tenga que volver a logear en el queremos que no se de cuenta.

Aquí como he dicho antes hay varias soluciones yo he escogido esta por que me pareció interesante , pero hay mas cartas en la baraja .

  • Guardar las sesiones

Lo primero que vamos hacer es instalar un redis .

wget http://download.redis.io/redis-stable.tar.gz tar xvzf redis-stable.tar.gz
cd redis-stable
make

Y lo arrancamos

cd RedisDirectory/src
./redis-server –port 6379

Descargamos las librerías asociadas JREDIS , Tomcat Redis Session Manager y las librerías  de apache para que funcione todo Apache Commons Pool .

he instalamos todo en lib de cada uno de los tomcats, despues vamos a el fichero context.xml e insertamos .

<Valve className=”com.radiadesign.catalina.session.RedisSessionHandlerValve”>
<Manager className=”com.radiadesign.catalina.session.RedisSessionManager”
host=”localhost” <!– optional: defaults to “localhost” –>
port=”6379″ <!– optional: defaults to “6379” –>
database=”0″ <!– optional: defaults to “0” –>
maxInactiveInterval=”60″ <!– optional: defaults to “60” (in seconds) –>
/>

Y hacemos un restart de los tomcats.

  • Balanceador de Carga

Bien ya casi terminamos ahora lo que queremos es cerrar el circulo y lo que necesitamos es que todo el trafico se divida en los aplicativos .

Lo que vamos a usar es Ngix para esta tarea. Y configuramos para que haga de balanceador de carga.

upstream tomcatcluster  {
server host1:port1;
server host2:port2;
}
aquí se definen los servidores back-end (instancias de Tomcat) a través de la directiva de servidor.
En cada directiva servidor mencionamos dirección IP del servidor y número de puerto HTTP
(No AJP número de puerto).

En segundo lugar delante (apoderado) la solicitud a los servidores de servicios de fondo
Este paso es presentar la solicitud a los bloques de aguas arriba, donde definimos los servidores back-end.

location / {proxy_pass http://tomcatcluster;}
aquí os dejo un video de como hacerlo que se que puede costar un poco entender esto

 Una vez tenemos esto ya se puede decir que tenemos pentaho en HA hay un punto que se añadir a esto y que se tratara en otro momento que es hacer que el punto de acceso al repositorio de pentaho sea también HA.

Anuncios

Un comentario en “Pentaho HA

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s