Implementación de un cluster de alta disponibilidad utilizando herramientas libres

Portal del Ministerio de Finanzas y Precios

Portal del Ministerio de Finanzas y Precios

El encuentro del mes de junio del Grupo de Usuarios de GNU/Linux de la Habana
se vio matizado por un tema técnico presentado por los administradores del
Ministerio de Finanzas y Precios de Cuba y de la empresa CONAVANA. La
experiencia de Maribel y Ulises, este ultimo miembro del GUTL, fue recibida con preguntas sobre el rendimiento, la aplicabilidad en entornos con pocos recursos, entre otros. En este artículo Maribel y Ulises de manera sintética nos explican como han obtenido los resultados en la red que hoy presenta el MFP.

Implementación de un clúster de alta disponibilidad utilizando herramientas libres

Un cluster es un sistema paralelo o distribuido que posee una arquitectura formada por un grupo de equipos independientes denominados nodos, que se conectan entre sí, ejecutan acciones de manera conjunta y aparecen como un único recurso computacional ante aplicaciones y clientes y cumple además con los requerimientos de un sistema tolerante a fallos.

De acuerdo a la función específica para la que han sido diseñados, los clústeres se catalogan como implementados para lograr alto desempeño o alto rendimiento, mientras que otros se utilizan específicamente para lograr alta disponibilidad.

Siendo así los clústeres de alto rendimiento aquellos diseñados para dar altas prestaciones en cuanto a capacidad de cálculo y procesamiento, resolviendo problemas de aplicaciones que así lo necesiten. Esto se logra mediante la utilización de un grupo de máquinas individuales las cuales son interconectadas entre sí a través de redes de alta velocidad, obteniendo un sistema de gran rendimiento que actúa como uno solo. Mientras que los de alta disponibilidad tienen como misión garantizar el funcionamiento ininterrumpido de ciertas aplicaciones. La idea principal es proporcionar un servicio ininterrumpido las 24 horas del día, los 7 días de la semana a empresas donde su principal función es la de mejorar los servicios que ofrecen a los clientes en las redes a las que pertenecen.

Los clústeres de alta disponibilidad son utilizados en las grandes empresas o en las empresas proveedoras de servicio para obtener sistemas tolerantes a fallos, evitando de esta forma que fallas tanto de hardware como de software afecten el servicio que se brinda de cara al usuario. Un cluster debe estar compuesto por almenos 2 computadoras, las cuales se denominan nodos y deben estar conectadas entre sí por enlaces de red o series redundantes, para obtener tolerancia fallas. En un cluster cuando falla uno de los nodos, el resto se ocupa automáticamente de activar los recursos perdidos para de esta forma mantener la disponibilidad de los servicios que se le brindan a los clientes, supliéndose de esta forma la funcionalidad de la computadora perdida. El uso de elementos de hardware comunes y software libre hace que el uso de un cluster se vea como una solución tentadora para lograr alta disponibilidad. Específicamente este tipo de clúster es el usado en el Ministerio de Finanzas y Precios, debido a la necesidad de brindar servicios a más de 350 usuarios de la red local y a las dependencias proviciales del país.

La implementación de un clúster requiere el uso de software de control especializado el cual puede ejecutarse tanto a nivel de aplicación como a nivel de sistema operativo. Algunos ejemplos de herramientas que pudieran utilizarse para implementar clústeres en GNU/Linux son:

  • IP Virtual Linux Server

  • Piranha

  • Kimberlite

  • Heartbeat

Para la implementación de este clúster se utilizará Heartbeat como software de control y Debian GNU/Linux como sistema operativo. Heartbeat es una herramienta a nivel de aplicación desarrollada por el equipo de Linux-HA (www.linux-ha.org) que permite implementar clústeres de control descentralizado, la misma ha demostrado ser muy estable, flexible y eficiente, además de que permite configurar clústeres de 2 o más nodos. En los repositorios de Debian se encuentran de forma precompilada los paquetes de Heartbeat, lo cual facilita el trabajo del administrador del cluster.

Para implementar un cluster como el propuesto se pueden seguir los siguientes pasos:

  1. Configuración de las interfaces de red

  2. Instalación y configuración de SSH

  3. Instalación y configuración de Heartbeat en uno de los nodos

  4. Instalación y configuración de las aplicaciones que brindarán servicios en uno de los nodos del clúster

  5. Sincronización de los usuarios Unix en todos los nodos del cluster

  6. Repetir los pasos 3 y 4 en todos los nodos del cluster

  7. Implementar un script que se ocupe de sincronizar los datos de las aplicaciones los datos de las aplicaciones entre los nodos del clúster.

