Cluster de Alta Disponibilidad y Alto Desempeño para Servidores
Transcripción
Cluster de Alta Disponibilidad y Alto Desempeño para Servidores
35 Cluster de Alta Disponibilidad y Alto Desempeño para Servidores Web (ADAD-SW) Osvaldo Miguel González Prieto Universidad Nacional del Este - Facultad Politécnica [email protected] Resumen. Este proyecto pretende integrar soluciones de software libre en la composición de un cluster de alta disponibilidad y alto desempeño, para garantizar un nivel de calidad equivalente al de las soluciones propietarios existentes en el mercado. La alta disponibilidad, el alto desempeño y el balanceo de carga se basan fundamentalmente en un concepto: redundancia. La mejor forma de asegurar la disponibilidad de equipos y los servicios que ellos suministran de manera fiable, rápida y sin interrupción las 24 horas durante 7 días a la semana, es la duplicación de todos sus elementos críticos y la disposición de los elementos software y hardware necesarios para que los elementos redundantes actúen cooperativamente, siempre de forma transparente para el usuario final, con resultados favorables como el aumento significativo de velocidad de descarga, y características de robustez y eficiencia en las pruebas de alta disponibilidad. Palabras claves: alta disponibilidad, alto desempeño, balanceo de carga, redundancia, cluster. Abstract. This projects aims to integrate free software solutions in the composition of a high availability and high performance cluster, ensuring a quality level equivalent to the existing owners´ solutions in the market. High availability, high performance and load balance, are mainly based on one concept: redundancy. The best method for ensuring the availability of equipments and services they provide in a reliable, fast and uninterrupted 24 hours a day, 7 days a week way, is the duplication of all its critical elements and the disposition of needed software and hardware elements so that the redundant elements act cooperatively, but always in a transparent way for the end user. The aim is to obtain as a result a significant increase in download speed, as well as the robustness and efficiency in high availability tests. Keywords: high availability, high performance, load balance, redundancy, cluster. 1. Introducción El propósito de este proyecto es explorar y experimentar las técnicas utilizadas para crear un cluster de ordenadores que ofrezca servicio Web de contenidos dinámicos, con los objetivos de ofrecer todas las características posibles. Alta disponibilidad y alto desempeño son tecnologías emergentes. Éstas están cimentadas sobre la base de soluciones propietarias, en su mayoría ligadas habitualmente a costosas arquitecturas hardware [1]. Linux HA Project [1] es el encargado de aunar los esfuerzos de la comunidad libre para hacer de Linux una excelente plataforma sobre la cual ofrecer servicios de alta disponibilidad y alto desempeño. El proyecto ADAD-SW realiza en primer lugar, un estudio teórico sobre arquitectura de clustering de alta disponibilidad, alto desempeño y escalabilidad, centrando su interés en la figura del balanceador de carga. Posteriormente se realiza un estudio y evaluación de las diferentes propuestas surgidas desde el entorno del software para este fin. Por último se monta y se configura el cluster, donde se implementa la arquitectura mínima necesaria, para evaluar las capacidades que ofrece una solución clustering basada en software libre Linux NAT4, que permite ofrecer servicios Web y FTP5. 2. Importancia del trabajo Con el actual ritmo de crecimiento del comercio y el movimiento de datos de todo tipo en Internet y la incuestionable importancia de la informática en las empresas actuales de cualquier tamaño, es cada día más importante que los sistemas informáticos empleados en éstas puedan funcionar de forma ininterrumpida, ya sea para dar soporte interno (contabilidad, 4 5 Network Address Translation File Transfer Protocol ARTÍCULOS CIENTÍFICOS – INFORMÁTICA – Nº 4 – AÑO 2008 36 control de personal, desarrollo, etc.) como para ofrecer servicios a través de Internet (comercio electrónico, correo, portales, educación a distancia, donde se utiliza fundamentalmente Internet como medio de comunicación). A esta necesidad de un servicio ininterrumpido, rápido y fiable se denomina alta disponibilidad y alto desempeño, con balanceo de carga; objetivo de este proyecto. 3.2 Alta disponibilidad La principal técnica para obtener estos sistemas tolerantes a fallos es la redundancia, que consiste en replicar las zonas críticas del sistema, teniendo una unidad activa y varias copias inactivas que, tras el fallo de la principal, sean capaces de retomar su labor en el punto que aquella falló, en el menor tiempo posible y de forma transparente para el usuario [1]. 3.3 Alto rendimiento La redundancia permite alta disponibilidad a partir de la instalación de varios servidores completos, en lugar de uno sólo, que sean capaces de trabajar en paralelo y de asumir la caída de uno de ellos, así se podrá añadir y quitar servidores del grupo conocido como cluster según las necesidades [4]. Este tipo de cluster sirve para resolver problemas complejos que requieren una gran cantidad de potencia computacional; por ejemplo, para pronóstico del tiempo, simulación y criptografía, etc. [9]. 4. ADAD-SW La persistente necesidad de mantener la competitividad de las empresas, requiere escalabilidad en las soluciones hardwares adaptadas para que sean capaces de amoldarse al dinamismo del mercado. Otro factor de importancia surge de la posibilidad de contar con el Sistema Operativo Linux que se caracteriza por su estabilidad, libre distribución, multiplata-forma y multiprocesamiento, además existen varios paquetes libres para la instalación y configuración de un cluster, características relevantes para el éxito del proyecto a un bajo costo. 3. Clasificación de los Cluster Existen varias taxonomías aplicadas a la clasificación de los clusters. Una de ellas, por ejemplo, tiene en cuenta el carácter propietario o no de los mismos, dividiéndolos en clusters de tipo I, construidos con componentes estándares, y clusters de tipo II los de origen propietario [7]. Otra clasificación bastante utilizada en la literatura técnica, y que resulta bastante útil para el análisis de los clusters, es la que distingue los fines aplicativos del cluster [9], son como sigue: 3.1 Balanceador de carga. Cluster que permite que un conjunto de servidores compartan la carga de trabajo y de tráfico a sus clientes [9]. Se describe los diferentes tipos de balanceadores de carga existentes. Posteriormente, se abordan los mecanismos en los que se basa su funcionamiento, en particular, los diferentes métodos de distribución de carga (stateless o stateful) y algoritmos de Scheduling; más adelante se profundizará sobre estos temas. También se plantean diferentes mecanismos para reenviar los paquetes hacia los servidores: NAT, DSR6 y otros sistemas que permiten desarrollar balanceadores de carga distribuidos geográficamente. Otro aspecto ampliamente tratado es la persistencia de sesión, necesario en aquellos servidores que requieren que las diferentes conexiones de una determinada sesión sean procesadas por un mismo servidor, como cuando el cliente realiza una transacción de información con el servidor. Tras esta introducción teórica, se abordan soluciones de software libre que permiten implementar las arquitecturas de clustering expuestas anteriormente. 4.1 Métodos de balanceo de carga utilizado Algoritmos de Scheduling (Hashing) Los balanceadores de carga pueden utilizar diferentes métodos para decidir a qué servidor asignar las diferentes conexiones. Algunos de estos métodos son más efectivos que otros, en 6 Direct Server Return ARTÍCULOS CIENTÍFICOS – INFORMÁTICA – Nº 4 – AÑO 2008 37 función del servicio que se ha de balancear [4]. Debido a ello, un balanceador de carga puede utilizar diferentes algoritmos de Scheduling para balancear diferentes tipos de servicios, uno de ellos es el Round-Robin utilizado en el cluster ADAD-SW. Secuencial (Round-Robin), características: • • • Es el más sencillo, por lo que consume muy pocos recursos. Realiza una asignación secuencial y cíclica de los servidores. Es poco eficiente ya que no tiene en cuenta el número de conexiones establecidas en cada servidor. 4.2 Elementos que forman parte del cluster Los elementos con los que cuenta un cluster son: • Un nodo activo: donde corren los servicios. • Un nodo pasivo: funcionando en modo backup • Dos servidores reales: destinados para servicios HTTP y FTP. • Software de Administración. 4.3 Métodos de reenvío El método de reenvío consiste en la forma en que el balanceador de carga reenvía los paquetes a los servidores reales. Los métodos de reenvío utilizados dependen en gran medida de la infraestructura de red que interconecta los diferentes elementos del balanceador de carga. En redes privadas, donde todas las máquinas pertenecen a la misma red, lo más usual es utilizar NAT, si bien existen técnicas que no necesitan rescribir las cabeceras de los paquetes IP, como Direct Server Return. Cuando las máquinas se encuentran en redes diferentes, con routers y muchos kilómetros de por medio, se utilizan técnicas de balanceo global [4]. NetworkAddressTranslation Método de reenvío utilizado en el cluster ADAD-SW; consiste en cambiar la dirección destino, de la cabecera IP, de los paquetes enviados por el cliente. Esta dirección se sobrescribe en este caso con la dirección IP del servidor real seleccionado por el balanceador de carga. Cuando el paquete retorna al cliente, se restituye esta dirección para que figure como origen. De esta manera, el paso a través del balanceador de carga, se realiza de forma transparente para el cliente [7]. 4.3 Software utilizados Una vez pasada la fase de análisis preliminar, se inició la búsqueda de herramientas de software que mejor se ajustaran a las necesidades ya descritas: alta disponibilidad, balanceo de carga, etc. Linux Virtual Server (LVS) Linux Virtual Server (LVS) es un proyecto que incluye los programas y documentación necesaria para montar un cluster de servidores bajo GNU/Linux. El proyecto LVS es utilizado principalmente para aumentar el rendimiento y escalabilidad de servicios ofrecidos sobre la red; es ampliamente utilizado por grandes sites como SouceForge.net, Linux.com y otros [4]. Es un proyecto de código abierto iniciado por Wensong Zhang en mayo de 1998 [9]. El objetivo es desarrollar un servidor Linux de alto rendimiento que proporcione buena escalabilidad, confiabilidad y robustez usando tecnología clustering. La principal idea es proveer de un mecanismo de migración de sockets. El mecanismo se basa en utilizar una máquina servidora a la que se dirigen las peticiones de los usuarios clientes. La interfaz pública (en Internet) de esta máquina normalmente tiene asociada una dirección conocida como IP Virtual. El objetivo de esta primera computadora es direccionar dichas peticiones a otros servidores reales mediante varias técnicas, de este modo los usuarios clientes ven un único servidor. No obstante éste opera con varias máquinas para conceder uno o varios servicios al exterior [4]. El proyecto LVS se implementa como un conjunto de parches al kernel Linux, y un programa de espacio de usuario denominado IPVSADM [5]. El sistema que tiene instalado LVS es denominado director, cuya función no es otra que balancear las peticiones de red que recibe entre un conjunto de servidores reales que se encuentran detrás de él. LVS funciona a nivel TCP/IP, lo que se conoce como un conmutador de nivel 4. Lo que ve LVS son direcciones y puertos de origen y destino, y ARTÍCULOS CIENTÍFICOS – INFORMÁTICA – Nº 4 – AÑO 2008 38 toma decisiones para balancear la carga con esta información. LVS toma las decisiones cuando se abre una conexión (SYN), manteniendo una tabla de conexiones, para saber a qué servidor real enviar un paquete perteneciente a una conexión ya establecida [9]. Por lo tanto, el balanceo de carga que realiza LVS tiene, en principio, granularidad a nivel de conexión. LVS permite balancear muchos protocolos distintos, en principio puede balancear cualquier protocolo que trabaje en un solo puerto, y puede trabajar con protocolos que usen varios puertos, mediante persistencia o marcas de firewall [5]. Se puede usar iptables [8] para marcar los paquetes pertenecientes a un servicio virtual (con una marca de firewall) y usar esa marca para que LVS identifique los paquetes pertenecientes al servicio virtual. LVS realiza balanceo de carga y facilita la alta disponibilidad entre los servidores reales, si alguno deja de funcionar, se elimina del cluster mediante IPVSADM; cuando vuelva a estar operativo, se añade de nuevo con IPVSADM [2]. Sin embargo, el balanceador de carga pasa a ser un SPOF, si se quiere alta disponibilidad se tiene que añadir un balanceador de respaldo y usar software de alta disponibilidad que le permita tomar el papel del balanceador de carga principal, mediante el uso del programa HearBeat [1]. IP Virtual Server (IPVS) El director ejecuta un kernel de Linux "parcheado" con el código IP Virtual Server (IPVS), que es la característica principal de LVS. El director es un router con las reglas de rutado modificadas. Cuando una nueva petición de conexión para alguno de los servicios ofrecidos por LVS, por ejemplo http, es recibida, el director la reenviará a alguno de los Servidores Reales para que sea atendida. A partir de entonces, todos los paquetes del cliente, pertenecientes a esa conexión, atravesarán el director hacia un Servidor Real en particular. La asociación entre el cliente y el Servidor Real se mantendrá sólo durante el tiempo de vida de la conexión TCP o cuando expire el timeout, que establece el tiempo máximo de inactividad para una conexión establecida [4]. IP Virtual Server (IPVS) es el software con el que se implementa LVS. IPVS es un balanceador de carga de capa de transporte. HeartBeat El HeartBeat tiene como objetivo crear un backup del Director que es el punto frágil en el cluster. Con un backup del Director, el HeartBeat puede monitorear vía cable ethernet o serial el servidor original enviando periódicamente un paquete, que si no llegara, indicaría que un servidor no está disponible, por lo tanto se sabe que el Director ha caído; entonces él automáticamente activa el backup, que asume el lugar del Director Linux hasta que el administrador pueda corregir el problema en el servidor original [1]. Ldirectord Es el demonio lanzado por Heartbeat para la monitorización y control de los Servidores Reales, así como para llevar a cabo la administración de las tablas de forwarding del kernel. Ldirectord comprueba el estado de los Servidores Reales en intervalos de tiempo predeterminados con el objetivo de mantener actualizada la tabla del servidor virtual. Ldirectord genera reglas IPVSADM para gestionar el LVS. De esta manera, Ldirectord permite actualizar dinámicamente las tablas que definen el comportamiento del balanceador de carga IPVS. Si uno de los Servidores Reales deja de servir peticiones de alguno de los servicios prestados por LVS, Ldirectord creará una llamada a IPVSADM que hará que el balanceador deje de reenviarle paquetes al Servidor Real [4]. 4.4 El problema con el Protocolo de Resolución de Direcciones (ARP) El Director actúa como un router IP aceptando paquetes destinados a la VIP7 y enviándolos posteriormente a un Servidor Real. El router por el cual el cliente accede al cluster, envía peticiones ARP periódicamente para conocer la MAC8 asociada a la VIP y tener actualizada de este modo su cache ARP, por lo que solamente el Director activo deberá responder con su MAC [4]. Así, el router, tras recibir la respuesta ARP, enviará la petición de conexión al Director activo que, a su vez, la reenviará a uno de los Servidores Reales. 7 8 Virtual Internet Protocol Media Access Control ARTÍCULOS CIENTÍFICOS – INFORMÁTICA – Nº 4 – AÑO 2008 39 En cambio, si el router obtiene la dirección MAC de uno de los Servidores Reales en vez de obtener la MAC del Director activo, entonces los paquetes serán enviados directamente a ese Servidor Real, ignorando el papel que debería desempeñar el Director. Durante el transcurso de la sesión, el router puede volver a enviar un broadcast ARP (petición ARP) para mantener actualizadas sus tablas [3]. En el caso de que en esta ocasión, responda primero otro Servidor Real, los paquetes de la conexión ya establecida con el Servidor Real anterior, serán enviados al Servidor Real que antes haya contestado al router. Si éste no es el mismo que contestó en primer lugar la vez anterior, le llegarán los paquetes de una conexión ya establecida y se limitará a enviar TCP RESETs9 (El TCP RESET es un ataque del tipo denegación de servicio, que consiste en privar a una máquina de un servicio o recurso del que normalmente dispone) en respuesta a los paquetes de una conexión ya establecida, por lo que esa conexión finalmente se perderá [11]. 4.5 Configuración de los Software utilizados en los Servidores Reales. A continuación, se explica el papel que desarrollan los diferentes elementos software utilizados en los servidores reales rserver1 y rserver2 del cluster ADAD-SW. 4.5.1 Sistema software para servir la aplicación Web (Apache + PHP + MySQL) En el cluster ADAD-SW, el contenido Web es servido por el servidor Apache junto con el módulo PHP de éste, y la base de datos utilizada es MySQL. 4.5.2 Servidor FTP (ProFTPD) A fin de probar la capacidad de ofrecer servicios que requieren de persistencia, se optó por configurar los servidores reales con un servidor de FTP. Posteriormente, se configuraron los balanceadores de carga para permitir ofrecerlos adecuadamente. El sistema de monitorización ldirectord que corre en los directors, también fue configurado para que realizara la 9 El TCP RESET es un ataque del tipo denegación de servicio, que consiste en privar a una máquina de un servicio o recurso del que normalmente dispone. monitorización del correcto funcionamiento de ProFTPD. Esta monitorización consiste en "logearse" en el servicio y bajarse un archivo predeterminado [6]. 6. Diseño del Cluster ADAD-SW El cluster ADAD implementa la arquitectura mínima necesaria para evaluar las capacidades de alta disponibilidad, alto desempeño con balanceo de carga que ofrece una solución de clustering basada en software libre LVS-NAT. Los clusters de alta disponibilidad (activo/pasivo) permiten garantizar la alta disponibilidad de un servicio de red [4]. Por otra parte, los clusters basados en balanceadores de carga proporcionan arquitecturas altamente escalables y manejables [1]. Heartbeat y LVS permiten crear clusters de alta disponibilidad y balanceadores de carga respectivamente. ADAD-SW utiliza aspectos de la filosofía en la que se basan los clusters de alta disponibilidad, aprovechando también la alta escalabilidad que ofrecen los balanceadores de carga. Como resultado se obtiene una solución que ofrece alta disponibilidad, alto desempeño, escalabilidad y manejabilidad en los servicios ofertados. ADAD-SW se sirve de IPVSADM para configurar y monitorizar los servicios de red que se están ofreciendo, actualizando las reglas de reenvío según sea necesario. Por otra parte, los servidores reales del cluster, utilizan el servidor Apache junto con PHP y el administrador de base de datos MySQL para servir contenido Web dinámico. También se ha experimentado satisfactoriamente con el servicio FTP lo que ha permitido evaluar las capacidades para garantizar la persistencia en aquellos servicios que la requieren. 6.1 Topología Física del cluster ADAD-SW Se compone de cuatro máquinas como se muestra en la figura 1. Dos balanceadores de carga (director1 y director2) y dos servidores reales (servidor1 y servidor2). Estas cuatro máquinas están conectadas entre sí mediante una red Ethernet conmutada. Los balanceadores de carga disponen de una segunda interfaz que les conecta con la red exterior compartida. Además, los servidores directores están interconectados entre sí mediante un enlace serie. ARTÍCULOS CIENTÍFICOS – INFORMÁTICA – Nº 4 – AÑO 2008 40 A continuación, se enumeran todos los elementos software a los que se ha recurrido para implementar la arquitectura del cluster, el papel que realiza cada uno de ellos en el escenario ADAD-SW y qué relación se establece entre todos ellos. 7.1 Servicios ofrecidos Figura 1. Topología física. 6.2 Topología lógica del cluster ADAD-SW Existen dos redes, la red cliente o externa y la red del cluster o interna. Los servidores reales pertenecen únicamente a la red interna, mientras que los directores a ambas, actuando de este modo como pasarelas, como se muestra en la figura 1. Cada interfaz de red tiene asignada una dirección IP distinta. Sin embargo, cada una de las dos interfaces del director activo en ese momento, tiene también asignada una VIP flotante. La dirección VIP es idéntica para ambos directores, pero nunca están activas simultáneamente en los dos. La gestión dinámica de las VIPs se realiza utilizando el software Heartbeat. 7. Funcionamiento e interrelación de los diferentes elementos software El cluster ADAD-SW es un cluster activo/pasivo de servidores virtuales Linux (balanceadores de carga) que ofrecen los servicios que corren en los servidores reales. ADAD-SW se compone de un cluster activo/pasivo, en el cual el servicio de alta disponibilidad que se ofrece es un balanceador de carga. Esto implica tener un escenario que se compone de dos balanceadores de carga: uno primario (activo o master) y otro de reserva (pasivo o backup). En caso de alguna falla con el servidor principal, el balanceador de carga de reserva puede cambiar su rol y pasar a ser activo. Por otra parte, los servidores reales también han de poder detenerse en cualquier momento sin que ello afecte a la disponibilidad del servicio. Es por todo esto que se requiere de una serie de software periférico al balanceador de carga (LVS) y al cluster activo/pasivo (Heartbeat), por lo que se recurre a una serie de programas, scripts y demonios auxiliares que permiten que todo funcione. Los servicios ofrecidos por el cluster son dos: Servicio Web, por el protocolo HTTP como también por el protocolo HTTPS y transferencia de archivos por el protocolo FTP. El primero de ellos, consiste en un sitio Web, el siguiente ofrece un servidor de FTP anónimo. 8. Pruebas realizadas El cluster implementado en este proyecto, ofrece servicio Web y de transferencia de archivo a los clientes, los cuales acceden a ellos, de la misma forma que lo harían si éstos fueran ofrecidos desde un servidor normal y no desde un cluster. De manera que los procesos de balanceo de carga son transparentes para el usuario final, que no se percata de que estos datos están siendo prestados a través de un balanceador de carga. 8.1 Balanceo de carga Escenario: Un cluster con nodos homogéneos, formados por un Director Master, un Director Backup y dos Servidores Reales, donde llega una solicitud de página Web; con la ayuda de la herramienta IPVSADM se puede ver el comportamiento del balanceador de carga. Cuando el cliente obtiene en su navegador el contenido mostrado en la figura 2, no es consciente de que en realidad esa página Web se ha obtenido desde dos servidores reales distintos. Si se miran las conexiones establecidas en el balanceador de carga activo, se observa que se han realizado dos conexiones TCP a servidores reales distintos, como muestra la siguiente tabla de sesiones: Figura 2. Captura de pantalla en el momento de una conexión en el puerto 80 ARTÍCULOS CIENTÍFICOS – INFORMÁTICA – Nº 4 – AÑO 2008 41 Conclusión: El algoritmo de balanceo RoundRobin realiza una asignación secuencial y cíclica de los paquetes que llegan al cluster, como se puede observar en las últimas líneas de la Figura 2, lo cual demuestra el correcto funcionamiento de la distribución de los paquetes. 8.2 Persistencia de sesión Escenario: Las condiciones son similares a las utilizadas en los test del balanceador de carga, donde se realiza la conexión con el servicio, luego se descarga un archivo de 708.476 KB, también se solicita una página Web desde el ordenador del cliente, con el propósito de realizar comparaciones, durante este proceso se realiza un análisis del comportamiento del balanceador de carga, utilizando la herramienta "IPVSADM", como se muestra en la figura 3. La figura 3 muestra el contenido de la tabla de conexiones cuando un mismo cliente está utilizando los servicios Web, y FTP del cluster ADAD-SW. Se observa como las conexiones pertenecientes a los puertos del FTP, puerto 21 del servidor, se reenvían persistentemente a la dirección 192.168.7.4, en cambio las conexiones realizadas al servicio HTTP (puerto 80) son balanceadas de acuerdo al algoritmo de scheduling round robin. 8.3 Alta disponibilidad Escenario: Para comprobar el buen desempeño del cluster ADAD-SW, en cuanto a alta disponibilidad se refiere, fueron aplicadas dos etapas de pruebas, una en nivel de los balanceadores de carga o directores, desconectando el Director Master en espera de que el Director Backup reaccione y tome el puesto de balanceador de carga. Por otro, lado en el nivel de los Servidores Reales, se adiciona un tercer servidor, con el objetivo de una mejor demostración del comportamiento del cluster en el momento en que uno de ellos es desconectado y vuelto a conectar. Para cada prueba realizada fueron enviadas consecutivamente veinte mil solicitudes de páginas Web, utilizando la herramienta "ab". De nada sirve contar con alta disponibilidad en cuanto a servidores reales, si el balanceador supone un único punto vital para todo el sistema. Es por ello que el cluster ADAD-SW dispone de dos balanceadores de carga en una arquitectura de cluster activo/pasivo. Heartbeat es el software que permite implementar esta arquitectura. Los siguientes Logs mostrados en la figura 4 y en la figura 5 del balanceador de carga de reserva (director2), reflejan cómo se realiza el proceso de takeover cuando se produce un fallo en el balanceador de carga primario (director1). Figura 3. Captura de pantalla en el momento de la conexión en el puerto 21. Conclusión: El protocolo FTP necesita una persistencia de sesión debido a los procesos que realiza en el momento de la transferencia de archivos, razón por la cual se utiliza el método de persistencia de sesión PPC para este servicio. Luego de varias pruebas realizadas al comportamiento del balanceador de carga, las cuales arrojaron resultados similares a la figura <ref>conx2</ref> en la que podemos observar, en las primeras líneas de la columna de destination, el comportamiento del balanceador de carga para este servicio, se obtuvieron los resultados esperados de acuerdo a las configuraciones realizadas. Figura 4. Captura de pantalla del archivo ha.log ARTÍCULOS CIENTÍFICOS – INFORMÁTICA – Nº 4 – AÑO 2008 42 originado, sino que debe entender también el funcionamiento interno de los sistemas finales que lo generan; siempre y cuando se pretenda resolver los problemas que plantea la posibilidad de ofrecer alta disponibilidad, alto desempeño y escalabilidad mediante la redundancia de los sistemas que han de trabajar, aparentemente como uno solo, en una solución cliente/servidor virtual. Figura 5. Captura de pantalla del archivo ldirectord.log Conclusión: La alta disponibilidad, uno de los principales objetivos de este proyecto, fue lograda satisfactoriamente, ya sea en el nivel de los Directores y de los Servidores Reales, como se demostró anteriormente. El cluster ADADSW presentó un comportamiento estable y fiable, a lo largo del arduo proceso de pruebas realizadas para esta función. 8.4 Alto desempeño Escenario: Para esta última batería de pruebas fue adicionado un cuarto Servidor Real, con el objetivo de obtener una mayor cantidad de datos, los tests fueron realizados conectando un Servidor Real, luego realizando tres grupos de solicitudes de páginas Web de diez mil, cincuenta mil y cien mil; esto cada vez que un Servidor Real era conectado. Al final se buscó el promedio de los Kbytes/seg que suministra el informe del comando "ab", para cada cantidad de Servidor Real conectado. Conclusión: Para cada Servidor Real conectado, se adiciona un desempeño considerable al cluster ADAD-SW, lo que concuerda con la afirmación de la conocida frase: "La unión hace la fuerza". De esta forma el cluster ADAD-SW ofrece un servidor Web de alto desempeño, con capacidad de aumentar aun más esta característica por cada Servidor Real adicionado. 9. Conclusión Una infraestructura como el cluster ADAD plantea dos problemas: uno telemático, en cuanto al control y gestión del tráfico que originan los sistemas finales en arquitecturas cliente/servidor; y otro informático, que requiere entender el comportamiento de estas aplicaciones finales. Por ello, el telemático no puede quedarse sólo en el tratamiento del tráfico El hecho de ofrecer una aplicación cliente/servidor mediante un conjunto de máquinas, en vez de hacerlo a través de una sola, permite ofrecer una serie de ventajas, en cuanto a capacidad, escalabilidad y disponibilidad, a costa de introducir nuevos problemas por resolver que no se daban en la arquitectura cliente/servidor tradicional. Por otra parte, el modelo de ingeniería en el cual se establece el software libre, que ha permitido desarrollar todas las aplicaciones necesarias para construir el cluster ADAD-SW, demuestra su viabilidad y madurez para implementar soluciones que respondan a problemas reales. 10. Principales logros alcanzados Con este trabajo se ha logrado comprender el paradigma de los clusters para servidores Web construidos en base a software libre y hardware comunes y económicos. Con lo que se adquiere la suficiente capacidad para construir y configurar clusters para servidores Web. También se ha incursionado profundamente en el análisis del funcionamiento de los paquetes LVS, Heartbeat y los demás paquetes utilizados. Cada uno de estos paquetes aporta su funcionalidad de forma eficiente y sincronizada y se obtiene como resultado un cluster para servidores Web con características inigualables y a un costo extremadamente reducido en comparación a las mainframes para servidores Web construidas por las grandes corporaciones. Uno de los mayores logros es la construcción del cluster ADAD-SW utilizando el Kernel 2.6, que constituye una versión nueva, poco utilizada en este tipo de proyectos. Varios de los paquetes utilizados, como el Heartbeat y el Ldirectord, no presentaban hasta el momento de la instalación una adaptación para esta versión del Kernel, lo que obligó a su instalación en forma manual. A pesar de estos inconvenientes, se ARTÍCULOS CIENTÍFICOS – INFORMÁTICA – Nº 4 – AÑO 2008 43 lograron los objetivos con los resultados esperados, como se comenta a continuación: Balanceo de carga: el cluster presenta una excelente distribución de carga, a pesar de trabajar con uno de los algoritmos de balanceo más simples, pero al mismo tiempo más ágil, esta última característica es importante para ofrecer un alto rendimiento. Posee también un manejo eficiente de la escalabilidad del cluster; una vez adicionadas las configuraciones correspondientes al nuevo servidor real, el balanceador comprueba su correcto funcionamiento y por último lo agrega en su tabla de servidores reales activos de forma automática, con lo cual alcanza una mayor disponibilidad y desempeño. Persistencia de Sesión: esta característica es fundamental para el correcto funcionamiento del protocolo FTP del cluster, trabaja con el método de balanceo basado en Persitent Port Connection que se basa en la combinación de tres campos del paquete: IP origen, IP destino y puerto destino, de forma a mantener una conexión basada en solo uno de los Servidores Reales. Alta Disponibilidad: el cluster ADAD-SW puede soportar caídas de varios nodos y seguir operando sin alteración alguna. Esto ocurre porque todos los Servidores Reales están conectados al balanceador de carga que tiene la capacidad de detectar el estado de cada uno de ellos, tomar las correspondientes acciones automáticamente en caso de que surgiera alguna variación en el estado de los servidores y trabajar con uno o con varios servidores. Cuanto mayor sea el número de Servidores Reales, mayor será la disponibilidad del cluster. Alto Desempeño: La velocidad de respuesta del cluster ADAD-SW es proporcional a la cantidad de Servidores Reales activos conectados al mismo. 11. Referencias [1] Alan Robertson AR. The linux highavailability proyect. [10/04/07]. http://www.linux-ha.org [2] Jorge Fuentes JF. Hispalinux http://es.tldp.org/Manuales-LuCAS/doc-cursosalamanca-clustering/html/ch03s04.html [3] Linux Virtual Machine LVM. Sistina (lvm y gfs) [26/04/07]. http://www.sistina.com [4] Linux Virtual Server LVS. Highperformance and highly avail-able server for linux using clustering technology http://www.linuxvirtualserver.org [5] Joseph Mack MJ. Lvs-howto [26/04/07]. http://www.austintek.com/LVS/LVS-HOWTO [6] MySQL Organization MO. Structured query language software www.mysql.com [7] The Linux Documentation Project TLDP. Kimberlite clustering technology. http://www.tldp.org [8] Ultra Monkey UM. Load balancing and high availability solution [20/04/07]. http://www.ultramonkey.org [9] Wikipedia Foundation WF. La enciclopedia libre wikipedia [20/04/07]. http://es.wikipedia.org ARTÍCULOS CIENTÍFICOS – INFORMÁTICA – Nº 4 – AÑO 2008