Replicación de Servidores y Balanceo de Carga en...

69
1 8 Equation Chapter 1 Section 1 Trabajo Fin de Grado Grado en Ingeniería de las Tecnologías de Telecomunicación Replicación de Servidores y Balanceo de Carga en WSO2 Autor: Adrián Camacho Gil Tutor: Isabel Román Martínez Departamento de Ingeniería Telemática Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2017

Transcript of Replicación de Servidores y Balanceo de Carga en...

Page 1: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de

1

8 Equation Chapter 1 Section 1

Trabajo Fin de Grado Grado en Ingeniería de las Tecnologías de Telecomunicación

Replicación de Servidores y Balanceo de Carga en WSO2

Autor: Adrián Camacho Gil Tutor: Isabel Román Martínez

Departamento de Ingeniería Telemática

Escuela Técnica Superior de Ingeniería

Universidad de Sevilla Sevilla, 2017

Page 2: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de
Page 3: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de

Trabajo Fin de Grado Grado en Ingeniería de las Tecnologías de Telecomunicación

Replicación de Servidores y Balanceo de Carga en WSO2

Autor: Adrián Camacho Gil

Tutor: Isabel Román Martínez Profesor colaborador

Departamento de Ingeniería Telemática Escuela Técnica Superior de Ingeniería

Universidad de Sevilla Sevilla, 2017

Page 4: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de
Page 5: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de

Trabajo Fin de Grado: Replicación de Servidores y Balanceo de Carga en WSO2

Autor: Adrián Camacho Gil Tutor: Isabel Román Martínez

El tribunal nombrado para juzgar el Proyecto arriba indicado, compuesto por los siguientes miembros:

Presidente: Vocales: Secretario:

Acuerdan otorgarle la calificación de:

Sevilla, 2017

El Secretario del Tribunal

Page 6: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de
Page 7: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de

A mi familia A mis maestros

Page 8: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de
Page 9: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de

Agradecimientos

Escribo este apartado de agradecimientos para dar las gracias a varias personas por la ayuda y apoyo que me han brindado en la realización de este trabajo de fin de grado. Ha sido un período de aprendizaje intenso, no solo en el campo científico, a nivel personal. Ante todo, me gustaría agradecer a mi familia por sus sabios consejos y comprensión. Siempre habéis estado ahí cuando lo necesitaba en los momentos difíciles y me habéis apoyado enormemente. También, a mis amigos que me han ayudado sin cesar apoyándome en todos los momentos en los que necesitaba apoyo moral, en especial, me gustaría agradecer a Rafa Pemberton Díaz y darle las gracias por prestarme su ordenador personal ya que los medios de los que disponía eran insuficientes para terminar el trabajo. Y en especial, a mi tutora Isabel Román Martínez por su valiosa ayuda y todos los consejos que me ha aportado. Definitivamente me has brindado todas las herramientas necesarias para completar mi trabajo de fin de grado satisfactoriamente. ¡Muchas gracias a todos!

Adrián Camacho Gil Alumno de la Escuela Técnica Superior de Ingeniería

Sevilla, 2017

Page 10: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de
Page 11: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de

Resumen

El objetivo de este Trabajo de Fin de Grado es analizar una solución a la replicación de servidores y el balanceo de carga hacia los mismos, que prevenga la sobrecarga de estos y facilite la elasticidad de los servicios. Para abordar esta cuestión, este trabajo explica los fundamentos teóricos básicos necesarios para comprender de manera más detallada la replicación de servidores y el balanceo de carga. De la misma manera, durante el desarrollo de este trabajo se explica cómo se despliegan los servicios en la plataforma WSO2 y cómo se configuran las herramientas de replicación y balanceo en la misma. El objeto de este documento es doble. Por un lado, establecer un primer escenario funcional donde se haga uso de tecnologías de replicación de servidores y balanceo de carga disponibles en la plataforma WSO2, y por otro comprender exhaustivamente el funcionamiento de los mismos, así como las soluciones a algunos de los problemas de configuración más frecuentes.

Page 12: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de
Page 13: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de

Abstract

The objective of this project is to analyze a solution to the replication of servers and the load, that prevent the overload and facilitate the elasticity of the web services. To approach this issue, this paper explains the basic theoretical underpinnings needed to more fully understand server replication and load balancing. In the same way, during the development of this work explains how the services are deployed. The purpose of this document is twofold. On the one hand, to establish a first functional scenario where server replication and load balancing technologies are used, and on the other hand to understand exhaustively the operation of this technologies, as well as the solutions to all the errors that may cause.

Page 14: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de
Page 15: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de

Índice

Agradecimientos 9

Resumen 11

Abstract 13

Índice 15

ÍndicedeFiguras 19

1 Introducción 21

2 FundamentosTeóricos 23

2.1.EnfoqueteóricoREFERENCIAS 23

2.1.1 IntroducciónalaReplicación[1] 23

2.1.2 Softwareutilizado 24

2.2 Escenarioaimplementar[6] 27

2.2.1 Well-KnownAddresses[50] 28

2.2.2 Componentesdelescenario 28

3 Desplieguedelclúster 31

3.1 Configurandoelbalanceadordecarga 31

3.1.1 ConfigurandoApacheHttpd[7] 31

3.2 Configurandolasbasesdedatos[8] 34

3.2.1 Creandolasbasesdedatos 34

3.2.2 Montandoelregistro 35

3.3 ConfigurandolosnodosEnterpriseIntegrator 36

3.3.1 Configurandolosnodosparaqueinteractúenconlasbasesdedatos 38

3.4 ConfigurandoHerramientadeControldeVersiones[60][73] 40

3.4.1 DescargaycreacióndelRepositorio 40

3.4.2 Accesoporsvn:// 40

3.4.3 Accesoporhttp://[74] 41

4 Pruebadelclúster 43

4.1 Conceptosclave 43

4.1.1 ApacheAxis 43

Page 16: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de

4.2 Ejecucióndelservicio 43

4.2.1 ArrancandoWSO2EnterpriseIntegrator 43

4.2.2 Desplegandoelservicio 44

4.2.3 ArrancandoelServidorAxis2 44

4.2.4 Ejecutandoelcliente 44

4.3 Comprobacióndelclúster 46

5 Erroresdeinstalaciónyconfiguración 49

5.1 Error“CannotfindLBMethod”(BalanceadordeCarga)[52] 49

5.1.1 Descripcióndelproblema 49

5.1.2 Solucióndelproblema 49

5.2 ErroralconectarseporHTTPS[53] 50

5.2.1 Descripcióndelproblema 50

5.2.2 Solucióndelproblema 50

5.3 VariableJAVA_HOMEnoconfigurada 50

5.3.1 Descripcióndelproblema 50

5.3.2 Solucióndelproblema 50

5.4 RelojdelSistemamalconfigurado[55] 50

5.4.1 Descripcióndelproblema 50

5.4.2 Solucióndelproblema 51

5.5 ErrorenSubversion(Ficherodav_svn.passwd) 51

5.5.1 Descripcióndelproblema 51

5.5.2 Solucióndelproblema 51

5.6 Error“[JDBC/WSO2CarbonDB]isnotboundinthiscontext” 51

5.6.1 Descripcióndelproblema 51

5.6.2 Solucióndelproblema 52

5.7 Error“Communicationslinkfailure” 52

5.7.1 Descripcióndelproblema 52

5.7.2 Solucióndelproblema 52

5.8 Error“Hostisnotallowed” 53

5.8.1 Descripcióndelproblema 53

5.8.2 Solucióndelproblema 53

5.9 Error“Errorwhileattemptingtocreatethedirectory”[59] 53

5.9.1 Descripcióndelproblema 53

Page 17: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de

5.9.2 Solucióndelproblema 53

5.10 Error“Errorwhileattemptingtocreatethedirectory” 53

5.10.1 Descripcióndelproblema 53

5.10.2 Solucióndelproblema 54

5.11 Error“Potentialcross-siterequestforgery(CSRF)attackthwarted” 54

5.11.1 Descripcióndelproblema 54

5.11.2 Solucióndelproblema 54

5.12 Error“500ProxyError” 55

5.12.1 Descripcióndelproblema 55

5.12.2 Solucióndelproblema 55

5.13 OtraserratasenlaguíadeconfiguracióndeWSO2 55

5.13.1 Descripcióndelproblema 55

5.13.2 Solucióndelproblema 55

6 Conclusiones 57

Referencias 59

Glosario 69

Page 18: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de
Page 19: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de

ÍNDICE DE FIGURAS FIG.1EVOLUCIÓNDESDEWSO2TUNGSTENHASTAWSO2APPLICATIONSERVER......................................................................25FIG.2EJEMPLODEBALANCEADORDECARGA.......................................................................................................................26FIG.3ESCENARIOSIMPLIFICADO........................................................................................................................................27FIG.4MÁQUINASVIRTUALESUTILIZADAS............................................................................................................................27FIG.5NODOSENTERPRISEINTEGRATORENELCLÚSTER..........................................................................................................28FIG.6BASESDEDATOSENELCLÚSTER................................................................................................................................29FIG.7DEPLOYMENTSYNCHRONIZATION..............................................................................................................................29FIG.8CONFIGURACIÓNDELBALANCEADORDECARGA-SOLICITUDESALPUERTONOSEGURO........................................................32FIG.9CONFIGURACIÓNDELBALANCEADORDECARGA-SOLICITUDESALPUERTOSEGURO.............................................................32FIG.10CONFIGURACIÓNDELBALANCEADORDECARGA-ACCESOALACONSOLADEADMINISTRACIÓN............................................33FIG.11CONFIGURACIÓNDELASBASESDEDATOS-CREACIÓN.................................................................................................34FIG.12CONFIGURACIÓNDELASBASESDEDATOS-CONFIGURACIÓN........................................................................................35FIG.13REPLICACIÓNDELNODO.........................................................................................................................................36FIG.14WELL-KNOWNADDRESSREGISTRATIONMETHOD......................................................................................................36FIG.15NOMBREDEDOMINIO...........................................................................................................................................36FIG.16IPDELNODO.......................................................................................................................................................37FIG.17PUERTOUSADOPORELMIEMBRO............................................................................................................................37FIG.18WELL-KNOWNMEMBERS......................................................................................................................................37FIG.19PROPIEDADESDECONFIGURACIÓN...........................................................................................................................37FIG.20HOSTNAMEDELNODO..........................................................................................................................................37FIG.21ACTIVARDEPLOYMENTSYNCHRONIZATION................................................................................................................38FIG.22PERMITIRACCESOALACONSOLADEADMINISTRACIÓN.................................................................................................38FIG.23CONFIGURARBASESDEDATOSENELPRIMERNODO....................................................................................................39FIG.24CONFIGURARBASESDEDATOSENELSEGUNDONODO..................................................................................................40FIG.25PERMITIRLECTURAYESCRITURAENSUBVERSION........................................................................................................41FIG.26CONFIGURARSUBVERSIONPARAACCEDERPORHTTP...................................................................................................41FIG.27INICIARSOFTWAREWSO2ENTERPRISEINTEGRATOR..................................................................................................43FIG.28COMPILARYDESPLEGARSIMPLESTOCKQUOTESERVICE................................................................................................44FIG.29WSDLGENERADO................................................................................................................................................45FIG.30RESPUESTADELSERVIDOR......................................................................................................................................45FIG.31GENERACIÓNDEUNSÍMBOLODECOTIZACIÓN............................................................................................................45FIG.32SEGUNDAMÁQUINAVIRTUAL-PRIMERAPRUEBA......................................................................................................46FIG.33PRIMERAMÁQUINAVIRTUAL-PRIMERAPRUEBA.......................................................................................................46FIG.34PRIMERAMÁQUINAVIRTUAL-SEGUNDAPRUEBA......................................................................................................47FIG.35ERROR“CANNOTFINDLBMETHOD”.......................................................................................................................49FIG.36COMANDOSSSL..................................................................................................................................................50FIG.37ERROR“JAVA_HOMEISNOTDEFINEDCORRECTLY”..................................................................................................50FIG.38ERROR“UNPARSEABLEDATE”................................................................................................................................51FIG.39CAMBIODELIDIOMAUSADOPORLAMÁQUINAVIRTUALDEJAVA-PRIMERAMODIFICACIÓN................................................51FIG.40CAMBIODELIDIOMAUSADOPORLAMÁQUINAVIRTUALDEJAVA-SEGUNDAMODIFICACIÓN...............................................51FIG.41ERROR“PASSWORDMISMATCH“............................................................................................................................51FIG.42ERROR“NAMEISNOTBOUNDINTHISCONTEXT”........................................................................................................52FIG.43FIGURADELACONFIGURACIÓNDEWSO2CLUSTERING...............................................................................................52FIG.44ERROR“COMMUNICATIONSLINKFAILURE”...............................................................................................................52FIG.45CAMBIODELPARÁMETRO“BIND-ADDRESS”DEMYSQL...............................................................................................52FIG.46ERROR“HOSTISNOTALLOWED”.............................................................................................................................53FIG.47CONCESIÓNDEPRIVILEGIOSALUSUARIODEMYSQL...................................................................................................53FIG.48ERROR“ERRORWHILEATTEMPTINGTOCREATETHEDIRECTORY”...................................................................................53FIG.49ERROR“ERRORWHILEATTEMPTINGTOCREATETHEDIRECTORY”...................................................................................53FIG.50BUGWSO2APPLICATIONSERVER..........................................................................................................................54FIG.51ERROR“POTENTIALCROSS-SITEREQUESTFORGERY(CSRF)ATTACKTHWARTED”..............................................................54FIG.52ERROR“500PROXYERROR”..................................................................................................................................55FIG.53PARÁMETRO“SSLPROXYCHECKPEEREXPIRE”ESTABLECIDOA“OFF”..............................................................................55

Page 20: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de
Page 21: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de

1 INTRODUCCIÓN

n los últimos tiempos, la demanda de un servicio web puede ser difícil de estimar y además puede ser cambiante. Esto hace que, si el servicio es ofrecido por un único servidor, el correcto y óptimo dimensionamiento de éste pueda ser difícil de realizar, provocando situaciones de sobrecarga

alternadas con sobredimensionamiento. Por otro lado, una solución centralizada no es tolerante a fallos, la caída del único servidor supondría un fallo total del servicio. Para proporcionar la elasticidad de recursos necesaria y sistemas tolerantes a fallos los servicios se ofrecen, cada vez con mayor asiduidad, replicando la funcionalidad en distintos servidores. Una posible solución es la replicación del servidor formando un clúster [94]. Un clúster consiste en un conjunto de dos o más maquinas que mantienen una serie de servicios compartidos y se monitorizan entre sí. Por otro lado, se necesita de un balanceador de carga que distribuya todas las solicitudes entrantes de los clientes entre las diferentes réplicas del servidor para conseguir una distribución eficiente de la carga del trabajo. Gracias a esta solución, aumentando o disminuyendo el número de instancias en el clúster se pueden ajustar los recursos asignados al servicio a la demanda real existente y se puede ofrecer transparencia de fallos al usuario. El objetivo final del proyecto consiste en el despliegue completo de un clúster dentro del cual se han replicado los servicios ofrecidos, y para ello es necesario primero el entendimiento de todos los elementos que lo componen. Este documento constará de varias secciones que intentarán explicar con detalle cada paso a seguir para crear el clúster propuesto. En primer lugar, se explicarán todos los fundamentos teóricos necesarios para el correcto entendimiento del proyecto, a continuación se mostrarán todos los pasos que se han llevado a cabo para el despliegue del clúster, desde los diferentes componentes instalados hasta las modificaciones individuales efectuadas en cada uno de ellos, tras esto se explicarán todas las pruebas realizadas sobre el clúster, finalmente, la última sección tratará de describir y explicar con detalle todos los errores encontrados en la replicación de los servidores y la puesta en funcionamiento del balanceador de carga presentando las posibles soluciones a los mismos.

E

Un viaje de mil millas comienza con un solo

paso. - Lao Tse -

Page 22: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de
Page 23: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de

23

2 FUNDAMENTOS TEÓRICOS

n esta sección se establecerán los fundamentos teóricos necesarios como base para el entendimiento del desarrollo del proyecto. A continuación, se realizará una introducción a los servidores de aplicaciones y se explicará de manera detallada todos los componentes software utilizados.

Actualmente, a pesar de que los navegadores web se han vuelto omnipresentes y suelen ser los clientes para los usuarios finales en muchas estrategias de implementación de aplicaciones, las aplicaciones web basadas en navegador representan sólo un subconjunto de las tecnologías que los servidores tradicionales pueden ofrecer. El objetivo del Servidor de Aplicaciones es la disminución de la complejidad en el desarrollo y despliegue de aplicaciones, permitiendo además la replicación, creando diferentes instancias del mismo que trabajan y se monitorean entre sí.

2.1. Enfoque teórico REFERENCIAS

2.1.1 Introducción a la Replicación [1] Un clúster consiste en múltiples instancias de un producto que cooperan para realizar el trabajo pero que, visto desde fuera, actúan como si fueran una sola. Este enfoque mejora el rendimiento, ya que las solicitudes se distribuyen entre varios servidores en lugar de uno solo y garantiza la fiabilidad, de tal manera que, si una instancia no está disponible o está experimentando una sobrecarga, otra instancia gestionará las solicitudes sin problemas. La replicación proporciona los siguientes beneficios.

• Alta disponibilidad: Algunos sistemas pueden requerir porcentajes de alta disponibilidad, en algunos casos mayores del 99%. Un servidor puede caer debido a muchas razones, como fallos del sistema, interrupciones planificadas o problemas de hardware o de red. La replicación se traduce en menos interrupciones del servicio, y como el tiempo de inactividad es costoso para cualquier negocio, la replicación tiene un impacto directo y positivo en los costos.

• Elasticidad: La elasticidad es la capacidad de un sistema de disminuir o aumentar los recursos destinados al servicio en función de la demanda real de tal manera que nos permite aprovechar los recursos de manera más eficaz.

• Reducción de costes: La replicación mejora la escalabilidad y la tolerancia a fallos, por lo que la continuidad del negocio está garantizada incluso en caso de fallos. Además, facilita la ampliación del sistema cuando hay un aumento del tráfico habitual durante un período determinado de tiempo. Todo esto reduce los costes finales.

E

Los que se enamoran de la práctica sin la teoría

son como los pilotos sin timón ni brújula, que nunca podrán saber a dónde van.

- Leonardo Da Vinci -

Page 24: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de

Fundamentos Teóricos

24

24

2.1.1.1 Hazelcast [68] Hazelcast es una plataforma de memoria compartida distribuida, basada en Java y de código abierto. En una red donde se hace uso de Hazelcast, los datos se distribuyen uniformemente entre los nodos de un clúster, lo que facilita escalar horizontalmente, es decir, añadir o reducir los nodos del sistema en función del procesamiento y el almacenamiento requeridos. Las copias de seguridad también se distribuyen entre los nodos para proteger el sistema contra fallos de cualquiera de ellos. Esto reduce la carga de consultas en las bases de datos y mejora la velocidad. Hazelcast puede funcionar en la nube (Amazon Web Services, Microsoft Azure), virtualmente (VMware) y en Dockercontainers. Hazelcast ofrece integraciones tecnológicas para múltiples tecnologías de configuración y despliegue en la nube, incluyendo Apache jclouds, Consul, Eureka, Kubernetes y Zookeeper. Hazelcast ayuda a las empresas líderes en todo el mundo a gestionar sus datos y distribuir el procesamiento mediante el almacenamiento en memoria y la ejecución paralela para lograr una velocidad y una escala de aplicación avanzadas.

2.1.2 Software utilizado

2.1.2.1 Servidor de Aplicaciones [20] Un Servidor de Aplicaciones (AS) es un programa software para el alojamiento, la gestión y el despliegue de un conjunto de aplicaciones. El objetivo principal es la disminución de complejidad en el desarrollo de aplicaciones, esto es debido a que generalmente gestiona toda (o la mayor parte) de las funciones, así como el acceso a los datos desde las aplicaciones. Antes de la aparición de los servidores de aplicaciones, la arquitectura inicial se basaba en un servidor de archivos que consistía en un espacio compartido sin ningún tipo de procesamiento lógico. El concepto de servidor de aplicaciones surgió en los primeros entornos cliente-servidor. El término se utilizó originalmente para diferenciar los servidores que alojaban bases de datos y servicios relacionados de los servidores de archivos e impresión. Sin embargo, en este entorno cliente-servidor los desarrolladores de aplicaciones debían escribir para cada aplicación un código muy similar para el acceso a las bases de datos, gestión de solicitudes de clientes, gestión de sesiones, etc. Finalmente, para solucionar este problema se comenzó a empaquetar y alojar las aplicaciones en un servidor, permitiendo el manejo del hardware de manera sencilla y a la vez aumentando la reutilización y reduciendo la sobrecarga. Además de la implementación de la lógica de la aplicación, los servidores de aplicaciones también gestionan de forma centralizada la mayoría de las funcionalidades reutilizables como la seguridad, la monitorización, la administración, la alta disponibilidad, etc. La administración central del conjunto de aplicaciones y servicios son razones clave para la amplia aceptación y adopción de Servidores de Aplicaciones en arquitecturas empresariales distribuidas hoy en día.

2.1.2.2 WSO2 [95] WSO2 es una compañía desarrolladora de tecnología enfocada en proveer una arquitectura orientada a servicios (SOA). WSO2 fue fundada por Sanjiva Weerawarana y Paul Fremantle en agosto de 2005, y ha sido respaldada principalmente por la inversión de Intel Capital. WSO2 tiene sus oficinas en Estados Unidos (Mountain View, CA), Reino Unido (Londres), Brasil (São Paulo) y Sri Lanka (Colombo). Los productos WSO2 se publican bajo la Licencia de Apache Versión 2 y siguen los principios de desarrollo de código abierto. El primer producto de WSO2 recibió el nombre de Tungsten, y fue diseñado para el desarrollo de aplicaciones web. Tungsten fue seguido por WSO2 Titanium, que más tarde se convertiría en WSO2 Enterprise Service Bus (WSO2 ESB). Finalmente, WSO2 lanzó WSO2 Enterprise Integrator, el cuál es la evolución directa de WSO2 ESB, añadiendo características provenientes de otros productos, como WSO2 Application Server, que se estudiará más adelante.

Page 25: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de

25

25 Replicación de Servidores y Balanceo de Carga en WSO2

2.1.2.2.1 WSO2ApplicationServer[20]

WSO2 Application Server (WSO2 AS) es un servidor de aplicaciones de código abierto y desarrollado sobre la plataforma WSO2 Carbon, que es el núcleo de componentes middleware comunes sobre el que construyen el resto de componentes de WSO2. WSO2 AS es un servidor de alto rendimiento y ligero, que permite el despliegue de aplicaciones y servicios Web con grandes capacidades de administración. A diferencia de muchas soluciones complejas y poco eficientes, WSO2 ha creado una plataforma que prescinde de funcionalidades innecesarias permitiendo un software simple, seguro y útil. Es un producto fiable, escalable y soporta comunicaciones seguras, también permite que las aplicaciones web desplegadas hagan uso de funciones disponibles en la plataforma original de WSO2 Carbon, como por ejemplo la autenticación y gestión de usuarios. WSO2 AS hace uso de Apache Tomcat y es capaz de alojar cualquier aplicación web que pueda ser desplegada en esta plataforma. Los desarrolladores pueden de manera unificada y sencilla crear, consumir y gestionar las aplicaciones y servicios a través de la interfaz de usuario de la consola de administración de WSO2 que se presentará en la sección “Prueba del clúster”. WSO2 AS reúne muchas funcionalidades y módulos en un sistema único y sencillo, de tal manera que no es necesario encontrar e instalar por separado los diferentes servicios de Apache. WSO2 ha mejorado el producto a lo largo de 3 fases diferentes. Primero apareció WSO2 Tungsten que fue sustituido por WSO2 Web Services Application Server (WSO2 WSAS) en 2008, finalmente este fue sustituido por el producto WSO2 Application Server.

2.1.2.2.2 WSO2DataAnalyticsServer[33]