En el primer paso se debe disponer de una interfaz, preferiblemente virtual que será la utilizada para brindar los servicios del nodo en cuestión y se recomiendan otras 2 o en su defecto una intefaz de red y el uso de una comunicación por puerto serie entre los nodos para las comunicaciones de Heartbeat.

El demonio SSH debe ser instruido para que permita conexiones con llaves RSA entre todos los nodos del clúster, esto se hace para evitar tener que poner la clave de root o de algún otro usuario en el script de sincronización de datos

En uno de los nodos se debe instalar Heartbeat y todas las aplicaciones que se utilizarán para brindar servicio en el clúster.

La configuración de Heartbeat consta de 3 archivos los cuales se ubican en el directorio /etc/ha.d. El primero de ellos, el authkeys consta de almenos 2 líneas (puede contener hasta 15) y se ocupa de cifrar las comunicaciones entre los nodos del clúster, este archivo debe ser copiado de forma íntegra hacia todos los nodos del clúster. En el sitio http://www.linux-ha.org/_cache/GeneratingAuthkeysAutomatically__gen_authkeys.sh existe un script que genera el archivo referido de forma automática.

El segundo archivo de Heartbeat es el ha.cf el cual define dónde se escriben los logs, los tiempos de verificación entre los nodos y los nodos que componen el clúster. Las directivas más importantes son:

  • keepalive – define en segundos cada qué tiempo los nodos se verificarán mutuamente para comprobar su disponibilidad

  • deadtime – tiempo en segundos que se esperará por la respuesta de otro nodo, si este no responde se conciderará como inactivo por lo cual sus servicios de red serán migrados a otro nodo

  • warntime – tiempo de advertencia, si el nodo que esta siendo verificado no responde en este período de tiempo Heartbeat se preparará para una posible migración de los servicios

  • auto_failback – define qué hacer con los recursos de un nodo que había fallado anteriormente, cuando el mismo vuelve a estar activo. Posibles valores son: el nodo actual se queda con los recursos hasta que falle o hasta que el administrador dé la orden de migración (off) o los recursos que debía ejecutar el nodo que había fallado le serán devueltos automáticamente cuando vuelva a estar activo (on)

  • node – define los nodos que pertenecen al cluster, el nombre específicado debe coincidir con la salida del comando “uname -n” y deben existir tantas líneas node como nodos posea el clúster

El tercer y último archivo de la configuración es el haresources define qué servicios correrá cada nodo, qué interfaz de red y qué dirección de red utilizará para ello. En este archivo cada nodo deberá tener una línea, en la cual los servicios se activan de izquierda a derecha y se desactivan en sentido contrario. Este archivo debe ser el mismo en todos los nodos, pero se permiten variaciones en cuanto a la interfaz de red a utilizar.

Los servicios que se implementrán sobre el cluster se configuran de forma independiente como si no formaran parte del cluster y deberán ser estudiados para determinar que archivos o directorios se deben sincronizar entre los nodos del cluster para garantizar el correcto funcionamiento de las mismas además de minimizar la pérdida de datos en caso de fallos. Las aplicaciones que brindan servicios deben tener la misma configuración en todos los nodos del cluster para garantizar que la migración de las mismas de un nodo a otro sea un proceso lo más transparente posible para el usuario.

En las pruebas realizadas, donde se han simulado fallas a nivel de sistema operativo, fallas en los enlaces de red, fallas de hardware y fallas eléctricas, el sistema obtenido ha demostrado ser muy estable y eficiente. Por lo anterior se prevé la futura implementación de otros sistemas similares en la institución.

Autores:

Maribel Bayona Valentín email: maribel@conavana.cu

Ulises González Horta email: ulises@mfp.gov.cu

5 comentarios to “Implementación de un cluster de alta disponibilidad utilizando herramientas libres”

  1. Eduardo Narvaez Maya Says:

    Hola me gustaria saber si con ubuntu funcionaria de igual forma este cluster o tocaria usar otras aplicaciones.

  2. Eduardo Narvaez Maya Says:

    Gracias por tu colaboracion quedo atento

  3. arlette Says:

    Disculpa, y en opensuse, lo podre implentar

  4. ulises gonzalez Says:

    si, en ubuntu se puede hacer lo mismo


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: