Cluster de alta disponibilidad

Revisión del 15:37 20 jun 2019 de Javiermartin jc (discusión | contribuciones) (Texto reemplazado: «<div align="justify">» por «»)
(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Cluster de alta disponibilidad
Información sobre la plantilla
Cluster de alta disponibilidad.jpg

Cluster de alta disponibilidad (HA). En la actualidad las organizaciones dependen cada vez más de sus sistemas de información, y como es obvio se desea que estos sean seguros y permanezcan disponibles el mayor tiempo posible.

Para cualquier empresa, una interrupción de sus sistemas de información supone un serio problema.

Efectos por la interrupción de un sistema de información

  • Costes directos asociados a la reparación del sistema de información (piezas a reparar o sustituir, portes, servicios técnicos, etc.).
  • Horas de trabajo adicionales para el departamento de sistemas que tiene que reparar la avería.
  • Perdidas de productividad o incluso horas de trabajo perdidas por los empleados que dependen del sistema.
  • Pérdida de ingresos, por las ventas o servicios que se han dejado de realizar.
  • Costes indirectos: satisfacción de los clientes, perdida de reputación, mala publicidad, desconfianza de los empleados, etc.

La disponibilidad es una medida relativa a la preparación para su utilización de un sistema informático, mientras que la fiabilidad es una medida relativa a su capacidad para mantenerse operativo en el tiempo sin ningún tipo de fallo.

Los fallos potenciales de un sistema son los errores de componentes hardware, los errores o bloqueos del sistema operativo, los errores de las aplicaciones.

Un Cluster de alta disponibilidad es un conjunto de dos o más máquinas que se caracterizan por mantener una serie de servicios compartidos y por estar constantemente monitorizándose entre sí.

Tipos de cluster

  1. Alta disponibilidad de infraestructura: Si se produce un fallo de hardware en alguna de las máquinas del cluster, el software de alta disponibilidad es capaz de arrancar automáticamente los servicios en cualquiera de las otras máquinas del cluster (failover). Y cuando la máquina que ha fallado se recupera, los servicios son nuevamente migrados a la máquina original (failback). Esta capacidad de recuperación automática de servicios nos garantiza la alta disponibilidad de los servicios ofrecidos por el cluster, minimizando así la percepción del fallo por parte de los usuarios.
  2. Alta disponibilidad de aplicación: Si se produce un fallo del hardware o de las aplicaciones de alguna de las máquinas del cluster, el software de alta disponibilidad es capaz de arrancar automáticamente los servicios que han fallado en cualquiera de las otras máquinas del cluster. Y cuando la máquina que ha fallado se recupera, los servicios son nuevamente migrados a la máquina original. Esta capacidad de recuperación automática de servicios nos garantiza la integridad de la información, ya que no hay pérdida de datos, y además evita molestias a los usuarios, que no tienen por qué notar que se ha producido un problema.

Disponibilidad

La disponibilidad es el grado en que una aplicación o servicio está disponible cuándo y cómo los usuarios esperan. La disponibilidad se mide por la percepción de una aplicación del usuario final. Los usuarios finales experimentan frustración cuando sus datos no están disponibles, y ellos no entienden o son capaces de diferenciar los complejos componentes de una solución global. Fiabilidad, valorización, continuas operaciones y detección de errores son características de una solución de alta disponibilidad.

  1. Fiabilidad: Los componentes hardware fiables de una solución de HA, el software fiable, incluida la base de datos, servidores web y aplicaciones, es la parte crítica de una implementación de una solución de alta disponibilidad.
  2. Recuperación: Puede haber muchas opciones para recuperarse de un fracaso si ocurre alguno. Es importante determinar qué tipo de fallos pueden ocurrir en su entorno de alta disponibilidad y la forma de recuperarse de estos fallos en el tiempo que satisface las necesidades comerciales. Por ejemplo, si una tabla importante es eliminada de la base de datos, ¿qué medidas adoptarías para recuperarla? ¿Su arquitectura ofrece la capacidad de recuperarse en el tiempo especificado en un acuerdo de nivel de servicio (SLA)?
  3. Detección de errores: Si un componente en su arquitectura falla, entonces la rápida detección, de dicho componente es esencial en la recuperación de un posible fracaso inesperado. Si bien es posible que pueda recuperarse rápidamente de un corte de luz, si se lleva a otros 90 minutos para descubrir el problema, entonces usted no puede satisfacer su SLA. La monitorización del estado del entorno de trabajo requiere un software fiable, para ver de forma rápida y notificar al administrador de bases de datos (DBA ) un problema.
  4. Continuas operaciones: El continuo acceso a sus datos es esencial, por muy pequeño o inexistente que sea el tiempo de caída del sistema, para llevar a cabo las tareas de mantenimiento. Actividades como mover una tabla de un lado a otro dentro de la base de datos, o incluso añadir nuevas CPU's a su hardware debe ser transparente para el usuario final en una arquitectura HA.

Cálculo de la disponibilidad

En un sistema real, si falla uno de los componentes, es reparado o sustituido por un nuevo componente. Si este nuevo componente falla, es sustituido por otro, y así sucesivamente. El componente fijo se considera en el mismo estado que un nuevo componente. Durante su vida útil, uno de los componentes pueden ser considerado en uno de estos estados: Funcionando o en Reparación; El estado funcionando indica que el componente está operacional y el en reparación significa que ha fallado y todavía no ha sido sustituido por un nuevo componente.

En caso de defectos, el sistema va de funcionando en modo reparación, y cuando se hace la sustitución volverá al estado funcionando. Por lo tanto, podemos decir que el sistema tiene durante su vida, una media de tiempo para presentar fallas (MTTF) y un tiempo medio de reparación (MTTR). Su tiempo de vida es una sucesión de MTTFs y MTTRs, a medida que este va fallando y siendo reparado. El tiempo de vida útil del sistema es la suma de MTTFs en ciclos MTTF + MTTR ya vividos.

En forma simplificada, se dice que la disponibilidad de un sistema es la relación entre la duración de la vida útil de este sistema y de su tiempo total de vida. Esto puede ser representado por la fórmula de abajo:

Disponibilidad = MTTF / (MTTF + MTTR)

Disponibilidad wttf.JPG

En la evaluación de una solución de Alta Disponibilidad, es importante tener en cuenta si en la medición de MTTF son vistos como fallas las posibles paradas planificadas.

En la actualidad, eligiendo correctamente el hardware y software adecuados, es relativamente sencillo diseñar un sistema con una disponibilidad del 98% del tiempo. Pero el paso del 98% al 99% y de aquí al 99,9999% es una tarea compleja y a la par supone un aumento exponencial del coste total del sistema. En la práctica se alcanza un compromiso entre la disponibilidad pretendida y el coste abordable.

Las razones para implementar un cluster de alta disponibilidad son

  • Aumentar la disponibilidad
  • Mejorar el rendimiento
  • Escalabilidad
  • Tolerancia a fallos
  • Recuperación ante fallos en tiempo aceptable
  • Reducir costes
  • Consolidar servidores
  • Consolidar el almacenamiento

Configuraciones de alta disponibilidad

Las configuraciones más comunes en entornos de clusters de alta disponibilidad son la configuración activo/activo y la configuración activo/pasivo.

  • Configuración Activo/Activo
Imagen Leo2Cluster.JPG

En una configuración activo/activo, todos los servidores del cluster pueden ejecutar los mismos recursos simultáneamente. Es decir, los servidores poseen los mismos recursos y pueden acceder a estos independientemente de los otros servidores del cluster. Si un nodo del sistema falla y deja de estar disponible, sus recursos siguen estando accesibles a través de los otros servidores del cluster.

La ventaja principal de esta configuración es que los servidores en el cluster son mas eficientes ya que pueden trabajar todos a la vez. Sin embargo, cuando uno de los servidores deja de estar accesible, su carga de trabajo pasa a los nodos restantes, lo que produce una degradación del nivel global de servicio ofrecido a los usuarios.

En la siguiente figura se muestra como ambos servidores están activos, proporcionando un mismo servicio a los diferentes usuarios. Los clientes acceden al servicio o recursos deforma transparente y no tienen conocimiento de la existencia de varios servidores formando un cluster.

  • Configuración Activo/Pasivo
Leo3Cluster.JPG

Un cluster de alta disponibilidad, en una configuración activo/pasivo, consiste en un servidor que posee los recursos del cluster y otros servidores que son capaces de acceder a esos recursos, pero no los activan hasta que el el propietario de los recursos ya no este disponible.

Las ventajas de la configuración activo/pasivo son que no hay degradación de servicio y que los servicios solo se reinician cuando el servidor activo deja de responder. Sin embargo, una desventaja de esta configuración es que los servidores pasivos no proporcionan ningún tipo de recurso mientras están en espera, haciendo que la solución sea menos eficiente que el cluster de tipo activo/activo. Otra desventaja es que los sistemas tardan un tiempo en migrar los recursos (failover) al nodo en espera.

Funcionamiento de un cluster de alta disponibilidad

En un cluster de alta disponibilidad, el software de cluster realiza dos funciones fundamentales. Por un lado intercomunica entre sí todos los nodos, monitorizando continuamente su estado y detectando fallos. Y por otro lado administra los servicios ofrecidos por el cluster, teniendo la capacidad de migrar dichos servicios entre diferentes servidores físicos como respuesta a un fallo.

Elementos y conceptos básicos en el funcionamiento del cluster

Recurso y Grupos de Recursos

Datosclut.jpg

Tradicionalmente se entiende como servicio a un conjunto de procesos que se ejecutan en un momento dado sobre un servidor y sistema operativo. Este último provee a los procesos de los recursos necesarios para realizar su tarea: sistema de ficheros, interfaces de red, tiempo de cpu, memoria, etc.

En un cluster de alta disponibilidad, el software de cluster, abstrae e independiza a los servicios de un host concreto. Posibilitando que estos se desplacen entre diferentes servidores de forma trasparente para la aplicación o los usuarios.

El software de cluster permite definir grupos de recursos, que son todos aquellos recursos necesarios por el servicio. Estos recursos serán los scripts de arranque del servicio, un sistema de ficheros, una dirección IP, etc.

Intercomunicación

El software de cluster gestiona servicios y recursos en los nodos. Pero además, tiene que mantener continuamente entre estos una visión global de la configuración y estado del cluster. De esta forma, ante el fallo de un nodo, el resto conoce que servicios se deben restablecer.

Ya que la comunicación entre los nodos del cluster es crucial para el funcionamiento de este, es habitual utilizar un canal especifico como una red IP independiente o una conexión serie, que no se pueda ver afectada por problemas de seguridad o rendimiento.

Heartbeat

El software de cluster conoce en todo momento la disponibilidad de los equipos físicos, gracias a la técnica de heartbeat. El funcionamiento es sencillo, cada nodo informa periódicamente de su existencia enviando al resto una "señal de vida".

Escenario Split-Brain

En un escenario split-brain, mas de un servidor o aplicación pertenecientes a un mismo cluster intentan acceder a los mismos recursos, lo que puede causar daños a dichos recursos. Este escenario ocurre cuando cada servidor en el cluster cree que los otros servidores han fallado e intenta activar y utilizar dichos recursos.

Monitorización de Recursos

(Resource Monitoring)

Ciertas soluciones de clustering HA permiten no solo monitorizar si un host físico esta disponible, también pueden realizar seguimientos a nivel de recursos o servicios y detectar el fallo de estos.

El administrador puede configurar la periodicidad de estos monitores así como las acciones a llevar a cabo en caso de fallo.

Reiniciar Recursos

Cuando un recurso falla, la primera medida que toman las soluciones de cluster es intentar reiniciar dicho recurso en el mismo nodo. Lo que supone detener una aplicación o liberar un recurso y posteriormente volverlo a activar.

Algunas implementaciones no permiten reiniciar un único recurso, y lo que realizan es un reinicio completo de todo un grupo de recursos (servicio). Esto puede llegar a demorar bastante para servicios como las bases de datos.

Migración de Recursos

(Failover)

Datosclut2.jpg

Cuando un nodo ya no esta disponible, o cuando un recurso fallido no se puede reiniciar satisfactoriamente en un nodo, el software de cluster reacciona migrando el recurso o grupo de recursos a otro nodo disponible en el cluster.

De este modo el tiempo de inactividad por el posible fallo es mínimo, y el cluster seguirá proporcionando el correspondiente servicio.

Dependencia entre recursos

Habitualmente para que el cluster proporcione un servicio, son necesarios no solo un recurso si no varios (ip virtual, sistema de ficheros, proceso), lo que se conoce como grupo de recursos. Cuando se arranca o detiene un servicio, sus recursos tienen que activarse en el orden apropiado ya que unos dependen de otros. El software de cluster tiene que permitir definir estas dependencias entre recursos así como entre grupos.

Preferencia de nodos

(Resource Stickiness)

En configuraciones de cluster con múltiples nodos, es común distribuir los servicios a proporcionar entre los diferentes servidores. Además puede que los servidores tengan características hardware diferentes (cpu, memoria ram) y nos interese que, para un estado ideal del cluster, determinados servicios se ejecuten siempre en un determinado servidor.

Este comportamiento se define mediante la preferencia de nodo en la definición de cada recurso.

Comunicación con otros sistemas

El cluster tiene que monitorizar no solo que un servidor y sus servicios están activos, también debe de comprobar que, de cara a los usuarios, dicho servidor no queda desconectado de la red por el fallo de un latiguillo, switch, etc.

Por lo tanto el software de cluster debe comprobar que los nodos son alcanzables. Un método simple para conseguirlo, es verificar que cada nodo tiene accesible el router o puerta de enlace de la red de usuarios.

Fencing

En los clusters HA existe una situación donde un nodo deja de funcionar correctamente pero todavía sigue levantado, accediendo a ciertos recursos y respondiendo peticiones. Para evitar que el nodo corrompa recursos o responda con peticiones, los clusters lo solucionan utilizando una técnica llamada Fencing.

La función principal del Fencing es hacerle saber a dicho nodo que esta funcionando en mal estado, retirarle sus recursos asignados para que los atiendan otros nodos, y dejarlo en un estado inactivo.

Quorum

Quorum devices.JPG

Para evitar que se produzca un escenario de Split-Brain, algunas implementaciones de cluster HA introducen un canal de comunicación adicional que se emplea para determinar exactamente que nodos están disponibles en el cluster y cuales no. Tradicionalmente se implementa utilizando los llamados quorum devices, que habitualmente son un volumen de almacenamiento compartido exclusivo (disk heart beating). También existen implementaciones que utilizan una conexiones de red adicional o una conexión serie. Esta última tiene limitaciones de distancia y actualmente ha quedado en desuso.

Fuentes

  1. Artículo: Cluster de alta disponibilidad. Disponible en: "es.wikipedia.org". Consultado: 5 de diciembre de 2011.
  2. Artículo: Clusters de alta disponibilidad (HA). Disponible en: "www.lintips.com". Consultado: 5 de diciembre de 2011.
  3. Artículo: Clustering de alta disponibilidad. Disponible en: "images.linuxidx.com". Consultado: 5 de diciembre de 2011.
  4. Documento: LinuxHa. Disponible en: "www.ibiblio.org". Consultado: 5 de diciembre de 2011.