WSO2 Data Analytics Server (WSO2 DAS) es una potente herramienta ofrecida por WSO2 que trata la monitorización de las actividades y procesos, así como el análisis de flujos de datos en tiempo real. WSO2 DAS ofrece capacidades de análisis, procesamiento de eventos e incluso aprendizaje automático (machine learning), esto permite identificar patrones de comportamiento y reaccionar en tiempo real. A través de estas herramientas se pretende monitorizar los servicios expuestos con el fin de obtener información valiosa. Sin embargo, la cantidad de información que fluye a través de los sistemas suele ser enorme. Debido a esto, todos los datos deben ser recogidos y procesados por un sistema capaz de manejar grandes cargas de datos. WSO2 DAS está diseñado para ser altamente escalable en todos estos aspectos, así como para agregar, analizar y presentar los datos.

2.1.2.2.3 WSO2EnterpriseIntegrator[13]

WSO2 Enterprise Integrator (WSO2 EI) es una herramienta que permite la comunicación entre aplicaciones dispares. En vez de tener las aplicaciones comunicándose directamente las unas con las otras en varios formatos, cada aplicación simplemente se comunica con WSO2 EI, el cual actúa principalmente como un Enterprise Service Bus (ESB), que es un software que funciona como capa intermedia (middleware) permitiendo la comunicación entre diferentes aplicaciones. WSO2 EI es la fusión de muchos productos y tecnologías WSO2 (entre ellas el servidor de aplicaciones evolucionado), un conjunto de herramientas que se interrelacionan entre sí proporcionando un producto final completo y sencillo de usar. Este software es el que se usará como Servidor de Aplicaciones, ya que durante el desarrollo de este trabajo se encontraron deficiencias en el producto WSO2 Application Server que impedían el correcto funcionamiento del sistema. Debido a esto se optó por migrar toda la configuración realizada en WSO2 AS a este software más reciente. Sin embargo, la mayoría de la configuración descrita en este trabajo fue inicialmente planteada para utilizar WSO2 AS, de tal manera que es imprescindible realizar su explicación teórica para un buen entendimiento del escenario que se desea implementar. Cabe destacar que durante el desarrollo del

Fig. 1 Evolución desde WSO2 Tungsten hasta WSO2 Application Server

Page 26: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de

Fundamentos Teóricos

26

26

trabajo se estudiarán las capacidades del Servidor de Aplicaciones de WSO2 EI, siendo extrapolable a este toda la teoría de WSO2 AS.

2.1.2.3 Balanceador de carga [2] Un balanceador de carga consiste, como se ha comentado anteriormente, en una herramienta capaz de distribuir el tráfico de red a través de un grupo de servidores. La replicación requiere algún mecanismo para distribuir la carga entre las distintas réplicas. El balanceador de carga se encarga de realizar este reparto. El balanceo de la carga es el método más sencillo de escalar una infraestructura de servidor de aplicaciones. A medida que aumenta la demanda, se pueden agregar nuevos servidores al grupo fácilmente y el balanceador de carga comenzará inmediatamente a enviar tráfico a los nuevos servidores. Esta herramienta se encuentra entre el cliente y el conjunto de servidores y distribuye el tráfico utilizando varios métodos o algoritmos. Cuando un servidor no está disponible, el balanceador de carga dirige todas las nuevas solicitudes a otros servidores disponibles en el grupo. Para que se considere exitoso un balanceador de carga este debe cumplir varios requisitos, los más relevantes son minimizar los tiempos de respuesta, mejorar el desempeño del servicio y evitar la saturación del servicio. Estableciendo métricas para estos factores y realizando las mediciones para cada procedimiento de balanceo se podrá valorar la eficiencia del uso de un balanceador de carga y si éste se considera exitoso.

2.1.2.3.1 Algoritmosymetodosdebalanceodecarga

El balanceo de carga hace uso de uno o varios algoritmos, denominados métodos de balanceo de carga, los cuales definen los criterios que utiliza el balanceador de carga para elegir el servidor al cual redirige las solicitudes. Cada algoritmo de balanceo utiliza un criterio diferente.

• The Least Connection Method

Este es el método predeterminado en la mayoría de los balanceadores de carga, consiste en seleccionar el servidor con menor número de conexiones activas.

• The Round Robin Method

Este método consiste en seleccionar todos los elementos en un grupo de manera equitativa y en orden, normalmente comenzando por el primer elemento de la lista hasta llegar al último y empezando de nuevo desde el primer elemento.

• The Least Response Time Method

Este método selecciona el servicio con menos conexiones activas y el tiempo medio de respuesta más bajo.

Fig. 2 Ejemplo de Balanceador de Carga

Page 27: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de

27

27 Replicación de Servidores y Balanceo de Carga en WSO2

• The Least Bandwidth Method

Este método selecciona el servicio que en ese momento tenga mayor ancho de banda libre, medido en megabits por segundo.

• The Least Packets Method

Este método selecciona el servicio que ha recibido el menor número de paquetes durante un período de tiempo especificado.

2.2 Escenario a implementar [6]

La solución que se pretende implementar consiste en la creación de un clúster de nodos WSO2 Enterprise Integrator, para lo cual se debe realizar una replicación de dichos servidores. Las solicitudes entrantes por parte de los clientes serán repartidas entre todos los nodos disponibles del clúster a través del balanceador de carga, explicado con mayor detalle posteriormente, en función de un algoritmo de balanceo de carga. La monitorización del comportamiento del sistema será tarea de WSO2 Data Analytics Server. En la siguiente imagen se puede observar, de manera simplificada, como será el escenario planteado.

El despliegue del clúster se realizará gracias a dos máquinas virtuales conectadas entre sí en una red privada con dirección IP 172.20.10.0/24. La primera máquina virtual con dirección IP 172.20.10.13 estará formada por el balanceador de carga y la primera instancia de WSO2 EI, así como por las bases de datos y el repositorio Subversion (necesario para la sincronización) que se explicarán posteriormente. La segunda máquina virtual contendrá la segunda instancia de WSO2 EI. Esta configuración puede observarse en la siguiente imagen.

Fig. 3 Escenario simplificado

Fig. 4 Máquinas Virtuales utilizadas

Page 28: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de

Fundamentos Teóricos

28

28

2.2.1 Well-Known Addresses [50] Para que todos los nodos funcionen necesitan hacer uso de Well-Known Addresses (WKA) o “Miembros Bien Conocidos”, un mecanismo que permite a los miembros de un clúster el descubrimiento de los nodos disponibles y la comunicación con los mismos, facilitando la unión al clúster. Todos los miembros bien conocidos son capaces de interactuar entre si directamente a través de una comunicación unicast. Siempre es recomendable el uso de al menos dos WKA para evitar el reinicio de todos los nodos en el caso de que el miembro bien conocido deje de estar disponible. Este mecanismo necesita hacer uso de la plataforma Hazelcast (explicada anteriormente) para su correcto funcionamiento.

2.2.2 Componentes del escenario En este apartado se pretende explicar a nivel teórico, con mayor detalle, cada uno de los componentes nombrados anteriormente y como se interrelacionan entre ellos. Los elementos más relevantes para el correcto funcionamiento del sistema son los nodos WSO2 Enterprise Integrator y el balanceador de carga. Sin embargo, también será necesario el uso de bases de datos para guardar toda la información de configuración y una herramienta de control de versiones para permitir la sincronización entre los nodos del clúster, lo que se explicará más adelante.

2.2.2.1 Nodos WSO2 Enterprise Integrator [17] El escenario que se desea crear está compuesto por dos nodos WSO2 EI para atender las solicitudes a un servicio con alta disponibilidad y escalabilidad. Permite el acceso a la Consola de administración mediante un balanceador de carga externo y dirige las solicitudes de servicio a los nodos a través de este balanceador de carga. La siguiente imagen muestra el escenario descrito.

2.2.2.2 Bases de datos [3] Todos los nodos Carbon, que pertenezcan al mismo clúster, deber usar una base de datos (BBDD) central para guardar toda la información de configuración. Nuestra configuración constará de cuatro tipos de bases de datos relacionales, a continuación, se muestra cual es el objetivo de cada una de ellas, como están conectadas a los nodos y como se relacionan entre sí. Java Database Connectivity o JDBC es una API que proporciona la capacidad de realizar operaciones sobre las bases de datos. Todas estas operaciones son independientes del sistema operativo donde se ejecute o del tipo de base de datos a la cual se accede y se realizan usando el lenguaje SQL. La primera BBDD se llama WSO2_USER_DB o “UM DB”, es la encargada de guardar los usuarios JDBC y los permisos de los mismos. La segunda BBDD se llama REGISTRY_DB (la combinación de “Config Registry” y “Governance Registry”), consiste en una base de datos compartida que almacena la configuración de los nodos del producto. Finalmente, existen dos BBDD llamadas REGISTRY_LOCAL o “Local Registry” destinadas al espacio de registro local de los nodos.

Fig. 5 Nodos Enterprise Integrator en el clúster

Page 29: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de

29

29 Replicación de Servidores y Balanceo de Carga en WSO2

2.2.2.3 Herramienta de Sincronización [56] WSO2 ofrece una herramienta que proporciona la capacidad de sincronización de la configuración de los servicios de los nodos de un clúster, llamada WSO2 Deployment Synchronizer [10]. Por cuestiones obvias, para que un clúster funcione correctamente, todos los nodos deben tener la misma configuración. Por ejemplo, si dentro de un clúster uno de los nodos no dispone de un servicio que el resto tiene, cada vez que el balanceador de carga dirija una solicitud a ese servidor un error será devuelto. Esta inconsistencia rompe el modelo de replicación, donde todos los nodos se comportan como si fueran uno solo. Para evitar este problema, todos productos basados en Carbon usan Deployment Synchronizer para asegurar que el mismo estado es mantenido a lo largo de todos los nodos del clúster. Deployment Synchronizer está basado en un repositorio Subversion, de tal manera que mantiene un repositorio central del directorio <PRODUCT_HOME>/repository/deployment/server, desde el cuál se sincronizan los nodos. Para el escenario del trabajo, uno de los nodos tomará el rol de maestro y el resto de esclavos, de tal manera que cuando se deseen actualizar los servicios del clúster solo se modificará el directorio “server” del nodo que tiene el rol de maestro, encargándose Deployment Synchronizer de actualizar el resto.

Fig. 6 Bases de Datos en el clúster

Fig. 7 Deployment Synchronization

Page 30: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de

Fundamentos Teóricos

30

30

El mecanismo de sincronización de la configuración de los servicios a través de Deployment Synchronizer se puede explicar en tres pasos. Primero, en el momento en el que se produzcan cambios en el directorio del nodo maestro, capaz de leer y escribir, este enviará los cambios al repositorio de Subversion. A continuación, ese mismo nodo realiza una petición de sincronización a todos los nodos esclavos del clúster especificando qué cambios se han producido y en qué repositorio. Finalmente, los nodos esclavos, únicamente con la capacidad de leer, actualizan su directorio en función del repositorio de Subversion compartido. Es importante destacar que los cambios sólo deben realizarse sobre los nodos gestores ya que son los únicos con capacidad de escribir en el repositorio.

Page 31: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de

31

3 DESPLIEGUE DEL CLÚSTER

n esta sección se procederá a explicar los pasos más relevantes que se deben realizar para el despliegue del escenario propuesto. Cabe destacar que esta sección consiste mayoritariamente en una serie de comandos, sin embargo, son necesarios los conocimientos descritos en los apartados

anteriores para el buen entendimiento de los mismos.

3.1 Configurando el balanceador de carga

El balanceador de carga distribuye automáticamente el tráfico entrante entre las diferentes instancias del servidor. Existe una gran variedad de productos con capacidades de balanceo de carga, de entre los que destacan los siguientes.

• NGINX

• Apache Httpd

• AWS ELB

• HAProxy

El servidor HTTP Apache es un servidor web HTTP de código abierto disponible para todo tipo de plataformas, como Unix, Microsoft Windows, Macintosh, etc. HTTP Apache es soportado por una amplia comunidad de usuarios encargados de desarrollar y mantener la plataforma, los cuales están bajo la supervisión de Apache Software Foundation. Este servidor web tiene una amplia aceptación en la red, desarrolló un papel primordial en la World Wide Web, desde 1996 es el servidor HTTP más usado y llegó a ser el servidor empleado en el 70% de los sitios web del mundo en el 2005. En el trabajo se usará el servidor HTTP Apache debido a que es el software que ofrece mayores posibilidades, de las que destacan las siguientes ventajas:

• Gran variedad de módulos que lo enriquecen con nuevas funcionalidades.

