Cluster Alta disponibilidad en LINUX
En este articulo aprenderemos a implementar un Cluster de Alta disponibilidad (AD).
Material necesario:
- 2 maquinas con Linux
- El paquete Heardbeat
- un Sistema de ficheros con Journaling
- Una Red
- Puerto serie
Que es un Cluster y para que me sirve?
Un cluster , consiste en un grupo de nodos conectados entre si que interactuan como una sola maquina (“En caso que un nodo dejase de funcionar tomaría el control el segundo nodo”) , reduciendo así considerablemente la tolerancia a fallos y caídas de servicio.
Un cluster podría servir perfectamente en el caso de un problema de Hardware nuestros clientes
tendrían igualmente servicio ya que uno de los nodos tomaría el control como maquina primaria.
Que es Heardbeat?
Heardbeat es un paquete de software creado por LINUX-HA , funciona similar al System V o init pero
en vez de una sola maquina pasaría a ejecutar los servicios en los nodos , basándose en que no le
llegan respuestas estas se hacen por medio de ping y por pulsaciones del cable serie
Que es STONITH?
STONITH son la Siglas de “Shoot The Other Node In The Head” (“ Pegale un Tiro en la Cabeza al otro Nodo”). Es una técnica usada por heardbeat que se asegura de que un servidor supuestamente muerto no interfiera con el funcionamiento del cluster , en caso de no implementarse bien esta técnica , podria dar lugar a que el cluster no funcione.
A groso modo STONITH consiste en que el servidor secundario nota que el primario no funciona, y
este le haría un DDOS al primario para asegurarse de que ha sido un falso positivo y tomaría el nodo
secundario el control.
Preparando el Hardware
Existen 3 cosas especificas del cluster que hay que conectar , los discos, las NICs de interconeccion,
el cable serial de interconexión y los cables de control de los UPS
- Primero instalaremos los discos , pero no crearemos aun ningún sistema de ficheros.
- Instalaremos las NICs y las configuraremos con ips privadas de la misma subred en los rangos
192.168.0.0/16 o el rango 10.0.0/8 - A continuación nos haremos con un cable Serial para la comunicación PC a PC . Nos
aseguraremos de que el cable incluya modems null y que incluya cables CTS Y RTS - Conectamos cada ordenador a su UPS
Instalación del Software
Para nustro cluster necesitaremos varios paquetes de software.
heardbeat-1.0.3 , heardbeat-pils-1.0.3, heardbeat-stonith-1.0.3
cada uno de ellos se encuentra en los repositorios de las distribuciones o se incluye como paquete en
los cds de instalación de esta (“ Cuando instale suse 9.3 me pareció verlos en la instalación) si no los encontráis podéis mirar en http://linux-ha.org los paquetes los instalaremos usano nuestro administrador de paquetes favoritos ya sea apt-get , yast ,urpmi , emerge , etc.
Por ultimo nos queda instalar el servicio que queramos dar ya sea samba,apache postfix , etc.
Configurando DRBD.
DRBD se configura en el fichero /etc/drbd.conf
Código:
resource drbd0 {
protocol=C
fsckcmd=/bin/true
disk {
disk-size=80418208
do-panic
}
net {
sync-rate=8M # bytes/sec
timeout=60
connect-int=10
ping-int=10
}
on Zeus { # Zeus es el nombre del Servidor Principal
device=/dev/nb0
disk=/dev/hda1
address=192.168.1.1
port=7789
}
on SolarUX { #SolarUX es el nombre del servidor Segundario
device=/dev/nb0
disk=/dev/hda1
address=192.168.1.2
port=7789
}
}
Nota: Para calcular el tamaño del disco usaremos blockdev-getsize y dividiremos el resultado por dos si ambas partes dan resultado diferente eligiremos el mas grande
Creando el Sistema de Ficheros
A continuación crearemos el sistema de ficheros para Zeus ( Servidor Primario) es importante usar un sistema de ficheros con Journaling como Reiserfs, ext3 , jfs, xfs.
Crearemos dos particiones del mismo tamaño en el dispositivo /dev/nb0 los dos servidores y con
Reiserfs ya que se considera mas seguro.
Instrucciones a ejecutar en Zeus
Código:
Root@Zeus:~# /etc/init.d/drbd start
Le respondemos “yes” para que nos ponga a Zeus como primario.
ahora creamos el sistema de ficheros y lo montamos
Código:
Root@Zeus:~# mkfs -t reiserfs /dev/nb0 datadisk /dev/nb0 start
por último si usamos una conexión Ethernet de 1gb para la sincronización, cambiaremos los
parámetros los parámetros de esta para que nos funcione en modo fullduplex ver Activando
Fullduplex en targetas ethernet en este mismo foro
Configurando Heardbeat
Heardbeat tiene tres ficheros de configuración.
1. ha.cf Configura información básica del cluster
2. haresources.cf Configura los grupos de recursos tipo init
3. authkeys Configura la Autenticación de red
Se pueden encontrar ejemplos de estos ficheros en /usr/share/doc/pakages/heardbeat y se documentan en el fichero “Getting Started” de Heardbeat
ha.cf le aporta a heardbeat la información de la configuración básica. Configura los nodos,
pulsaciones serial , la manera de registrar los logs intervalo de tiempo muerto y pulsaciones
ejemplo de nustro ha.cf
Código:
logfacility local7 # servicio de syslog keepalive 1 #Intervalo pulsación warntime 2 #Pulsación Tardía deadtime 10 # Tiempo control Fallos nice_failback on node Zeus SolarUX ping 10.10.10.254 # Dirección del Router bcast eth0 eth1 #Broadcast Interfaces HeardBeat serial /dev/ttyS0 #Enlace Serial HeardBeat respawn /usr/lib/heardbeat/ipfail stonith_host Zeus apcsmart SolarUX /dev/ttyS1 stonith_host SolarUX apcsmart Zeus /dev/ttyS1
las Pulsciónes se envian por eth0 , eth1 y serial /dev/ttyS0 este ficero es identico para todos los nodos
Fichero /etc/ha.d/haresources
Este fichero crea un grupo de recusros que en teoría pertenecen a Zeus , asociados a una ip virtual
10.10.10.20 y los recursos a servir:
● NFS (Network File System)
● Samba (compartición archivos Windows)
● Dhcp (assignacion dinamica de Ips)
● Postfix (Servidor de Correo electronico)
Código:
Zeus 10.10.10.20 datadisk::drbd0 nfslock nfsserver smb dhcpd postfix
Para clarificar donde están colocados los scripts dire que Ipaddr y datadisk están en
/etc/ha.d/resource.d y el resto de servicios tipicos en /etc/init.d/
HeardBeat se las apaña de maravilla administrando la mayoria de servicios que vienen en los V
System init comúnmente llamados los scripts de arranque, sin enbargo una de las condiciones para
que Heardbeat administre correctamente los Scripts es que tienen de tener el mismo nombre en todos
los Nodos , por lo tanto recomiendo usar una distribución identica en las dos maquinas así
simplificaremos la configuración y el mantenimiento.
Fichero /etc/ha.d/authkeys
authkeys es el fichero de configuración mas sencillo de todos. Contiene el método de autentificación basado en (sha1) con la clave que se usara para firmar los paquetes . este fichero tiene que ser idéntico en todos los servidores y no debe tener ningún usuario acceso de lectura a excepción de root:
Código:
auth 1 1 sha1 RandomPasswordfc970c94efb
Configuración de los Servicios
Tenemos de deshabilitar los servicios para que no sean controlados por init si no mor HeardBeat
esto lo conseguiremos con el siguiente comando:
Código:
Root@Zeus:~# chkconfig -del nfslock nfsserver smb dhcpd postfix
Notese que deberíamos cambiar los servicios marcados en azul por los que tenemos configurados en
/etc/ha.d/haresources para servir.
Configurando /etc/fstab
Tenemos de tener especial cuidado en que la partición /home no se monte automáticamente desde /etc/fstab si existe ya una entrada para /home en dicho fichero la eliminamos y creamos esta:
Código:
/dev/nb0 /home reiserfs noauto 0 0
Nota: si home ya esta montado lo desmontamos con umount /home
Configuración del Fichero /etc/hosts
Si no tenemos un servidor DNS corriendo en nuestra red tendremos de usar nuestro archivo /etc/hosts quedando de esta manera:
Código:
10.10.10.20 Cluster # IP virtual cluster 192.168.1.1 Zeus #Servidor Primario 192.168.1.2 SolarUX # Servidor Segundario (Nodo)
Montando todo el Cotarro
Ahora es el momento de configurar el servidor segundario para que monte /home desde NFS
añadiendo lo siguiente en /etc/fstab
Código:
Cluster:/home /home nfs defaults 0 0
Una vez la partición NFS montada creamos el directorio /home/HA.config
y creamos la siguiente estructura de directorios:
Código:
/etc
postfix/
samba/
exports
dhcpd.conf
/var
lib/
dhcpd
samba
nfs
spool/
postfix/
mail/
Despues de montar la estructura de directorios tendriamos que crear enlaçes simbolicos por ejemplo
Código:
ln -s /home/HA.config/etc/samba/smb.cf /etc/samba/smb.cf
Ahora desmontamos /home de la siguiente forma:
Código:
Root@Zeus:~# datadisk /dev/nb0 stop Root@Zeus:~# /etc/init.d/drbd stop
Tambien podemos configurar samba para que escuche en la interface del cluster modificando dentro
de la directiva [ global ] de /etc/samba/smb.cf
Código:
interfaces = 127.0.0.1/8 10.10.10.10.20/24
Comprobando si todo Funciona
DRBD
Arrancamos drbd tanto en Zeus como en SolarUX con:
Código:
Root@Zeus:~# /etc/init.d/drbd start
una vez iniciado comprobaremos en Zeus si ha arrancado con:
Código:
Root@Zeus:~# cat /proc/drbd
veriamos algo así
0: cs:SyncingAll st:Primary/Secondary
Esto nos indica que ha sido todo arrancado correctamente y que una Sincronización Completa está en marcha . Esta sincronización tada un poco y se puede ver el progreso en /proc/drbd
HEARDBEAT
Código:
Root@Zeus:~# /etc/init.d/heardbeat start Root@Zeus:~# ifconfig |grep 10.10.10.20 Root@Zeus:~# /etc/init.d/nfslock status Root@Zeus:~# /etc/init.d/smb status Root@Zeus:~# /etc/init.d/dhcpd status Root@Zeus:~# /etc/init.d/postfix status
/home tiene que estar montado en Cluster y todos los servicios tendrian de estar corriendo
Delegando Funciones
Ahora heardbeat tiene de ser capaç de retrasmitir todos los trabajos a SolarUX lo haremos con:
Código:
Root@Zeus:~# /usr/sbin/heardbeat/hb_standby
Ahora hacemos los pasos de arriba HEARDBEAT en SolarUX y comprobamos si todo funciona
correctamente si es asi delegamos funciones a Zeus
Código:
Root@SolarUx:~# /usr/sbin/heardbeat/hb_standby
comprobamos en Zeus y si es asi ya casi está
Administrador Contento
Desconectamos el cable de red a Zeus y en estos momentos aproximadamente unos 10 Sec SolarUX
tendria de responder a la ip Virtual 10.10.10.20 y darnos Servicio

Cluster Alta disponibilidad en LINUX by seguros.vahalo.com dijo:
Agosto 12, 2007 a 6:22 am
[...] el Sistema de Ficheros. A contiuación crearemos el sistema de … articulo continua en wwwlinux traido usted por [...]
_TuXeD_ dijo:
Agosto 26, 2007 a 1:27 am
Hola Gente tengo la versión de este manual en pdf
http://lnx.titoworld.com/uploads/cluster-AD.pdf
lucer dijo:
Septiembre 1, 2007 a 7:02 am
eres un crá
luis rodriguez dijo:
Septiembre 11, 2007 a 8:20 am
como hacer un cluster en el sistema operativo DEBIAN y su componentes
luis rodriguez dijo:
Septiembre 11, 2007 a 8:21 am
como hecer un cluster en el sistema operativo BEDIAN y sus componentes
rafaeldipre dijo:
Mayo 25, 2008 a 9:38 am
genial tenia rato buscando algo sobre este tema y al fin lo encontre gracias
david dijo:
Agosto 23, 2008 a 12:20 pm
nesesito hacer un clouster en linux
david dijo:
Agosto 23, 2008 a 12:41 pm
como hago para hacer un clouster en linux un manul lo nesesito