Material necesario:
- 2 maquinas con Linux
- El paquete Heardbeat
- un Sistema de ficheros con Journaling
- Una Red
- Puerto serie
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.
¿Qué es Heartbeat?
Heartbeat es un paquete de software creado por LINUX-HA, funciona de forma similar al System V o init pero en vez de una sola máquina 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” (“ Pégale un Tiro en la Cabeza al otro Nodo”). Es una técnica usada por Heartbeat 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, podría dar lugar a que el cluster no funcione.
A grosso 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 interconexión,
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
Para nuestro cluster necesitaremos varios paquetes de software.
Heartbeat-1.0.3, Heartbeat-pils-1.0.3, Heartbeat-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 usando 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 secundario 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 elegiremos 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 startLe 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 startpor ú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 tarjetas ethernet en este mismo foro
Configurando Heartbeat
Heartbeat 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/Heartbeat y se documentan en el fichero “Getting Started” de Heartbeat
ha.cf le aporta a Heartbeat 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 nuestro 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 Heartbeat serial /dev/ttyS0 #Enlace Serial Heartbeat respawn /usr/lib/Heartbeat/ipfail stonith_host Zeus apcsmart SolarUX /dev/ttyS1 stonith_host SolarUX apcsmart Zeus /dev/ttyS1las pulsaciones se envían por eth0, eth1 y serial /dev/ttyS0 este fichero es idéntico para todos los nodos
Fichero /etc/ha.d/haresources
Este fichero crea un grupo de recursos 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 (compartir archivos Windows)
● Dhcp (asignación dinámica de IPs)
● Postfix (Servidor de Correo electrónico)
Código:
Zeus 10.10.10.20 datadisk::drbd0 nfslock nfsserver smb dhcpd postfixPara clarificar donde están colocados los scripts diré que Ipaddr y datadisk están en
/etc/ha.d/resource.d y el resto de servicios típicos en /etc/init.d/
Heartbeat se las apaña de maravilla administrando la mayoría de servicios que vienen en los V
System init comúnmente llamados los scripts de arranque, sin embargo una de las condiciones para
que Heartbeat administre correctamente los Scripts es que tienen de tener el mismo nombre en todos
los Nodos, por lo tanto recomiendo usar una distribución idéntica 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 autenticació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 RandomPasswordfc970c94efbConfiguración de los Servicios
Tenemos de deshabilitar los servicios para que no sean controlados por init si no por Heartbeat
esto lo conseguiremos con el siguiente comando:
Código:
Root@Zeus:~# chkconfig -del nfslock nfsserver smb dhcpd postfixNótese 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 0Nota: 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 0Una 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/Después de montar la estructura de directorios tendríamos que crear enlaces simbólicos por ejemplo
Código:
ln -s /home/HA.config/etc/samba/smb.cf /etc/samba/smb.cfAhora desmontamos /home de la siguiente forma:
Código:
Root@Zeus:~# datadisk /dev/nb0 stop Root@Zeus:~# /etc/init.d/drbd stopTambién 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 startuna vez iniciado comprobaremos en Zeus si ha arrancado con:
Código:
Root@Zeus:~# cat /proc/drbdveríamos 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 tarda un poco y se puede ver el progreso en /proc/drbd Heartbeat
Código:
Root@Zeus:~# /etc/init.d/Heartbeat 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 tendrían de estar corriendo Delegando Funciones Ahora Heartbeat tiene de ser capaz de retransmitir todos los trabajos a SolarUX lo haremos con:
Código:
Root@Zeus:~# /usr/sbin/Heartbeat/hb_standbyAhora hacemos los pasos de arriba Heartbeat en SolarUX y comprobamos si todo funciona correctamente si es así delegamos funciones a Zeus
Código:
Root@SolarUx:~# /usr/sbin/Heartbeat/hb_standbyComprobamos en Zeus y si es así ya casi está.
Administrador Contento
Desconectamos el cable de red a Zeus y en estos momentos aproximadamente unos 10 Sec SolarUX tendría de responder a la ip Virtual 10.10.10.20 y darnos ServicioFuente: trucolinux.com
Interesante post, y que nos dices del de alto rendimiento?
ResponderEliminarsaludos.
Eliminarperdona que te conteste despues de un año bueno el alto rendimiento es bueno en los cluster bajo linux y muy estable....