• Multiplataforma

• Facilidad de obtener ayuda o soporte gracias a su popularidad

• Código abierto

3.1.1 Configurando Apache Httpd [7] a) Instala el software Apache Httpd usando el siguiente comando.

E

Actuar sin pensar es como disparar sin apuntar.

- B. C. Forbes -

Page 32: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de

Despliegue del clúster

32

32

sudo apt-get install apache2

b) Activa los módulos necesarios.

sudo a2enmod proxy_http

sudo a2enmod ssl

sudo a2enmod proxy_balancer

sudo a2enmod lbmethod_byrequests

c) Crea el archivo wso2.as.com.conf dentro de la carpeta /etc/apache2/sites-avaliable/ con el siguiente contenido para balancear las peticiones http al puerto 80 entre los nodos disponibles del clúster.

En la imagen anterior se puede destacar como el balanceador de carga, cuando reciba una solicitud del servicio en el puerto 80, distribuirá esta solicitud entre las IP 172.20.10.13-14 al puerto 9763.

d) Añade al archivo wso2.as.com.conf el siguiente contenido para balancear las peticiones https al puerto 443 entre los nodos disponibles del clúster.

Fig. 8 Configuración del Balanceador de Carga - Solicitudes al puerto no seguro

Fig. 9 Configuración del Balanceador de Carga - Solicitudes al puerto seguro

Page 33: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de

33

33 Replicación de Servidores y Balanceo de Carga en WSO2

En la imagen anterior se puede observar como existe un parámetro llamado ProxySet dentro de la etiqueta Proxy, este parámetro establece el tipo de algoritmo de balanceo usado en el balanceador de carga. Para esta configuración, el valor “byrequests” establece que el algoritmo elegido es “Round Robin”, explicado anteriormente. De la misma manera, se puede ver que cuando el balanceador de carga reciba una solicitud del servicio por el puerto seguro 443, las solicitudes serán balanceadas entre las IP 172.20.10.13-14 al puerto 9443. Para ello es necesario la activación del protocolo SSL a través del parámetro “SSLEngine On” y especificar a través del parámetro “SSLCertificateFile” y “SSLCertificateKeyFile” en qué lugar se encuentran los certificados SSL que se explicarán en el punto seis de este apartado.

e) Añade al archivo wso2.as.com.conf el siguiente contenido para permitir el acceso a la consola de administración a través del puerto 443.

En la imagen anterior se puede observar cómo se permite el acceso a la consola de administración del nodo Enterprise Integrator con dirección IP 172.20.10.13 al puerto 9443. Al igual que el punto anterior, se debe activar el protocolo SSL con los parámetros mencionados anteriormente.

f) Crea los certificados SSL para los dos nodos WSO2 EI. [66] [89]

1. Genera la clave privada.

sudo openssl genrsa -des3 -out server.key 1024

2. Genera el certificado CSR (Certificate Signing Request).

sudo openssl req -new -key server.key -out server.csr

3. Elimina las contraseñas del certificado.

sudo cp server.key server.key.org

sudo openssl rsa -in server.key.org -out server.key

4. Firma el certificado SSL.

sudo openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

5. Añade el certificado al archivo <EI_HOME>/repository/resources/security/client-truststore.jks ejecutando el siguiente comando.

Fig. 10 Configuración del Balanceador de Carga - Acceso a la consola de administración

Page 34: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de

Despliegue del clúster

34

34

keytool -import -trustcacerts -alias server -file server.crt -keystore client-truststore.jks

g) Habilita las configuraciones realizadas

sudo a2ensite wso2.as.com.conf

h) Ejecuta el siguiente comando para reiniciar el servidor Apache Httpd.

sudo /etc/init.d/apache2 restart

3.2 Configurando las bases de datos [8]

Con estas instrucciones se desplegará un sistema de base de datos relacional (RDBMS), en concreto se instalará el software “MySQL” desarrollado por Oracle Corporation y considerado el software de base de datos open source más popular del mundo.

3.2.1 Creando las bases de datos 1. Descarga e instala el software MySQL Server. Puede encontrar este programa en la siguiente página web

http://dev.mysql.com/downloads/.

2. Descarga el driver MySQL JDBC. Puede encontrar este elemento en la siguiente página web https://dev.mysql.com/downloads/connector/j/.

3. Descomprime el driver MySQL y copia el archivo con la extensión JAR (mysql-connector-java-x.x.xx-bin-jar) dentro de la carpeta <PRODUCT_HOME>/repository/components/lib.

4. Para acceder a la consola de administración de la base de datos introduce el siguiente comando en el terminal donde “username” es el usuario que se desea usar para acceder a la base de datos. Tras este comando se pedirá la contraseña del usuario.

mysql -u username -p

5. Una vez dentro de la consola de MySQL, crea las bases de datos usando los siguientes comandos.

Fig. 11 Configuración de las Bases de Datos - Creación

Page 35: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de

35

35 Replicación de Servidores y Balanceo de Carga en WSO2

En la imagen anterior podemos observar cómo se repite la misma serie de comandos para cada base de datos que se describió en los fundamentos teóricos. Para cada una de las bases de datos, se deben seguir los siguientes pasos.

a) Crear la base de datos.

create database DATABASE;

b) Acceder a la base de datos.

use DATABASE;

c) Configurar la base de datos a través de un script que nos proporciona WSO2 EI.

source <EI_HOME>/dbscripts/mysql.sql;

d) Garantizar permisos para acceder a la base de datos con dominio “carbondb.mysql-wso2.com” a través del usuario “regadmin” con contraseña “regadmin”.

grant all on DATABASE.* TO regadmin@”carbondb.mysql-wso2.com” identified by “regadmin”;

6. Para asociar el dominio utilizado anteriormente a la IP de la base de datos añade la siguiente línea al fichero /etc/hosts.

<MYSQL-DB-SERVER-IP> carbondb.mysql-wso2.com

3.2.2 Montando el registro Añade la siguiente configuración al fichero <EI_HOME>/conf/registry.xml para asegurar que las bases de datos se configuran correctamente para todos los nodos WSO2 EI.

Tenga en cuenta las siguientes recomendaciones al realizar las modificaciones anteriores.

Fig. 12 Configuración de las Bases de Datos - Configuración

Page 36: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de

Despliegue del clúster

36

36

• La etiqueta dbConfig llamada wso2registry no debe ser eliminada.

• La base de datos que se especifique en la etiqueta dbConfig llamada sharedregistry debe coincidir con la especificada en el fichero <EI_HOME>/conf/datasources/master-datasources

• En el caso de existir varias etiquetas id, definir un nombre único para cada una de ellas.

3.3 Configurando los nodos Enterprise Integrator

1. Descarga y descomprime la distribución WSO2 EI. Considera el directorio extraído como <EI_HOME>.

2. Edita el fichero <EI_HOME>/conf/axis2/axis2.xml de la siguiente manera.

a. Activa la replicación del nodo.

b. Establece el parámetro membership scheme a “wka” (well-known address registration method) como el método de registro.

c. Especifica el nombre del clúster al cuál se unirá este nodo.

Fig. 13 Replicación del nodo

Fig. 14 Well-Known Address Registration Method

Fig. 15 Nombre de dominio

Page 37: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de

37

37 Replicación de Servidores y Balanceo de Carga en WSO2

d. Especifica el nombre de host o la IP del nodo para comunicar los mensajes de replicación.

e. Especifica el puerto TCP usado por el nodo para comunicar los mensajes de replicación.

f. Especifica los miembros bien conocidos (well-known members). Cuantos más nodos bien conocidos se establezcan, mayor será la fiabilidad del clúster en caso de fallo de alguno de ellos.

g. Cambia las siguientes propiedades para configurar las url en las cuales estarán disponibles la consola de administración y los servicios ofrecidos.

3. Configura el HostName. Edita el fichero <EI_HOME>/conf/carbon.xml de la siguiente manera.

Fig. 16 IP del nodo

Fig. 17 Puerto usado por el miembro

Fig. 18 Well-Known Members

Fig. 19 Propiedades de configuración

Fig. 20 Host name del nodo

Page 38: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de

Despliegue del clúster

38

38

4. Activa Deployment Synchronization [11]. Edita el fichero <EI_HOME>/conf/carbon.xml de la siguiente manera.

5. Mapea los host names a las IP correspondientes en el fichero /etc/hosts.

<IP-of-MYSQL-DB-SERVER> carbondb.mysql-wso2.com

6. Permite únicamente el acceso a la consola de administración a través del balanceador de carga. Configura los puertos proxy HTTP/HTTPS para permitir la comunicación a través del balanceador de carga. Edita el fichero <EI_HOME>/conf/tomcat/catalina-server.xml de la siguiente manera.

3.3.1 Configurando los nodos para que interactúen con las bases de datos El clúster propuesto está compuesto por dos nodos Enterprise Integrator los cuales deben apuntar a unas ciertas bases de datos e interactuar con ellas de una manera determinada, en concreto, ambos nodos deben apuntar a las bases de datos WSO2_REGISTRY_DB y WSO2_USER_DB y de manera individual cada nodo debe apuntar a una base de datos REGISTRY_LOCAL.

3.3.1.1 Configurando el primer nodo En el fichero que se mostrará a continuación se deben declarar las bases de datos con las que el nodo se relacionará entre las etiquetas “datasource”. Dentro de cada etiqueta “datasource” hay que establecer los parámetros de la base de datos que queremos configurar. De entre estos parámetros configurados a través de etiquetas podemos destacar los siguientes.

1. name. Esta etiqueta establece el nombre de la base de datos.

2. description. Esta etiqueta establece una breve descripción.

3. url. Esta etiqueta establece la url que se debe usar para conectar a la base de datos.

4. username. Esta etiqueta establece el nombre de usuario que se debe usar para acceder a la base de datos.

5. password. Esta etiqueta establece la contraseña que se debe usar para acceder a la base de datos.

Fig. 21 Activar Deployment Synchronization

Fig. 22 Permitir acceso a la consola de administración

Page 39: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de

39

39 Replicación de Servidores y Balanceo de Carga en WSO2

Edita el fichero <EI_HOME>/conf/datasources/master-datasources.xml de la siguiente manera.

3.3.1.2 Configurando el segundo nodo Para configurar el segundo nodo se debe modificar el fichero <EI_HOME>/conf/datasources/master-datasources.xml de la misma manera que se realizó en el punto anterior, sin embargo, se deberá sustituir la base de datos REGISTRY_LOCAL1 por REGISTRY_LOCAL2. En la siguiente imagen se puede observar cómo quedaría esta configuración.

Fig. 23 Configurar Bases de datos en el primer nodo

Page 40: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de

Despliegue del clúster

40

40

3.4 Configurando Herramienta de Control de Versiones [60] [73]

En este apartado se pretende explicar cómo se instala un repositorio Subversion (SVN) necesario para proporcionar la capacidad de sincronización de los servicios de los nodos de un clúster, ya que Deployment Synchronizer, explicado en Fundamentos Teóricos, hace uso de este. La configuración se realiza sobre una máquina con Ubuntu, sin embargo, la configuración es aplicable a otras distribuciones o incluso a Windows realizando los cambios pertinentes.

3.4.1 Descarga y creación del Repositorio 1. Usa el siguiente comando para descargar e instalar los componentes necesarios.

sudo apt-get install subversion subversion-tools apache2 libapache2-svn

2. Crea manualmente el directorio donde residirá el repositorio.

3. Crea un usuario dedicado únicamente al acceso y gestión del repositorio. También asigna dicho usuario y grupo (del mismo nombre) como propietarios del directorio del punto anterior.

4. Como usuario svn, ejecuta el siguiente comando para crear el repositorio.

svnadmin create --fs-type fsfs <DIRECTORIO>

5. Ejecuta el siguiente comando para arrancar el servidor Subversion (SVN).

svnserve -d

3.4.2 Acceso por svn:// Se deben realizar cambios en el fichero conf/svnserve.conf para que no se produzcan errores de autenticación. Para ello se pueden realizar dos configuraciones diferentes.

1. Permitir la lectura y escritura anónima modificando la directiva “anon-access” asignándole el valor write.

Fig. 24 Configurar bases de datos en el segundo nodo

Page 41: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de

41

41 Replicación de Servidores y Balanceo de Carga en WSO2

