chakray clustering-ha-wso2-20140710
DESCRIPTION
Este documente permite construir una arquitectura en Cluster de WSO2, usando para ello un ELB que será el encargado de balancear la peticiónTRANSCRIPT
w w w . c h a k r a y . c o m
Configuración de un Cluster en
WSO2 con Governance Registry y
ELB Ivan Fontanals Este documente permite construir una arquitectura en Cluster de WSO2, usando para ello
un ELB que será el encargado de balancear la petición.
2
Por Ivan Fontanals IT Consultant
Índice
1. Diagrama de despliegue .......................................................................................... 4
1- Configuración del ELB ............................................................................................. 6 1.1 Configuración del Axis2.xml ................................................................................. 6 1.2 Configuración del loadbalancer.conf .................................................................... 7
2- Configuración de los Managers ............................................................................... 8 2.1 Configurar el Manager del AS ............................................................................... 8 2.2 Configurar el Manager del ESB ............................................................................ 9
3- Configuración de los Workers ............................................................................... 11 3.1 Configurar AS Worker ......................................................................................... 11 3.1 Configurar ESB Worker ...................................................................................... 13
4- Acceso al cluster ................................................................................................... 14
5- Resumen de puertos e IPs .................................................................................... 15
Autor: ............................................................................................................................ 16
Revisado por: ............................................................................................................... 16
3
Por Ivan Fontanals IT Consultant
4
Por Ivan Fontanals IT Consultant
1. Diagrama de despliegue
Para la configuración del Cluster, hemos escogido un diagrama de despliegue con los
siguientes elementos de WSO2:
• 3 AS: 1 de nodo Manager y 2 Workers, siguiendo el patrón número 1 de
Worker/Manager:
https://docs.wso2.com/pages/viewpage.action?pageId=32346071
• 3 ESB, de forma similar a la configuración de arriba indicada
• 1 WSO2 ELB
• 1 WSO2 GREG ( No lo configuraremos en éste documento )
• 1 instancia de MySQL
El patrón de clustering seleccionado, no mantiene un cluster de nodos manager, pero
si de los workers. Esto quiere decir que dado el caso, podría caer el nodo manager sin
que esto causara ningún problema en el cluster, ya que seguiría funcionando sin
problemas. Tal y como veremos mas adelante, esto se configurará en el propio ELB,
donde le indicaremos que estamos montando un cluster de workers y no de managers.
5
Por Ivan Fontanals IT Consultant
Para acceder a la consola del nodo manager, lo haremos accediendo directamente a
su IP:puerto correspondiente.
A diferencia de la mayoría de balanceadores, donde éste tiene la referencia a los
distintos nodos del cluster, WSO2 funciona de un modo distinto. Resalto este punto
porqué a nivel particular me costó un poco encontrar este detalle, en un principio
pensaba que se comunicaban a través de algún puerto en broadcast o algún otro
mecanismo, pero el tema es que cada uno de los nodos le comunica al ELB su
configuración, lo que hace especialmente importante su configuración en lo que
respecta al mapeo de puertos. Lo veremos con detalle más adelante.
Para la instalación de esta infraestructura, y a modo de simplificar el despliegue y las
máquinas necesarias, se ha usado 1 única máquina para instalar los 2 nodos
Manager, ELB y GREG, aunque lo más correcto será tener máquinas distintas en cada
caso.
PRODUCTO WSO2 OFFSET (PUERTO) EN CARBON.XML
ELB 1
GREG 0
MANAGER ESB 2
MANAGER AS 3
Vamos ahora a ver como se configurará cada una de las máquinas:
6
Por Ivan Fontanals IT Consultant
1- Configuración del ELB
1.1 Configuración del Axis2.xml
1- Abrir el fichero <ELB_HOME>/repository/conf/axis2/axis2.xml file.
2- Activar el clustering para este nodo
<clustering
class="org.wso2.carbon.core.clustering.hazelcast.HazelcastCluste
ringAgent" enable="true">
3- Establecer como membership scheme el protocolo wka (Well Known Address
registration method)
<parameter name="membershipScheme">wka</parameter>
4- Especificar un nombre de dominio para el ELB
<parameter name="domain">wso2.carbon.lb.domain</parameter>
5- Puerto de comunicación con el ELB. Este puerto tiene que ser único si dos
instancias lo están usando en la misma máquina.
<parameter name="localMemberPort">4000</parameter>
6- Hostname o IP de la máquina
<parameter name="localMemberHost">elb.chakray.com</parameter>
7
Por Ivan Fontanals IT Consultant
1.2 Configuración del loadbalancer.conf
Este fichero configura el cluster del ESB y AS, especificando un puerto de grupo y
la URL para acceder al cluster.
1- Abrir el fichero loadbalancer.conf
<ELB_HOME>/repository/conf/loadbalancer.conf file
2- Configuración del AS
appserver { domains { wso2.as.domain { tenant_range *; group_mgt_port 4500; worker { hosts as-cluster.chakray.com; } } } }
3- Configuración del ESB
esb { domains { wso2.esb.domain { tenant_range *; group_mgt_port 5000; worker { hosts esb-cluster.chakray.com; } } } }
8
Por Ivan Fontanals IT Consultant
El parámetro group_mgt_port será el puerto a través del cual se comunicará el
worker con el manager, por eso tienen que ser distintos entre el appserver (AS) y
el ESB.
Las URLs introducidas ( esb-cluster y as-cluster ), serán las URLs con las que
podremos acceder al cluster. Si no disponemos de un servidor DNS, deberemos
añadir estas IPs al fichero /etc/hosts de la máquina donde está el ELB. Recordar que
estas URLs tienen que apuntar a la IP del ELB.
2- Configuración de los Managers
Los nodos managers son los responsables de realizar los deploys de los WARs,
servicios, etc…a los nodos del cluster, de igual modo que serán los únicos sobre
los cuales deberíamos acceder a la consola de administración, si bien es cierto
que conociendo las IPs de los workers, podríamos entrar también.
Dicha sincronización se realiza a través de lo que se conoce como DeepSync, y
consiste en una sincronización de todos los elementos desplegados a través de un
subversión. Si está bien configurado el SVN y desplegamos un WAR en el AS de
un manager, por ejemplo, de forma automática va a desplegarse en todos los otros
nodos del cluster, ya que todos los workers tienen también la misma configuración
del SVN.
2.1 Configurar el Manager del AS
Configurar el fichero carbon.xml
Los cambios a realizar en este fichero, son los siguientes:
<Offset>3</Offset> <HostName>as-mng.chakray.com</HostName> <MgtHostName>as-mng.chakray.com</MgtHostName> <DeploymentSynchronizer>
9
Por Ivan Fontanals IT Consultant
<Enabled>true</Enabled> <AutoCommit>true</AutoCommit> <AutoCheckout>true</AutoCheckout> <RepositoryType>svn</RepositoryType> <SvnUrl>http://icm.chakray.com/svn/wso2_sync_as/</SvnUrl> <SvnUser>svn-XXXX</SvnUser> <SvnPassword>XXXX</SvnPassword> <SvnUrlAppendTenantId>true</SvnUrlAppendTenantId> </DeploymentSynchronizer>
En este caso se activa la sincronización por Subversion. Se deberá introducir la URL
correcta con su usuario y password.
Configurar el fichero axis2.xml
<parameter name="localMemberPort">4200</parameter> <parameter name="membershipScheme">wka</parameter> <property name="subDomain" value="mgt"/> <members> <member> <hostName>elb.chakray.com</hostName> <port>4500</port> </member> </members>
Tenemos que tener especial atención con los puertos localMemberPort de cada uno
de los manager, ya que tienen que ser distintos para cada instancia si compartimos
máquina. Pondremos una tabla resumen al final para tener más claros estos
conceptos.
2.2 Configurar el Manager del ESB
Configurar el fichero carbon.xml
10
Por Ivan Fontanals IT Consultant
Los cambios a realizar en este fichero, son los siguientes:
<Offset>2</Offset> <HostName>esb-mng.chakray.com</HostName> <MgtHostName>esb-mng.chakray.com</MgtHostName> <DeploymentSynchronizer> <Enabled>true</Enabled> <AutoCommit>true</AutoCommit> <AutoCheckout>true</AutoCheckout> <RepositoryType>svn</RepositoryType> <SvnUrl>http://icm.chakray.com/svn/wso2_sync_esb/</SvnUrl> <SvnUser>svn-XXXX</SvnUser> <SvnPassword>XXXX</SvnPassword> <SvnUrlAppendTenantId>true</SvnUrlAppendTenantId> </DeploymentSynchronizer>
En este caso se activa la sincronización por Subversion. Se deberá introducir la URL
correcta con su usuario y password.
11
Por Ivan Fontanals IT Consultant
Configurar el fichero axis2.xml
<parameter name="localMemberPort">4100</parameter> <parameter name="membershipScheme">wka</parameter> <property name="subDomain" value="mgt"/> <members> <member> <hostName>elb.chakray.com</hostName> <port>5000</port> </member> </members>
3- Configuración de los Workers
En este apartado se va a configurar el cluster, que serán los nodos que realmente van
a poder procesar las peticiones. Para simplificar, hemos usado una misma máquina
para desplegar el AS Worker y el ESB worker. Si quisiéramos añadir otra máquina al
cluster, bastaría con duplicar ésta máquina.
3.1 Configurar AS Worker
Configuración del fichero carbon.xml
<HostName>as-wk1.chakray.com</HostName> <MgtHostName>as-wk1.chakray.com</MgtHostName> <Offset>2</Offset> <DeploymentSynchronizer> <Enabled>true</Enabled> <AutoCommit>true</AutoCommit> <AutoCheckout>true</AutoCheckout> <RepositoryType>svn</RepositoryType> <SvnUrl>http://icm.chakray.com/svn/wso2_sync_as/</SvnUrl> <SvnUser>svn-XXXX</SvnUser>
12
Por Ivan Fontanals IT Consultant
<SvnPassword>XXXX</SvnPassword> <SvnUrlAppendTenantId>true</SvnUrlAppendTenantId> </DeploymentSynchronizer>
Configuración del fichero axis2.xml
<parameter name="localMemberHost">worker1.chakray.com</parameter> <parameter name="domain">wso2.as.domain</parameter> <parameter name="localMemberPort">4201</parameter> <property name="subDomain" value="worker"/> <property name="port.mapping.8281" value="9765"/> <property name="port.mapping.8244" value="9445"/> <members> <member> <hostName>elb.idaltec.com</hostName> <port>4500</port> </member> <member> <hostName>as-mng.idaltec.com</hostName> <port>4200</port> </member> </members>
Los workers se ponen en contacto con el ELB y le envían la información de mapeo de
puertos. Con la configuración de arriba, le estamos diciendo al ELB que cuando reciba
una petición del AS a través del puerto 8244 ( Seria la de por defecto + 1 por el offset,
o sea, 8243+1=8244 ), la puede reenviar a la máquina worker1 puerto 9445, y dicho
puerto se calcula a partir del puerto por defecto + 2 del offset ( 9443 + 2 = 9445 ). Este
paso es importante…y podríamos cambiar los puertos del ELB para que estuviera
escuchando en los puertos por defecto ( 80 y 443 ).
13
Por Ivan Fontanals IT Consultant
3.1 Configurar ESB Worker
Configuración del fichero carbon.xml
<HostName>esb-wk1.chakray.com</HostName> <MgtHostName>esb-wk1.chakray.com</MgtHostName> <Offset>1</Offset> <DeploymentSynchronizer> <Enabled>true</Enabled> <AutoCommit>true</AutoCommit> <AutoCheckout>true</AutoCheckout> <RepositoryType>svn</RepositoryType> <SvnUrl>http://icm.chakray.com/svn/wso2_sync_esb/</SvnUrl> <SvnUser>svn-XXXX</SvnUser> <SvnPassword>XXXX</SvnPassword> <SvnUrlAppendTenantId>true</SvnUrlAppendTenantId> </DeploymentSynchronizer>
Configuración del fichero axis2.xml
<parameter name="localMemberHost">esb.wk1.chakray.com</parameter> <parameter name="domain">wso2.esb.domain</parameter> <parameter name="localMemberPort">4101</parameter> <parameter name="properties"> <property name="port.mapping.8282" value="9764"/> <property name="port.mapping.8244" value="9444"/> <!-- Worker Setup--> <property name="subDomain" value="worker"/> </parameter> <members> <member> <hostName>elb.chakray.com</hostName>
14
Por Ivan Fontanals IT Consultant
<port>5000</port> </member> <member> <hostName>esb-mng.chakray.com</hostName> <port>4100</port> </member> </members>
4- Acceso al cluster
Una vez se ha configurado el cluster con los workers, el modo de acceder a ellos será
a través de la siguiente URL:
• AS: https://as-cluster.chakray.com:8244/xxx
• ESB: https://esb-cluster.chakray.com:8244/services/xxxx
Mientras que el acceso de los nodos manager será:
• Manager AS:
o https://as-mng.chakray.com:9446/carbon/admin/login.jsp
• Manager ESB:
o https://esb-mng.chakray.com:9445/carbon/admin/index.jsp
15
Por Ivan Fontanals IT Consultant
5- Resumen de puertos e IPs
Máquina Offset Local Port Https port IP
elb.chakray.com as-cluster.chakray.com esb-cluster.chakray.com
1 8244 192.168.2.7
as-mng.chakray.com 3 4200 9446 192.168.2.7
esb-mng.chakray.com 2 4100 9445 192.168.2.7
as.wk1.chakray.com 2 4201 9445 192.168.2.10
esb.wk1.chakray.com 1 4101 9444 192.168.2.10
16
Por Ivan Fontanals IT Consultant
Autor: Ivan Fontanals IT Consultant
Revisado por: Roger Carhuatocto IT Consultant Chakray Consulting S.L. www.chakray.com