Dinámica HA

Se considera dinámica HA a todas las reconfiguraciones del clúster que garanticen la máxima disponibilidad del servicio de datos. Esta dinámica esta orientada a los nodos integrantes del clúster y la forma en la cual el clúster responde. Se denomina de la siguiente manera:

Failover

Es un término genérico que se usa cuando un nodo debe asumir la responsabilidad de otro nodo, importar sus recursos y levantar el servicio de datos. Se ha de entender que una situación de failover es una situación excepcional, para cual la alta disponibilidad ha sido concebida, el fallo de un nodo. Si sólo queda un nodo en el cluster, tras los fallos de los demás, estaremos en un SPOF hasta que el administrador del sistema, verifique y restaure el clúster. También se ha de entender que el servicio de datos sigue levantado, que es el objetivo de la alta disponibilidad.

Takeover

Es un failover automático se produce cuando un nodo nota un fallo en el servicio de datos. Para ello debe haber cierta monitorización con respecto al servicio de datos. El nodo que se declara fallido es forzado a ceder el servicio y recursos, o simplemente eliminado.

Switchover o Giveaway

Es un failover manual, consiste en ceder los recursos de un servicio de datos y este mismo, a otro nodo del clúster, mientras se realizan ciertas tareas administrativas. A este procedimiento se le denomina "Node outage".

Splitbrain

Para la gestión de un clúster HA es necesario un mecanismo de comunicación y verificación entre nodos integrantes. Por este mecanismo, cada nodo debe gestionar los recursos que corresponden a cada uno, segun el estado del clúster; a su vez cada nodo debe hacer chequeos o latidos (beats) a sus compañeros.

Un Splitbrain (división de cerebros) es un caso especial de failover, en el cual falla el mecanismo de comunicación y gestión de un clúster de dos nodos. Es una situación en la cual cada nodo cree que es el único activo, y como no puede saber el estado de su nodo compañero, tomará acciones en consecuencia, forzando un takeover.

Esta situación es peligrosa, los dos nodos intentaran apropiarse de todos los recursos, incluyendo el servicio de datos. El peligro aumenta sobre todo cuando tenemos recursos delicados, como recursos de almacenamiento, ya que cada nodo podría tomar y escribir por su cuenta, y quebrar a integridad de datos.

Para evitar este problema, cada nodo debe actuar de una forma prudente, y utilizar los recursos compartidos como señal de que se esta vivo. La forma de proceder de cada nodo es similar, ya que cada uno cree que su compañero ha desaparecido. Después de que un nodo aprecia este problema, tiene indicado que reserve un recurso llamado quorum. Un recurso quorum, es un recurso compartido, que se ha preestablecido en ambos nodos como tal. Este recurso es un recurso exclusivo, sólo un nodo del cluster puede reservarlo. Como este recurso sólo puede ser reservado por un nodo, el nodo que llegue tarde a la reserva del recurso, entiende que debe abandonar el clúster y ceder todos sus recursos. El quórum es utilizado como simplemete, método de decisión.

Otra forma de evitar esta situación, un poco mas violenta, es que un nodo elimine a su compañero; el primero que apague a su compañero se queda con todos los recursos. Es un mecanismo muy brusco, pero muy eficaz. Para este caso existen tarjetas especializadas en esta tarea.

Grupos de recursos de un servicio de datos

Pensando en un servicio de datos cualquiera, se puede pensar en unas serie de recursos que va a utilizar. Por ejemplo, imaginemos un servicio de datos de servicio web como puede ser apache, este va a necesitar un nodo donde va a ser ejecutado (ciclos de CPU, memoria), un sistema de ficheros donde guardar toda la información web y por supuesto una red donde poder responder a las peticiones de servicio. Estos recursos deben atender a cierta flexibilidad, donde la flexibilidad es la capacidad del recurso de ser estático virtualmente y ser dinámico físicamente. A continuación se enumeraran los distintos tipos de recursos que son interesantes en un clúster HA.

Recursos computacionales

Los recursos computacionales pueden ser considerados a nivel de CPU, nodo o clúster. Son los recursos que permiten que el programa que se encarga de ofrecer servicio de datos pueda ser ejecutado. Si tenemos varias CPU, varios nodos o varios clústers estos deberán tener una copia del programa del servicio de datos en memoria.

En la HA para Linux este recurso se considera a nivel de nodo, donde el servicio de datos va a estar situado en un nodo determinado (como máster del servicio). El software de alta disponibilidad es quien decide que nodo va a alojar que servicio de datos dependiendo del estado del clúster.

Recursos de comunicaciones

Normalmente el servicio de datos va a ser accedido mediante una red de comunicaciones. Las interfaces de red así como la pila de protocolos de red, deben ser capaces de responder a varias direcciones de red con el fin de dar flexibilidad al servicio de datos; es decir virtualizar el servicio. En el caso de redes TCP/IP el servicio de datos sera accedido mediante una dirección IP y un puerto; para que el servicio de datos pueda residir físicamente en cualquier nodo se debe utilizar IP's virtuales (IP aliasing) para que esto sea posible.

Si se utiliza una red Ethernet-TCP/IP y el NIC (network interface card) no es capaz de cambiar la dirección MAC (media access controler), se puede llegar aun problema con las tablas ARP de los demás elementos de red; ya que se debe obligar a los clientes o routers de la LAN a actualizar la nueva dirección MAC para la IP de servicio.

Recursos de almacenamiento

El almacenamiento de los datos del servicio de datos es quizás uno de los puntos mas delicados de la alta disponibilidad. Pues en ellos tendremos la aplicación que se usará para el servicio de datos junto con los datos.

El almacenamiento suele ser el recurso mas complicado de virtualizar en configuraciones clásicas; ya que suele ser un medio SCSI compartido con muchos discos y muchos elementos candidatos a SPOF. En configuraciones hardware más modernas no hay tanta problemática; las arquitecturas SAN (storage area network) permiten que los recursos de computación accedan por red SAN a los recursos de almacenamiento. Los recursos de almacenamiento suelen ser servidores de archivos en con discos en RAID y backup integrado con interfaz FiberChannel. Al estar en un entorno SAN permite acceder a estos recursos a más de un nodo de forma muy flexible.

El recurso de almacenamiento además de ser flexible debe ser independiente para las necesidades de cada servicio de datos. Surge el concepto de grupos de volúmenes; un grupo de volúmenes es un conjunto de volúmenes que pertenecen a un servicio de datos en concreto. Cada volumen es un espacio de almacenamiento que el servicio de datos utilizará para sus propósitos con independencia de otros volúmenes.

Es vital que el recurso de almacenamiento sea capaz de mantener la integridad de los datos y el tiempo de recuperación ante un fallo sea mínimo. Ante estos problemas surge las técnicas de journaling para la gestión de los datos.