Chakray clustering-ha-wso2-20140710

16
www.chakray.com 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.

description

Este documente permite construir una arquitectura en Cluster de WSO2, usando para ello un ELB que será el encargado de balancear la petición

Transcript of Chakray clustering-ha-wso2-20140710

Page 1: Chakray clustering-ha-wso2-20140710

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.

Page 2: Chakray clustering-ha-wso2-20140710

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

Page 3: Chakray clustering-ha-wso2-20140710

3

Por Ivan Fontanals IT Consultant

Page 4: Chakray clustering-ha-wso2-20140710

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.

Page 5: Chakray clustering-ha-wso2-20140710

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:

Page 6: Chakray clustering-ha-wso2-20140710

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>

Page 7: Chakray clustering-ha-wso2-20140710

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; } } } }

Page 8: Chakray clustering-ha-wso2-20140710

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>

Page 9: Chakray clustering-ha-wso2-20140710

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

Page 10: Chakray clustering-ha-wso2-20140710

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.

Page 11: Chakray clustering-ha-wso2-20140710

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>

Page 12: Chakray clustering-ha-wso2-20140710

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 ).

Page 13: Chakray clustering-ha-wso2-20140710

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>

Page 14: Chakray clustering-ha-wso2-20140710

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

Page 15: Chakray clustering-ha-wso2-20140710

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

Page 16: Chakray clustering-ha-wso2-20140710

16

Por Ivan Fontanals IT Consultant

Autor: Ivan Fontanals IT Consultant

Revisado por: Roger Carhuatocto IT Consultant Chakray Consulting S.L. www.chakray.com