2. Permitir la lectura anónima, pero no la escritura. Para ello se debe asignar el valor read a la directiva

“anon-access” y el valor write a la directiva “auth-access”. Además, se debe editar en el fichero la directiva “password-db” para especificar los usuarios y sus contraseñas.

3.4.3 Acceso por http:// [74] Para hacer uso del repositorio a través del protocolo http hace falta usar el servidor de Apache http. Se puede comprobar el buen funcionamiento de apache si desde el navegador introducimos nuestra dirección IP y aparece una página en blanco con la frase “It Works!”. Para configurar el acceso a través del protocolo HTTP se deben realizar una serie de pasos.

1. Activar el módulo mod_dav_svn a través del siguiente comando.

a2enmod dav_svn

2. Modifica el fichero /etc/apach2/mods-availiable/dav-svn.conf de la siguiente manera.

3. Se debe definir usuarios para el acceso por el protocolo HTTP.

htpasswd -cm ruta_fichero_password usuario_a_insertar

Finalmente, se debe recargar la configuración de apache con el siguiente comando.

sudo /etc/init.d/apache2 reload

Fig. 25 Permitir lectura y escritura en Subversion

Fig. 26 Configurar Subversion para acceder por http

Page 42: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de
Page 43: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de

43

4 PRUEBA DEL CLÚSTER

n esta sección se procederá a mostrar cómo funciona el clúster una vez se ha desplegado. Para ello, en primer lugar, se mostrarán los pasos a seguir para poner en ejecución por primera vez las instancias de WSO2 Enterprise Integrator. A continuación, se realizará una solicitud a uno de los

servicios ofrecidos por WSO2 EI pudiendo comprobar cuál es el servidor que sirve la solicitud y como el balanceador de carga la distribuye.

4.1 Conceptos clave

Para este ejemplo se utiliza un ejemplo básico de servicio Web sobre la cotización de acciones llamado SimpleStockQuoteService [18]. Este servicio está disponible en el software WSO2 Enterprise Integrator por defecto. Se deberá hacer uso de tecnologías, como SOAP [99] y WSDL [100]. También se hará uso de un cliente Web para la solicitud del servicio. Para realizar esto, se utiliza un motor de servicios Web independiente llamado Apache Axis2. Este será el servidor utilizado para los servicios que se desean ofrecer. Apache Axis2 se incluye con la distribución de WSO2 Enterprise Integrator de forma predeterminada.

4.1.1 Apache Axis El Servicio final viene con un servidor Axis2 preconfigurado. El software Apache Axis es un framework para servicios web de libre distribución basado en XML. Consiste en una implementación del servidor SOAP para generar y desplegar aplicaciones de servicios web. Axis es desarrollado por Apache Software Foundation. Para el correcto funcionamiento del servicio, es necesario compilar y desplegar el servicio en el servidor Axis2 como se explicará a continuación.

4.2 Ejecución del servicio

4.2.1 Arrancando WSO2 Enterprise Integrator 1. Abra un terminal y sitúese en el directorio <EI_HOME>/bin.

2. Ejecute el siguiente comando para iniciar el software WSO2 Enterprise Integrator con la configuración establecida para el ejemplo número 150, nuestro caso.

E

Da igual. Prueba otra vez. Fracasa otra vez.

Fracasa mejor. - Samuel Beckett -

Fig. 27 Iniciar software WSO2 Enterprise Integrator

Page 44: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de

Prueba del clúster

44

44

4.2.2 Desplegando el servicio Todos los servicios que se quieran desplegar con Apache Axis2 deben ser previamente compilados. Para ello.

1. Abra un shell de Linux y vaya a la carpeta que contiene el servicio que en este ejemplo es el directorio <EI_HOME>/samples/axis2Server /src.

2. Ejecute el comando ant desde el directorio de ejemplo seleccionado.

Por ejemplo, para compilar y desplegar SimpleStockQuoteService, ejecute el siguiente comando desde el directorio <EI_HOME>/samples/axis2Server/src/SimpleStockQuoteService

ant

Tras este comando se debe obtener lo siguiente.

El Servicio SimpleStockQuoteService tiene tres operaciones principales.

• getQuote. Genera una cotización de acciones de ejemplo para un símbolo dado.

• getFullQuote. Genera un histórico de cotizaciones de acciones para un número de días dado.

• getMarketActivity. Devuelve una serie de cotizaciones de acciones para una lista de símbolos dado.

4.2.3 Arrancando el Servidor Axis2 Una vez que se despliega el servicio en el servidor Apache Axis2, este debe ser iniciado antes de ejecutar el cliente. Para iniciar el servidor Axis2.

1. Abra un shell en Linux y vaya al directorio <EI_HOME>/samples/axis2Server.

2. Ejecute el siguiente comando.

sh ./axis2server.sh.

Esto inicia el servidor Axis2 en el puerto 9000 con el protocolo HTTP y en el puerto 9002 a través del protocolo HTTPS.

4.2.4 Ejecutando el cliente Tras realizar esta configuración, se puede acceder al WSDL generado a través de la URL http://ei.wso2.com:80/services/StockQuoteProxy?wsdl. Parte de este archivo puede observarse en la siguiente imagen.

Fig. 28 Compilar y desplegar SimpleStockQuoteService

Page 45: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de

45

45 Replicación de Servidores y Balanceo de Carga en WSO2

Finalmente, para ejecutar el cliente hay que seguir los siguientes pasos.

1. Abra un shell en Linux y vaya al directorio <EI_HOME>/samples/axis2Client.

2. Ejecute el siguiente comando.

ant stockquote -Daddurl=http://ei.wso2.com:80/services/StockQuoteProxy

Podrá observar tras la ejecución que el servicio responde a la solicitud devolviendo un número aleatorio. Este número correspondería a la cotización de acciones de una empresa en función de un su símbolo.

De la misma manera, se puede observar, en el terminal donde se ha ejecutado el Servidor Axis2, que se ha generado una cotización de acciones para el símbolo IBM, el cuál está establecido por defecto en el servidor.

Aunque el servicio solo devuelva un número, se puede afirmar el correcto funcionamiento del clúster, de tal manera que cada vez que se ejecute el cliente, este será servido por un servidor diferente. Esto se demostrará con mayor detalle en el siguiente punto.

Fig. 29 WSDL generado

Fig. 30 Respuesta del servidor

Fig. 31 Generación de un símbolo de cotización

Page 46: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de

Prueba del clúster

46

46

4.3 Comprobación del clúster

En esta sección, se comprobará el funcionamiento del clúster de manera completa. En esta prueba, se hará uso de dos instancias de WSO2 Enterpise Integrator funcionando conjuntamente gracias al balanceador de carga. Para ello, se ejecutarán dos máquinas virtuales Debian que contendrán lo siguiente.

1. Primera Máquina Virtual.

a. Primera instancia WSO2 Enterprise Integrator.

b. Balanceador de Carga.

c. Base de Datos SQL.

d. Repositorio Subversion.

2. Segunda Máquina Virtual.

a. Segunda instancia WSO2 Enterprise Integrator.

En un escenario real, la mayoría de los elementos de la primera máquina virtual deberían estar separados físicamente con el objetivo de eliminar un único punto de fallo, sin embargo, por limitaciones de software ha sido necesario aunarlos en una máquina virtual. Para comprobar como el balanceador solicita el servicio a cada servidor dentro del clúster, haremos uso de la consola de administración de cada uno de los dos servidores [28]. Dentro de la misma, visualizaremos unas estadísticas básicas de nuestro servicio en la sección Home > Service Dashboard > StockQuoteProxy. Como se comentó en la sección anterior, el algoritmo de balanceo de carga seleccionado es “Round Robin” explicado en la sección de “Fundamentos Teóricos”, el cual consiste en el reparto equitativo y en orden de las solicitudes entrantes. Es decir, que cada vez que se ejecute el cliente, este será servido por cada uno de los servidores disponibles en orden. La primera prueba que se realizará será solicitar el servicio dos veces consecutivas, comprobando que cada una de las peticiones es servida por un servidor.

Fig. 33 Primera Máquina Virtual - Primera prueba Fig. 32 Segunda Máquina Virtual - Primera prueba

Page 47: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de

47

47 Replicación de Servidores y Balanceo de Carga en WSO2

Tras esto, se procede a desactivar la segunda instancia de WSO2 Enterprise Integrator. Al salir del clúster, cada nodo lo comunica, de tal manera que el balanceador de carga solo les envía peticiones a las instancias disponibles. La segunda prueba consistirá en realizar dos peticiones adicionales, se puede observar como el primer servidor sirve las solicitudes debido a que es el único disponible dentro del clúster. Esta prueba puede observarse en la siguiente imagen.

En el momento en el cual el segundo servidor volviera a estar disponible, las peticiones de servicio serían repartidas equitativamente, según el algoritmo de carga “Round Robin”, entre los dos servidores.

Fig. 34 Primera Máquina Virtual - Segunda prueba

Page 48: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de
Page 49: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de

49

5 ERRORES DE INSTALACIÓN Y CONFIGURACIÓN

sta sección está destinada a mostrar todos los problemas surgidos a lo largo del desarrollo de este trabajo y de las soluciones acometidas. El objetivo de este apartado consiste en explicar detalladamente como solucionar los errores más comunes durante el despliegue de un clúster con el

fin de facilitar la tarea. La depuración de estos errores resulta compleja, siendo en algunos casos muy tedioso localizar el origen del problema, de tal manera que ha sido la tarea del trabajo que más tiempo ha requerido.

5.1 Error “Cannot find LB Method” (Balanceador de Carga) [52]

5.1.1 Descripción del problema Este error se produce mientras el balanceador de carga Apache Httpd se está iniciando e indica que no es capaz de encontrar el método “byrequests”. A continuación, se muestra el mensaje de error.

5.1.2 Solución del problema La solución a este error consiste en habilitar el módulo mod_lbmethod_byrequests a través del siguiente comando.

sudo a2enmod lbmethod_byrequests

En la documentación oficial de WSO2, en el apartado de configuración del balanceador de carga Apache Httpd, se nombran todos los módulos que es necesario habilitar para que el balanceador de carga funcione correctamente a excepción de este, esto es debido a que no era necesario habilitar este módulo directamente hasta la versión 2.2.22 del balanceador de carga.

E

El único hombre que no se equivoca es el que

nunca hace nada. - Goethe -

Fig. 35 Error “Cannot find LB Method”

Page 50: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de

Errores de instalación y configuración

50

50

5.2 Error al conectarse por HTTPS [53]

5.2.1 Descripción del problema Las conexiones HTTPS, a través de SSL, son reusadas.

5.2.2 Solución del problema Normalmente este error se debe a que el nombre común (common name) del certificado no coincide con el nombre del servidor. La mejor solución es crear nuevos certificados con el nombre correcto, sin embargo, si el error aún persiste, se puede utilizar los siguientes comandos para que no sea necesario que ambos nombres coincidan.

5.3 Variable JAVA_HOME no configurada

5.3.1 Descripción del problema El software WSO2 hace uso de la variable JAVA_HOME para ubicar Java dentro del Sistema Operativo y necesita que esté configurada correctamente. Si esta variable no está configurada, se produce el siguiente error.

5.3.2 Solución del problema Para solucionar este problema, es necesario configurar la variable JAVA_HOME con la ruta al lugar donde esté instalado el runtime enviroment de Java. Sin embargo, esta ruta puede variar en función de la configuración. El siguiente comando muestra como se establece la variable JAVA_HOME a la ruta por defecto de Java.

export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/${JAVA_VERSION}/Home

5.4 Reloj del Sistema mal configurado [55]

5.4.1 Descripción del problema Mientras se inicia la instancia de WSO2 Enterprise Integrator aparecen errores relacionados con la fecha de la máquina virtual.

Fig. 36 Comandos SSL

Fig. 37 Error “JAVA_HOME is not defined correctly”

Page 51: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de

51

51 Replicación de Servidores y Balanceo de Carga en WSO2

5.4.2 Solución del problema Este problema es debido a que WSO2 solo soporta el formato de fecha del sistema en inglés, por lo tanto, una posible solución es cambiar el idioma usado por la máquina virtual de Java (JVM) sin ser necesario cambiar el idioma del Sistema Operativo.

También es necesario modificar el archivo /etc/default/locale como se indica a continuación.

5.5 Error en Subversion (Fichero dav_svn.passwd)

5.5.1 Descripción del problema Para que el software Subversion pueda ser accedido mediante el protocolo http, se debe configurar Apache Httpd. Para ello, hay que definir usuarios y contraseñas que podrán acceder a través de este protocolo, sin embargo, si el fichero dav_svn.passwd no se crea correctamente o no existe se producirá el siguiente error.

5.5.2 Solución del problema Para crear y configurar correctamente el fichero dav_svn.passwd dentro del directorio /etc/apache2/ se hace uso del siguiente comando donde <username> y <password> son el usuario y la contraseña respectivamente.

htpasswd -cm /etc/apache2/dav_svn.passwd <username> <password>

5.6 Error “[JDBC/WSO2CarbonDB] is not bound in this context”

5.6.1 Descripción del problema Este error provoca que no se puedan crear los usuarios JDBC cuando se arrancan las instancias de WSO2 Enterprise Integrator. En caso de que este error suceda, mostrará el siguiente mensaje.

Fig. 38 Error “Unparseable date”

Fig. 39 Cambio del idioma usado por la máquina virtual de Java - Primera modificación

Fig. 40 Cambio del idioma usado por la máquina virtual de Java - Segunda modificación

Fig. 41 Error “Password Mismatch“

Page 52: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de

Errores de instalación y configuración

52

52

5.6.2 Solución del problema Este error sucede debido a que la configuración realizada en el fichero <EI_HOME>/conf/registry.xml, donde se especifica la configuración de la base de datos de registro, no coincide con el fichero <EI_HOME>/conf/datasources/master-datasources.xml, donde se configura qué bases de datos son accedidas por cada instancia WSO2 EI. De la misma manera, si el fichero master-datasources.xml es nombrado de manera incorrecta, sucederá el mismo error. En la configuración oficial de WSO2, en el apartado “Setting up the Database”, este fichero está mal nombrado pudiendo provocar errores en los usuarios que sigan esta guía.

5.7 Error “Communications link failure”

5.7.1 Descripción del problema En el arranque de las instancias de WSO2 Enterprise Integrator se intenta realizar una conexión con el servidor MySQL, sin embargo, se obtiene el siguiente error.

5.7.2 Solución del problema Para solucionar este problema, simplemente se debe cambiar la configuración de MySQL. Dentro del fichero /etc/mysql/my.cnf se debe cambiar el parámetro bind-address a la IP de nuestro servidor, en vez de la IP localhost por defecto.

Finalmente, se debe reiniciar el servidor MySQL con el siguiente comando.

Fig. 42 Error “Name is not bound in this Context”

Fig. 43 Figura de la configuración de WSO2 Clustering

Fig. 44 Error “Communications link failure”

Fig. 45 Cambio del parámetro “bind-address” de MySQL

Page 53: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de

53

53 Replicación de Servidores y Balanceo de Carga en WSO2

/etc/init.d/mysql restart

5.8 Error “Host is not allowed”

5.8.1 Descripción del problema En el arranque de las instancias de WSO2 Enterprise Integrator, cuando se intenta añadir los servidores de bases de datos externos se obtiene el siguiente mensaje de error.

5.8.2 Solución del problema Por omisión, se permite conectar al servidor MySQL desde la dirección de localhost. Si desea que se pueda conectar de manera remota, se debe conceder al usuario de MySQL privilegios para gestionar la base de datos desde una dirección IP específica. Para realizar esta configuración, debe realizar lo siguiente dentro de la consola mysql.

5.9 Error “Error while attempting to create the directory” [59]

5.9.1 Descripción del problema En el arranque de las instancias de WSO2 Enterprise Integrator, cuando se intenta crear un directorio dentro del repositorio Subversion se obtiene el siguiente mensaje de error.

5.9.2 Solución del problema Para solucionar ese error, se debe otorgar los permisos necesarios al directorio donde se desea crear el nuevo directorio.

5.10 Error “Error while attempting to create the directory”

5.10.1 Descripción del problema En el arranque de las instancias de WSO2 Enterprise Integrator, cuando se realizan cambios en el repositorio se obtiene el siguiente mensaje de error.

Fig. 46 Error “Host is not allowed”

Fig. 47 Concesión de privilegios al usuario de MySQL

Fig. 48 Error “Error while attempting to create the directory”

Fig. 49 Error “Error while attempting to create the directory”

Page 54: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de

Errores de instalación y configuración

54

54

5.10.2 Solución del problema Este error se produce cuando el repositorio no es capaz de verificar el usuario y contraseña que accede al mismo. En primer lugar, se debe comprobar si los usuarios y contraseñas se han configurado correctamente. Sin embargo, existe un bug en WSO2 Application Server que provoca que no se obtengan las contraseñas correctamente cuando han sido encriptadas.

Como se puede observar en la imagen, aunque el bug está en proceso de ser solucionado “Status: Open”, no existen versiones sin este error “Fix Version/s: None”, de tal manera que no se puede implementar el repositorio y la herramienta Deployment Synchronizer. Este error fue por el cual se decidió migrar desde la plataforma WSO2 Application Server a WSO2 Enterprise Integrator donde el bug está solucionado.

5.11 Error “Potential cross-site request forgery (CSRF) attack thwarted”

5.11.1 Descripción del problema Todos los productos de WSO2 ofrecen una herramienta, activada por defecto, encargada de ofrecer una completa protección frente a escenarios CSRF [97] o cross-site request forgery, el cuál consiste en un tipo de exploit malicioso que obliga a un usuario final a ejecutar acciones no deseadas en una aplicación web en la que ya está autenticado. Sin embargo, cuando se accede a través del balanceador de carga a la consola de administración, esta herramienta bloquea el acceso ya que considera que es un acceso no autorizado produciendo el siguiente error.

5.11.2 Solución del problema Para evitar este error, se puede desactivar la herramienta siempre teniendo en cuenta la pérdida de seguridad que eso conlleva. Para desactivar la herramienta que ofrece protección contra escenarios CSRF se deben realizar los siguientes pasos.

1. Edite el fichero <EI_HOME>/conf/security/Owasp.CsrfGuard.Carbon.properties.

2. Establece el parámetro org.owasp.csrfguard.Enabled a false.

Fig. 50 Bug WSO2 Application Server

Fig. 51 Error “Potential cross-site request forgery (CSRF) attack thwarted”

Page 55: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de

55

55 Replicación de Servidores y Balanceo de Carga en WSO2

5.12 Error “500 Proxy Error”

5.12.1 Descripción del problema Tras el arranque de las instancias de WSO2 Enterprise Integrator, cuando se intenta acceder a la consola de administración a través del balanceador de carga, se produce el siguiente error.

5.12.2 Solución del problema Este error se produce debido a que existe un problema durante la negociación de parámetros de seguridad (SSL Handshake). Una posible solución de este error es incluir el siguiente comando en el fichero /etc/apache2/sites-avaliable/wso2.as.com.conf para conseguir que no se compruebe si el certificado del servidor remoto está expirado.

5.13 Otras erratas en la guía de configuración de WSO2

5.13.1 Descripción del problema WSO2 Enterprise Integrator es el resultado de la unión de varios productos WSO2 anteriores al mismo, entre ellos WSO2 Application Server. Al comienzo, esta unión se llamó WSO2 Enterprise Service Bus (WSO2 ESB) para finalmente llamarse WSO2 Enterprise Integrator, de tal manera que en la guía oficial de WSO2 Enterprise Integrator existen erratas de nombrado y configuración desactualizada.

5.13.2 Solución del problema Una errata encontrada consiste en nombrar incorrectamente el HostName de la instancia de WSO2. Para solucionar este problema debe cambiarse el nombre esb.wso2.com por ei.wso2.com. De la misma manera, en el parámetro WSDLEPRPrefix dentro del fichero axis2.xml, se debe cambiar la dirección IP https://esb.wso2.com:443 por https://ei.wso2.com:443.

Fig. 52 Error “500 Proxy Error”

Fig. 53 Parámetro “SSLProxyCheckPeerExpire” establecido a “off”

Page 56: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de
Page 57: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de

57

6 CONCLUSIONES

omo resultado del trabajo, ha sido posible el despliegue completo del clúster propuesto. Gracias a esto, se estudian las posibilidades de la plataforma WSO2 para realizar replicación y balanceo de carga y se solucionan algunos errores localizados.

Por otra parte, tras realizar el desarrollo teórico necesario, se puede comprender de manera más detallada el funcionamiento de un clúster, así como todos los errores que pueden suceder durante el despliegue del mismo en la plataforma WSO2. El trabajo realizado se plantea como el primer paso para desarrollar una plataforma que permita el análisis de distintos algoritmos de balanceo a partir de la medición de parámetros de tráfico y calidad de servicio en el clúster. El desarrollo de esta plataforma resultará más sencillo gracias a las tareas realizadas en este trabajo fin de grado, que han permitido solucionar los problemas de configuración y puesta en funcionamiento del escenario principal. Otra posibilidad de continuación sería la creación de un balanceador de carga con la capacidad de cambiar de manera automática entre los diferentes algoritmos de balanceo de carga en función del estado del sistema, de tal manera que el clúster adapte el algoritmo para cada situación consiguiendo crear un sistema considerablemente más eficiente.

C

Nuestra recompensa se encuentra en el esfuerzo

y no en el resultado. Un esfuerzo total es una victoria completa.

- Mahatma Gandhi -

Page 58: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de
Page 59: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de

59

Referencias

[1] Overview. WSO2 Clustering Guide. 28 agosto 2016, 22:25 [consulta: 16 de febrero del 2017]. Disponible en: https://docs.wso2.com/display/CLUSTER44x/Overview

[2] Load Balancing. WSO2 Clustering Guide. 19 octubre 2015, 23:32 [consulta: 16 de febrero del 2017]. Disponible en: https://docs.wso2.com/display/CLUSTER44x/Load+Balancing

[3] Sharing Databases. WSO2 Clustering Guide. 19 octubre 2015, 23:33 [consulta: 12 de marzo del 2017]. Disponible en: https://docs.wso2.com/display/CLUSTER44x/Sharing+Databases

[4] Sticky Sessions with Manager Nodes. WSO2 Clustering Guide. 28 julio 2016, 02:23 [consulta: 16 de febrero del 2017]. Disponible en: https://docs.wso2.com/display/CLUSTER44x/Sticky+Sessions+with+Manager+Nodes

[5] Separating the Worker and Manager Nodes. WSO2 Clustering Guide. 31 octubre 2016, 01:21 [consulta: 27 de febrero del 2017]. Disponible en: https://docs.wso2.com/display/CLUSTER44x/Separating+the+Worker+and+Manager+Nodes

[6] Setting up a Cluster. WSO2 Clustering Guide. 29 agosto 2017, 07:25 [consulta: 03 de marzo del 2017]. Disponible en: https://docs.wso2.com/display/CLUSTER44x/Setting+up+a+Cluster

[7] Configuring Apache Httpd. WSO2 Clustering Guide. 07 marzo 2016, 00:44 [consulta: 27 enero del 2017]. Disponible en: https://docs.wso2.com/display/CLUSTER44x/Configuring+Apache+Httpd

[8] Setting up the Database. WSO2 Clustering Guide. 02 agosto 2017, 03:10 [consulta: 06 de marzo del 2017]. Disponible en: https://docs.wso2.com/display/CLUSTER44x/Setting+up+the+Database

[9] Clustering AS 5.3.0. WSO2 Clustering Guide. 16 septiembre 2015, 14:40 [consulta: 15 enero del 2017]. Disponible en: https://docs.wso2.com/display/CLUSTER44x/Clustering+AS+5.3.0

Page 60: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de

60

[10] Introduction to Deployment Synchronizer. WSO2 Clustering Guide. 11 octubre 2016, 01:36 [16 de febrero del 2017]. Disponible en: https://docs.wso2.com/display/CLUSTER44x/Introduction+to+Deployment+Synchronizer

[11] Configuring SVN-Based Deployment Synchronizer. WSO2 Clustering Guide. 29 julio 2016, 07:28 [consulta: 14 de febrero del 2017]. Disponible en: https://docs.wso2.com/display/CLUSTER44x/Configuring+SVN-Based+Deployment+Synchronizer

[12] Configuring rsync for Deployment Synchronization. WSO2 Clustering Guide. 02 mayo 2017, 10:29 [consulta: 03 de marzo del 2017]. Disponible en: https://docs.wso2.com/display/CLUSTER44x/Configuring+rsync+for+Deployment+Synchronization

[13] Introducing the Enterprise Integrator. WSO2 Enterprise Integrator. 26 julio 2017, 22:56 [consulta: 09 de julio del 2017]. Disponible en: https://docs.wso2.com/display/EI611/Introducing+the+Enterprise+Integrator

[14] Installation Prerequisites. WSO2 Enterprise Integrator. 22 agosto 2017, 03:08 [consulta: 09 de julio del 2017]. Disponible en: https://docs.wso2.com/display/EI611/Installation+Prerequisites

[15] Installing on Linux. WSO2 Enterprise Integrator. 23 marzo 2017, 22:39 [consulta: 09 de julio del 2017]. Disponible en: https://docs.wso2.com/display/EI611/Installing+on+Linux

[16] Running the Product. WSO2 Enterprise Integrator. 15 agosto 2017, 22:09 [consulta: 09 de julio del 2017]. Disponible en: https://docs.wso2.com/display/EI611/Running+the+Product

[17] Clustering the ESB Profile. WSO2 Enterprise Integrator. 23 agosto 2017, 00:28 [consulta: 13 de julio del 2017]. Disponible en: https://docs.wso2.com/display/EI611/Clustering+the+ESB+Profile

[18] Sample 150: Introduction to Proxy Services. WSO2 Enterprise Integrator. 28 agosto 2017, 06:36 [consulta: 01 de agosto del 2017]. Disponible en: https://docs.wso2.com/display/EI611/Sample+150%3A+Introduction+to+Proxy+Services

[19] Prerequisites to Publish Statistics. WSO2 Enterprise Integrator. 30 agosto 2017, 06:23 [consulta: 01 de agosto del 2017]. Disponible en: https://docs.wso2.com/display/EI611/Prerequisites+to+Publish+Statistics

[20] Introducing AS. WSO2 Application Server. 14 septiembre 2015, 20:33 [consulta: 15 de marzo del 2017]. Disponible en: https://docs.wso2.com/display/AS530/Introducing+AS

Page 61: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de

61

[21] Architecture. WSO2 Application Server. 08 octubre 2015, 06:29 [consulta: 15 de marzo del 2017]. Disponible en: https://docs.wso2.com/display/AS530/Architecture

[22] Quick Start Guide. WSO2 Application Server. 28 enero 2016, 22:39 [consulta: 15 de marzo del 2017]. Disponible en: https://docs.wso2.com/display/AS530/Quick+Start+Guide

[23] Downloading the Product. WSO2 Application Server. 27 julio 2015, 19:59 [consulta: 15 de marzo del 2017]. Disponible en: https://docs.wso2.com/display/AS530/Downloading+the+Product

[24] Installation Prerequisites. WSO2 Application Server. 11 noviembre 2016, 03:29 [consulta: 15 de marzo del 2017]. Disponible en: https://docs.wso2.com/display/AS530/Installation+Prerequisites

[25] Installing on Linux or OS X. WSO2 Application Server. 15 abril 2016, 14:16 [consulta: 16 de marzo del 2017]. Disponible en: https://docs.wso2.com/display/AS530/Installing+on+Linux+or+OS+X

[26] Running the Product. WSO2 Application Server. 05 noviembre 2015, 21:56 [consulta: 16 de marzo del 2017]. Disponible en: https://docs.wso2.com/display/AS530/Running+the+Product

[27] Access and Performance Statistics. WSO2 Application Server. 10 diciembre 2013, 15:27 [consulta: 10 de mayo del 2017]. Disponible en: https://docs.wso2.com/display/AS521/Access+and+Performance+Statistics

[28] Web Application Statistics via Management Console. WSO2 Application Server. 06 junio 2014, 14:06 [consulta: 10 de mayo del 2017]. Disponible en: https://docs.wso2.com/display/AS521/Web+Application+Statistics+via+Management+Console

[29] Web Application Statistics Monitoring with BAM. WSO2 Application Server. 07 marzo 2016, 03:39 [consulta: 10 de mayo del 2017]. Disponible en: https://docs.wso2.com/display/AS521/Web+Application+Statistics+Monitoring+with+BAM

[30] JMX-Based Monitoring. WSO2 Application Server. 11 septiembre 2014, 11:37 [consulta: 10 de mayo del 2017]. Disponible en: https://docs.wso2.com/display/AS521/JMX-Based+Monitoring

[31] Collecting Data Statistics of Services. WSO2 Application Server. 30 septiembre 2014, 19:07 [consulta: 10 de mayo del 2017]. Disponible en: https://docs.wso2.com/display/AS521/Collecting+Data+Statistics+of+Services

Page 62: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de

62

[32] Exposing Datasources as JNDI Resources. WSO2 Application Server. 04 octubre 2013, 12:09 [consulta: 10 de mayo del 2017]. Disponible en: https://docs.wso2.com/display/AS520/Exposing+Datasources+as+JNDI+Resources

[33] Introducing DAS. WSO2 Data Analytics Server. 17 febrero 2017, 05:55 [consulta: 15 de abril del 2017]. Disponible en: https://docs.wso2.com/display/DAS310/Introducing+DAS

[34] Architecture. WSO2 Data Analytics Server. 23 febrero 2017, 05:28 [consulta: 15 de abril del 2017]. Disponible en: https://docs.wso2.com/display/DAS310/Architecture

[35] Quick Start Guide. WSO2 Data Analytics Server. 26 mayo 2017, 05:29 [consulta: 15 de abril del 2017]. Disponible en: https://docs.wso2.com/display/DAS310/Quick+Start+Guide

[36] Installation Prerequisites. WSO2 Data Analytics Server. 18 julio 2017, 01:06 [consulta: 15 de abril del 2017]. Disponible en: https://docs.wso2.com/display/DAS310/Installation+Prerequisites

[37] Installing on Linux. WSO2 Data Analytics Server. 01 agosto 2017, 03:04 [consulta: 15 de abril del 2017]. Disponible en: https://docs.wso2.com/display/DAS310/Installing+on+Linux

[38] Running the Product. WSO2 Data Analytics Server. 17 febrero 2017, 05:57 [consulta: 16 de abril del 2017]. Disponible en: https://docs.wso2.com/display/DAS310/Running+the+Product

[39] Prerequisites to Publish Statistics. WSO2 Enterprise Service Bus. 30 agosto 2017, 06:26 [consulta: 05 de mayo del 2017]. Disponible en: https://docs.wso2.com/display/ESB500/Prerequisites+to+Publish+Statistics

[40] Introducing Developer Studio. WSO2 Developer Studio. 18 junio 2013, 08:11 [consulta: 07 de mayo del 2017]. Disponible en: https://docs.wso2.com/display/DVS320/Introducing+Developer+Studio

[41] Installation. WSO2 Developer Studio. 08 enero 2014, 10:17 [consulta: 07 de mayo del 2017]. Disponible en: https://docs.wso2.com/display/DVS320/Installation

[42] Creating a Web Application. WSO2 Developer Studio. 02 marzo 2014, 01:00 [consulta: 07 de mayo del 2017]. Disponible en: https://docs.wso2.com/display/DVS310/Creating+a+Web+Application

[43] Creating an Axis2 Project. WSO2 Developer Studio. 12 junio 2013,15:52 [consulta: 27 de mayo del 2017]. Disponible en: https://docs.wso2.com/display/DVS310/Creating+an+Axis2+Project

Page 63: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de

63

[44] How to setup WSO2 Load Balancer. WSO2. 21 mayo 2012 [consulta: 03 de febrero del 2017]. Disponible en: http://wso2.com/library/articles/2012/05/setup-wso2-elastic-load-balancer/

[45] How to Write a Web Application Backed by WSO2 Middleware - Part 1. WSO2. 9 febrero 2015 [consulta: 28 de febrero del 2017]. Disponible en: http://wso2.com/library/articles/2015/02/how-to-write-a-web-application-backed-by-wso2-middleware-part-1/

[46] How to develop and deploy web applications using WSO2 Developer Studio. WSO2. 24 septiembre 2012 [consulta: 28 de febrero del 2017]. Disponible en: http://wso2.com/library/articles/2012/09/develop-deploy-web-applications-using-wso2-developer-studio/

[47] Password for SVNPassword in Deployment Synchronizer configuration, encrypted with cipher tool is not taken properly. WSO2. 17 enero 2017, 11:07 [consulta: 05 de junio del 2017]. Disponible en: https://wso2.org/jira/browse/CARBON-16100

[48] How to setup WSO2 Load Balancer. Blog Afkham. 22 septiembre 2011 [consulta: 28 de febrero del 2017]. Disponible en: http://blog.afkham.org/2011/09/how-to-setup-wso2-elastic-load-balancer.html

[49] WSO2 Load Balancer - how it works. Blog Afkham. 7 septiembre 2011 [consulta: 28 de febrero del 2017]. Disponible en: http://blog.afkham.org/2011/09/wso2-load-balancer-how-it-works.html

[50] Group Membership Management Schemes. Blog Afkham. 17 mayo 2008 [consulta: 28 de febrero del 2017]. Disponible en: http://blog.afkham.org/2008/05/group-membership-management-schemes.html

[51] Learn How to Configure the WSO2 Load Balancer for Auto Scaling. Dzone. 01 marzo 2012 [consulta: 28 de febrero del 2017]. Disponible en: https://dzone.com/articles/learn-how-configure-ws02-load

[52] Apache 2.4 proxy_balancer and lbmethod_byrequest. Serverfault. 26 agosto 2014, 13:54 [consulta: 25 de marzo del 2017]. Disponible en: https://serverfault.com/questions/624113/apache-2-4-proxy-balancer-and-lbmethod-byrequest

[53] Using Https between Apache Loadbalancer and backends. Serverfault. 22 febrero 2014, 20:18 [consulta: 25 de marzo del 2017]. Disponible en: https://serverfault.com/questions/577616/using-https-between-apache-loadbalancer-and-backends

[54] Balanceo de carga con Apache en Debian Jessie. Grislet. 8 junio 2016 [consulta: 20 de marzo del 2017].

Page 64: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de

64

Disponible en: http://www.grislet.com.ar/realizar-balanceo-carga-servidor-apache/

[55] How to force a clock update using ntp?. Askubuntu. 13 febrero 2013, 21:58 [consulta: 15 de febrero del 2017]. Disponible en: https://askubuntu.com/questions/254826/how-to-force-a-clock-update-using-ntp

[56] [WSO2] Deployment Synchronizer for Deployment Artifact Synchronization Between the WSO2 Cluster Nodes. Slideshare. 31 octubre 2012 [consulta: 14 de marzo del 2017]. Disponible en: https://es.slideshare.net/kasunbg/wso2-dep-sync-for-artifact-synchronization-of-cluster-nodes

[57] Creating a WSO2 Application Server cluster using AWS EC2 and Nginx as a load balancer. Blog pubudu. 16 noviembre 2015 [consulta: 17 de abril del 2017]. Disponible en: https://blog.pubudu.xyz/2015/11/16/creating-a-wso2-application-server-cluster-using-aws-ec2/

[58] How to deploy web application to WSO2-AS (cluster mode). Stackoverflow. 10 mayo 2016, 04:50 [consulta: 17 de mayo del 2017]. Disponible en: https://stackoverflow.com/questions/37129444/how-to-deploy-web-application-to-wso2-as-cluster-mode

[59] Common SVN related issues faced with WSO2 products and how the can be solved. Blogspot. 21 julio 2015 [consulta: 16 de febrero del 2017]. Disponible en: http://evanthika.blogspot.com.es/2015_07_01_archive.html

[60] How to setup WSO2 SVN based deployment synchronizer. Blog nu1silva. 9 diciembre 2013 [consulta: 16 de febrero del 2017]. Disponible en: http://blog.nu1silva.com/wso2/setup-wso2-svn-based-deployment-synchronizer/

