Cluster Alta disponibilidad en LINUX

julio 24, 2007 at 12:13 pm (Servidores)

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

8 comentarios

  1.   Cluster Alta disponibilidad en LINUX by seguros.vahalo.com said,

    […] el Sistema de Ficheros. A contiuación crearemos el sistema de … articulo continua en wwwlinux traido usted por […]

  2. _TuXeD_ said,

    Hola Gente tengo la versión de este manual en pdf
    http://lnx.titoworld.com/uploads/cluster-AD.pdf

  3. lucer said,

    eres un crá

  4. luis rodriguez said,

    como hacer un cluster en el sistema operativo DEBIAN y su componentes

  5. luis rodriguez said,

    como hecer un cluster en el sistema operativo BEDIAN y sus componentes

  6. rafaeldipre said,

    genial tenia rato buscando algo sobre este tema y al fin lo encontre gracias

  7. david said,

    nesesito hacer un clouster en linux

  8. david said,

    como hago para hacer un clouster en linux un manul lo nesesito

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: