Curso de doctorado de Alta Disponibilidad
 
Tema 1: Estado del Arte
Tema 2: Medios de almacenamiento estable
Tema 3: Sistemas de Ficheros


Bibliografía

Indispensable visitar la página de Alta Disponibilidad en Linux, donde existen enlaces a todos los temas que se han visto durante el curso


Trabajo de laboratorio

La sesión práctica consistirá en la implementación de un sistema de alta disponibilidad que se utilizará como servidor. El sistema informático que constituirá el servidor estára formado por dos sistemas linux estándar, provistos de dos tarjetas de red cada uno y de varios discos. Además existirá un enlace cruzado entre ambos a través de la puerta serie de los respectivos servidores.

Sistema Operativo

En un primer lugar se procederá a la instalación del sistema operativo, eligiendo una partición libre de uno de los discos. El sistema elegido será RedHat 7.1. y se proporcionarán los CD's de instalación. En cualquier caso se pueden bajar las imágenes de estos discos del mirror de Red Iris:

seawolf-i386-disc1.iso
seawolf-i386-disc2.iso
seawolf-i386-powertools.iso
Los sistemas se tendrán que configurar de forma adecuada para que soporten las dos tarjetas de red, una de ellas se conectará a la red de la universidad, y con la otra se formará una intranet de acceso privado para comunicar los ordenadores que forman el cluster. (En nuestro caso sólo serán los dos que se van a configurar). Además se instalará una versión más actualizada del kernel (2.4.5), que se puede encontrar en:
linux-2.4.5.tar.bz2


Heartbeat

Una vez se haya recompilado el sistema operativo y se haya comprobado que funciona correctamente se procederá a la instalación y configuración del programa hearbeat (http://linux-ha.org/heartbeat). Este programa se encargará de monitorizar el funcionamiento de un servidor de páginas www (apache) que se ejecutará en uno de los dos nodos del cluster.  Los programas se podrán encontrar respectivamente en:

heartbeat-0.4.9-1.i386.rpm
apache-1.3.19-5.i386.rpm
apache-manual-1.3.19-5.i386.rpm
apacheconf-0.7-2.noarch.rpm
Se configurará  una página de inicio sencilla del servidor apache donde indique el nombre del host que está ejecutando el servicio. El heartbeat utilizará la configuración redundante (red y comunicación serie) para enviar mensajes de 'estoy vivo' al otro nodo. Cuando todo funcione, se tendrá que probar a ir desconectando los enlaces para ver como reacciona el cluster (incluso se podrá apagar uno de los ordenadores para ver lo que pasa). Como heartbeat viene con los scripts necesarios para que se ejecute de forma automática en el arranque, se instalarán también estos ficheros y se comprobará su funcionamiento.
 

Disco RAID implementado por Software

En la segunda parte del trabajo se instalará un disco virtual RAID-1 en uno de los nodos del cluster para proteger la información del servidor de páginas www. Como en el caso anterior, se tendrá que configurar el software para que en el arranque se detecte este disco. Además en el RAID se instalará un sistema de ficheros estándar de Linux que se montará en un directorio que se cree llamado /mnt/raid-1.

Para la instalación se recomienda leer el Software-RAID HOWTO

De forma resumida, se tendrá que recompilar el kernel para incluir soporte para RAID en el núcleo (Mirar en la opción Multi-device support), instalar las utilidades RAID, reparticionar o cambiar el tipo de las particiones del disco destinadas al RAID, crear el fichero de configuración, crear el array (mkraid) y crear el sistema de ficheros (mke2fs) para mantener las páginas www del servidor.

raidtools-0.90-20.i386.rpm


Dispositivo de bloques remoto (ENBD)

Llegados a este punto, ya se dispondrá de un servidor de alta disponibilidad de páginas www. Al utilizar un disco espejo (RAID-1) se podrá proteger la información si cae alguno de los dispositivos de almacenamiento. Sin embargo, el sistema de almacenamiento de información, en su conjunto, aún es un punto único de fallo. Si se avería por ejemplo la controladora IDE de los discos, el sistema obviamente fallará. A continuación se propone una mejora que va a consistir en la utilización de un dispositivo de bloques remoto como parte del array del RAID. Este dispositivo de bloques remoto funciona como un disco virtual local (o una partición), pero físicamente está conectado en otro ordenador al que se accede por red con protocolos IP.

En nuestro caso vamos a implementar el disco mediante el software de ENBD. De nuevo habrá que realizar una visita obligada a la página que describe el Enhanced Network Block Device.

Para la compilación del paquete he tenido algunos problemas, por lo que (con permiso del autor) he puesto una copia local del programa con unas pequeñas modificaciones en los Makefiles. Es importante tener cuidado con la instalación, ya que la hacer 'make install' se añaden varios servicios y una línea en el inet.d que hacen que se ejecuten de forma automática los servidores y los clientes cuando se recibe una petición. Ello permite que la conexión sobreviva a las reinicializaciones del sistema. Otra advertencia es que el módulo del kernel se tiene que instalar como superusuario, por lo tanto es bueno utilizar el paquete sudo para estos menesteres.

nbd-2.4.25.tar.bz2 (Copia local)


Sistemas de ficheros compartidos

Hasta ahora la información no se comparte entre los dos nodos del cluster. Aprovechando que se puede implementar un dispositivo de almacenamiento compartido entre varios nodos, será muy conveniente instalar sobre este dispositivo un sistema de ficheros que permita accesos simultáneos. Entre los muchos que se han implementado destacan:

Global File System (GFS)
Intermezzo


Sistemas de ficheros con registros

En caso de fallo del servidor del sistema de ficheros, éste no se va a desmontar de forma programada. El nodo de respaldo que se encargará de recuperar el sistema utilizará mucho tiempo en su comprobación. Además no se garantiza que la comprobación automática del sistema pueda reparar todos los errores y por lo tanto se necesita de la intervención manual.

Para facilitar la recuperación se utilizarán sistemas de ficheros con registros (logging file systems o journaling file systems) que evitan tener que comprobar físicamente todo el disco. Entre ellos destacan Reiserfs, ext3, xfs o jfs.

Para la practica se utilizará el Resiserfs con linux-2.4.5. Se precisará el:

Patch para el kernel: reiserfs-umount-bug-fix-patch-for-linux-2.4.5
Las utilidades del usuario: reiserfsprogs-3.x.0j.tar.gz


Benchmarks de Sistemas de Ficheros

Para terminar con la sesión práctica se deberá hacer un análisis comparativo de la eficiencia de las diferentes alternativas utilizadas. Para ello se proponen utilizar diferentes benchmarks que se pueden encontrar en:

Bonie++
PostMark
DBench
-----

Rafael J. Martínez Durá
http://www.uv.es/~rmtnez