[61] How to point Direct repository location (file://) for SVN based deployment-sync. WSO2 Oxygen Tank. 27 septiembre 2014, 04:12 [consulta: 16 de febrero del 2017]. Disponible en: http://wso2-oxygen-tank.10903.n7.nabble.com/How-to-point-Direct-repository-location-file-for-SVN-based-dep-sync-td103844.html

[62] How To Set Up An SVN Repository In 7 Simple Steps. Civicactions. 25 marzo 2010 [consulta: 16 de febrero del 2017]. Disponible en: https://civicactions.com/blog/how-to-set-up-an-svn-repository-in-7-simple-steps/

[63] WSO2 Clustering And Deployment Synchronization. Brentmoore. 12 abril 2017 [consulta: 16 de febrero del 2017]. Disponible en: https://brentmoore.org/blog/wso2-clustering-and-deployment-synchronization

[64] Montar un repositorio Subversion con acceso SVN y HTTP. Wordpress. 06 enero 2010 [consulta: 22 de

Page 65: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de

65

febrero del 2017]. Disponible en: https://arklad.wordpress.com/2010/01/06/montar-un-repositorio-subversion-con-acceso-svn-y-http/

[65] Is there a graceful way to stop svnserve -d. Stackoverflow. 2 diciembre 2008, 03:13 [consulta: 22 de febrero del 2017]. Disponible en: https://stackoverflow.com/questions/332930/is-there-a-graceful-way-to-stop-svnserve-d

[66] Cómo crear un certificado SSL auto-firmado. Hackplayers. 26 octubre 2012 [consulta: 04 de marzo del 2017]. Disponible en: http://www.hackplayers.com/2012/10/como-crear-un-certificado-ssl-auto-firmado.html

[67] Manejo de certificados con key tool para la activación de SSL. Adictosaltrabajo. 10 agosto 2005 [consulta: 04 de marzo del 2017]. Disponible en: https://www.adictosaltrabajo.com/tutoriales/security-ssl-keytool/

[68] Hazelcast clustering with WSO2 carbon servers in 20 minutes - part 2. Blogspot. 10 agosto 2014 [consulta: 12 de marzo del 2017]. Disponible en: http://shafreenanfar.blogspot.com.es/2014/08/hazelcast-clustering-with-wso2-carbon.html

[69] How to register JNDI resources for webapps in WSO2 Application Server. Wordpress. 31 mayo 2012 [consulta: 23 de marzo del 2017]. Disponible en: https://kishanthan.wordpress.com/2012/05/31/how-to-register-jndi-resources-for-webapps-in-wso2-application-server/

[70] Tomcat connection pool configuration example. Javacodegeeks. 23 marzo 2015 [consulta: 23 de marzo del 2017]. Disponible en: https://examples.javacodegeeks.com/enterprise-java/tomcat/tomcat-connection-pool-configuration-example/

[71] Tomcat server.xml Configuration Example. Javacodegeeks. 24 febrero 2015 [consulta: 23 de marzo del 2017]. Disponible en: https://examples.javacodegeeks.com/enterprise-java/tomcat/tomcat-server-xml-configuration-example/

[72] Create an SVN (Subversion) Server on Linux (Debian / Ubuntu - Redhat / CentOS). Dorkfolio. 05 octubre 2017 [consulta: 30 de marzo del 2017]. Disponible en: http://www.dorkfolio.net/create-an-svn-subversion-server-on-linux-debian-ubuntu-redhat-centos/

[73] subversion, instalación, configuración y uso en debían. Laupri. 15 febrero 2009 [consulta: 30 de marzo del 2017]. Disponible en: http://laupri.com/blog/spip.php?article183

Page 66: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de

66

[74] SVN Server on Ubuntu with https access. Wordpress. 9 septiembre 2012 [consulta: 12 de abril del 2017]. Disponible en: https://rbgeek.wordpress.com/2012/09/09/svn-server-on-ubuntu-with-https-access/

[75] subversion on apache - checkout failed: 405 Method Not Allowed. Serverfault. 11 mayo 2014, 20:37 [consulta: 21 de abril del 2017]. Disponible en: https://serverfault.com/questions/594424/subversion-on-apache-checkout-failed-405-method-not-allowed

[76] SVN 405 Method Not Allowed. Stackoverflow. 30 agosto 2010, 15:09 [consulta: 27 de abril del 2017]. Disponible en: https://stackoverflow.com/questions/3601669/svn-405-method-not-allowed

[77] SVN 405 Error: Could not fetch resource information. Stackoverflow. 9 abril 2014, 20:47 [consulta: 27 de abril del 2017]. Disponible en: https://stackoverflow.com/questions/22973591/svn-405-error-could-not-fetch-resource-information

[78] Subversion error: (405 Method Not Allowed) in response to MKCOL. Serverfault. 15 junio 2011, 09:06 [consulta: 12 de abril del 2017]. Disponible en: https://serverfault.com/questions/11996/subversion-error-405-method-not-allowed-in-response-to-mkcol

[79] Subversion, SSH and Apache [SOLVED]. Archlinux. 12 agosto 2008, 20:00 [consulta: 22 de abril del 2017]. Disponible en: https://bbs.archlinux.org/viewtopic.php?id=53365

[80] How to Install and Configure Subversion (SVN) on RHEL 6.3. Blogspot. 12 enero 2013 [consulta: 23 de abril del 2017]. Disponible en: http://magnus-k-karlsson.blogspot.com.es/2013/01/how-to-install-and-configure-subversion.html

[81] Apache2 enable .ini mod in /etc/ptp5/mods-available. Serverfault. 20 agosto 2014, 16:12 [consulta: 23 de abril del 2017]. Disponible en: https://serverfault.com/questions/622800/apache2-enable-ini-mod-in-etc-php5-mods-available

[82] Enabling Apache Sites and Modules in Ubuntu. Trentrichardson. 17 junio 2017 [consulta: 23 de abril del 2017]. Disponible en: http://trentrichardson.com/2011/06/17/enabling-apache-sites-and-modules-in-ubuntu/

[83] How to Deploy Web Services in WSO2 Application Server using WSO2 Developer Studio. Wordpress. 8 noviembre 2015 [consulta: 07 de mayo del 2017]. Disponible en: https://nuwanpallewela.wordpress.com/2015/11/08/how-to-deploy-web-services-in-wso2-application-server-using-wso2-developer-studio/

Page 67: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de

67

[84] Getting Started with WSO2: The basics; What is WSO2 and how do I install it?. Yenlo. 1 octubre 2014 [consulta: 07 de mayo del 2017]. Disponible en: https://www.yenlo.com/blog/getting-started-with-wso2-the-basics-what-is-wso2-and-how-do-i-install-it

[85] Create a JAX-RS Web service and a client using WSO2 Developer Studio. Lasindu. 19 mayo 2014 [consulta: 07 de mayo del 2017]. Disponible en: http://blog.lasindu.com/2014/05/create-jax-rs-web-service-and-client.html

[86] Introducción al ESB de WSO2 a través de ejemplos prácticos. II. Blogspot. 06 abril 2014, 08:00 [consulta: 07 de mayo del 2017]. Disponible en: http://desarrollosoa.blogspot.com.es/2013/06/introduccion-al-esb-de-wso2-traves-de_4.html

[87] Common SVN related issues faced with WSO2 products and how the can be solved. Blogspot. 21 julio 2015 [consulta: 05 de junio del 2017]. Disponible en: http://evanthika.blogspot.com.es/2015/07/common-svn-related-issues-faced-with.html

[88] Java Keytool Essentials: Working with Java Keystores. Digitalocean. 15 octubre 2014 [consulta: 13 de julio del 2017]. Disponible en: https://www.digitalocean.com/community/tutorials/java-keytool-essentials-working-with-java-keystores

[89] OpenSSL Essentials: Working with SSL Certificates, Private Keys and CSRs. Digitalocean. 12 septiembre 2014 [consulta: 13 de julio del 2017]. Disponible en: https://www.digitalocean.com/community/tutorials/openssl-essentials-working-with-ssl-certificates-private-keys-and-csrs/

[90] Configuring Java CAPS for SSL Support. Oracle. [consulta: 13 de julio del 2017]. Disponible en: https://docs.oracle.com/cd/E19509-01/820-3503/6nf1il6er/

[91] SSL, Keystore, Truststore and Mutual Authentication. LogiCoy Blog. 2 enero 2014 [consulta: 10 de junio del 2017]. Disponible en: http://logicoy.com/blogs/ssl-keystore-truststore-and-mutual-authentication/

[92] Newbie keytool command - how to update already added to keystore?. Stackoverflow. 13 diciembre 2013, 17:07 [consulta: 18 de julio del 2017]. Disponible en: https://stackoverflow.com/questions/20572100/newbie-keytool-command-how-to-update-cert-already-added-to-keystore

[93] Scalability. Wikipedia. 5 julio 2017, 03:54 [consulta: 19 de enero del 2017]. Disponible en: https://en.wikipedia.org/wiki/Scalability#HORIZONTAL-SCALING

Page 68: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de

68

[94] Computer cluster. Wikipedia. 28 agosto 207, 16:19 [consulta: 15 de enero del 2017]. Disponible en: https://en.wikipedia.org/wiki/Computer_cluster

[95] WSO2. Wikipedia. 28 agosto 2017, 09:04 [consulta: 05 de enero del 2017]. Disponible en: https://en.wikipedia.org/wiki/WSO2

[96] Apache Software Foundation. Wikipedia. 03 agosto 2017, 17:18 [consulta: 30 de marzo del 2017]. Disponible en: https://en.wikipedia.org/wiki/Apache_Software_Foundation

[97] Cross-Site Request Forgery (CSRF). Owasp. 20 junio 2017 [consulta: 05 de julio del 2017]. Disponible en: https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)

[98] Servidor http Apache. Wikipedia. 15 julio 2017, 01:50 [consulta: 09 de julio del 2017]. Disponible en: https://es.wikipedia.org/wiki/Servidor_HTTP_Apache

[99] Simple Object Access Protocol. Wikipedia. 22 agosto 2017, 16:00 [consulta: 16 de julio del 2017]. Disponible en: https://es.wikipedia.org/wiki/Simple_Object_Access_Protocol

[100] Web Services Description Language. Wikipedia. 22 agosto 2017, 15:56 [consulta: 16 de julio del 2017]. Disponible en: https://es.wikipedia.org/wiki/WSDL

[101] Mesa, A. (2009). “MÉTODO PARA EL MANEJO DEL BALANCEO DE CARGA EN SISTEMAS DE CÓMPUTO DISTRIBUIDO DE ALTO DESEMPEÑO” [Tesis de grado]. Universidad de Columbia. [consulta: 12 de marzo del 2017]. Disponible en: http://www.bdigital.unal.edu.co/3497/1/32296964.2009_1.pdf

Page 69: Replicación de Servidores y Balanceo de Carga en WSO2bibing.us.es/proyectos/abreproy/91504/fichero/Memoria... · WSO2, y por otro comprender exhaustivamente el funcionamiento de

69

GLOSARIO BBDD: Base de Datos 8

Clúster: Conjuntos o conglomerados de ordenadores unidos entre sí normalmente por una red de alta velocidad y que se comportan como si fuesen una única computadora. 1

ELB: Elastic Load Balancer (Balanceador de Carga Elástico) 11

Hardware: Conjunto de elementos físicos o materiales que constituyen una computadora o un sistema informático. 3

HTTP: Hypertext Transfer Protocol (Protocolo de transferencia de hipertexto) 11

IP: Internet Protocol (Protocolo IP) 7

JAR: Java ARchive (Archivo Java) 14

JDBC: Java Database Connectivity 8

JVM: Java Virtual Machine (Máquina Virtual de Java) 31

RDBMS: Relational database management system (Sistema de base de datos relacional) 14

Replicación: Proceso de copiar y mantener actualizados los datos en varios nodos de bases de datos ya sean estos persistentes o no. 6

Servidor: Computadora conectada a una red informática que contiene datos, programas, etc., que dan servicio a otras computadoras a través de esta red. 1

SOAP: Simple Object Access Protocol 23

SQL: Structured Query Language 8

SSL: Secure Sockets Layer 13

SVN: Subversion 20

TCP: Transmission Control Protocol (Protocolo de control de transmisión) 17

TFG: Trabajo de Fin de Grado 11

WKA: Well-Known Address (Miembros Bien Conocidos) 16

WSDL: Web Services Description Language 23

WSO2 AS: WSO2 Application Server 5

WSO2 DAS: WSO2 Data Analytics Server 5

WSO2 EI: WSO2 Enterprise Integrator 5