Alta Disponibilidad y Balanceo de Carga en Linux – Introducción Clúster


A lo largo de varios artículos, voy a describir cómo configurar un sistema de Alta Disponibilidad y Balanceo de Carga bajo máquinas pertenecientes a la familia GNU/Linux. El concepto de Alta Disponibilidad se refiere al hecho de garantizar la continuidad de un determinado servicio independientemente de si ocurre algún tipo de fallo en el sistema. Y con Balanceo de Carga nos estamos refiriendo a la acción de repartir de forma equitativa el conjunto global de peticiones que recibe dicho servicio.

Esta clase de infraestructura es utilizada comúnmente por cualquier compañía que posee un elevado tráfico de datos y necesita ofrecer un conjunto de servicios con unas garantías mínimas de fiabilidad. Imaginemos por un momento la cantidad de peticiones que puede recibir Google a lo largo de un minuto, y pensemos también que conlleva dicha petición: procesarla a través de un servidor web, acceder a una base de datos, realizar una o varias consultas, devolver una serie de resultados, etc. En resumen, una única máquina sería incapaz de realizar todo este proceso individualmente debido al enorme caudal de conexiones y tareas involucradas.

¿Qué es lo que se hace entonces? Acudir al viejo lema de “divide y vencerás”. Por un lado se tendrán varias máquinas que exclusivamente se encargarán de atender las conexiones. A continuación, esas peticiones se repartirán (Balanceo de Carga) a distintos servidores web en función de su carga de trabajo. Y por último, estos servidores realizarán las consultas apropiadas a una base de datos distribuida y ubicada en diferentes nodos. Y todo ello garantizando la continuidad del servicio (Alta Disponibilidad), es decir, si alguno de los elementos de la cadena falla, el sistema global seguiría funcionando correctamente y este hecho sería imperceptible para el usuario.

En los últimos años, la Web se ha convertido en una de las principales tecnologías donde se implementan diferentes tipos de sistemas así como también se brindan diferentes servicios Web que sirven de soporte para diversas actividades, las cuales generan dinero y se han vuelto esenciales para cualquier empresa.

En todos estos años, se han creado diferentes tecnologías Web así como también diferentes sistemas de soporte para estas tecnologías. Pero, gracias a su creciente utilización, es que se hace necesario contar con sistemas tolerantes a fallos, para que el servicio Web este siempre disponible, así como también sistemas que permitan aumentar la capacidad de procesamiento dependiendo a la demanda por el servicio.

Es por esta razón que se diseñó un Modelo de Servidores Web de Alta Disponibilidad, dividido por capas, que brinda tolerancia a fallos, haciéndolo un modelo altamente disponible, así como la capacidad de crecimiento, haciéndolo un modelo escalable.

En la actualidad, muchas de las empresas y/o personas que brindan algún tipo de servicio Web se encuentran con la problemática que sus servicios Web pueden no estar disponibles por un determinado tiempo y debido a factores diferentes. La falta de disponibilidad del servicio se refleja en la molestia de los usuarios ya que el servicio puede estar no disponible por un largo tiempo, o en la pérdida de dinero, ya que muchos sitios Web se utilizan para hacer dinero o simplemente para brindar productos o servicios que generen ganancias.

Los factores que están relacionados a la pérdida de disponibilidad del servicio pueden ser variados, dentro de los cuales tenemos a las ventanas de Mantenimiento del servidor Web o por algún fallo de hardware o software que haga que el servicio se pierda. Otro factor está relacionado a la capacidad de procesamiento que tiene el servidor, que simplemente es la cantidad de usuarios y/o transacciones que puede soportar el servidor, así como el ancho de banda necesario para soportar todas estas transacciones.

Es por esta razón que existe la necesidad de hacer que el servicio Web brindado esté disponible la mayor cantidad de tiempo posible. Para esto, se tiene que contar con sistemas de respaldo para situaciones como las que se presentan y causan que el servicio deje de estar disponible.

ClusterCloudServersPero, a pesar de la creciente necesidad de contar con estos sistemas de respaldo, las personas y/o empresas no pueden hacer mucho al respecto, ya que una de las formas posibles, al que recurren varias empresas de nuestro medio, para solucionar alguno de estos problemas es simplemente aumentar el ancho de banda utilizado o adquirir equipos de hardware, llámese servidores, que puedan soportar miles de millones de transacciones o usuarios conectados al mismo tiempo.

Pero la desventaja fundamental es que, al hacer esto, no se resuelve exactamente el problema de la falta de disponibilidad, sino más que todo resuelve el problema de capacidad de procesamiento, y no la tolerancia a fallos.

El concepto de alta disponibilidad de un servicio se refiere a la implementación mediante dos o más máquinas de dicho servicio de forma que aseguremos, mediante mecanismos de monitorización, que el trabajo no se interrumpa en caso de fallo.

Clustering es la capacidad de que varias máquinas realicen una tarea como si se tratase de una única máquina. Cada máquina dentro del Clúster recibe el nombre de nodo.

 

Tipos de Clúster

Existen varios tipos de Clúster que se pueden clasificar dependiendo al tipo de solución que estemos buscando:

  • High Performance Cluster
  • Activo / Pasivo
  • Activo / Activo
  • Grid Computing

Es por esto que existe la necesidad de plantear un modelo de implementación de Servidores Web de Alta Disponibilidad, como alternativa a la utilización solo de equipos muy costosos, y que no solo brinde abundante capacidad de procesamiento o ancho de banda, sino también tolerancia a fallos y un cierto nivel de escalabilidad, lo cual hace posible aumentar la capacidad de procesamiento.

High Performance Cluster

este tipo de Clústeres son lo utilizados para cálculo matemático intensivo. Un ejemplo de este clúster es la Marennostrum que IBM tiene es España. La ventaja de este Clúster es su Escalabilidad.

Activo / Pasivo

En este tipo de Clúster, hay solamente un nodo que brinda el servicio, mientras que el resto están inactivos. En el momento que el nodo que se encontraba activo no pueda brindar el servicio, otro nodo del clúster se hará cargo del servicio.

La ventaja de este tipo de Clúster es que cualquier servicio es clusterizable, y que tiene una configuración relativamente sencilla. Uno de los inconvenientes que se tiene en este tipo de Clúster es que no hay un aumento de potencia con el aumento de los nodos.

Activo / Activo

En este tipo de Clúster todos los nodos brindan servicio al mismo tiempo. La ventaja fundamental de este tipo de Clúster es que se aumenta la potencia con el aumento de nodos.

Arquitectura del Clúster

La implementación de un Clúster tiene dos propósitos:

  • La redundancia frente a fallos. (Alta Disponibilidad)
  • El aumento de potencia. (Escalabilidad). (Alta Disponibilidad)

Al tratar de diseñar un modelo para implementar Servidores Web de alta disponibilidad se hace referencia al diseño de la arquitectura de un Clúster de Computadoras para Servidores Web, así como también la forma de almacenamiento requerido para almacenar los datos de todos los Servidores Web.

La principal limitante es el costo de implantación de la arquitectura del Clúster, ya que se necesitan múltiples servidores conectados en red, lo cual implica gastos.