Para la prueba usaremos dos nodos con debian6 como sistema operativo, ambas máquinas tendrán una interfaz de red (eth0) y levantarán una virtual (eth0:0) que la mantendremos en alta disponibilidad con Heartbeat.
Datos
Nodo1(N1): 192.168.112.180
Nodo2(N2):192.168.112.181
IP Virtual:192.168.112.182
Empezamos!
Para no complicarnos, instalaremos el paquete directamente de los repositorios en ambas máquinas, para ello ejecutamos:
root@N1:~# apt-get install heartbeat
Facil y sencillo, ya tenemos instalado heartbeat, podemos comprobarlo de la siguiente manera:
root@N1:/etc/heartbeat# dpkg -l | grep heartbeat
ii heartbeat 1:3.0.3-2 Subsystem for High-Availability Linux
ii libheartbeat2 1:3.0.3-2 Subsystem for High-Availability Linux (libraries)
ii heartbeat 1:3.0.3-2 Subsystem for High-Availability Linux
ii libheartbeat2 1:3.0.3-2 Subsystem for High-Availability Linux (libraries)
En /etc habrá aparecido una carpeta /heartbeat, donde están los ficheros de configuración. Para que Heartbeat funcione son necesario 3 ficheros.
- ha.cf .Fichero de configuración principal.
- haresources. Fichero de configuración de recursos.
- authkeys. Información de autenticación.
Si no encontramos estos ficheros en el directorio /etc/heartbeat, es posible encontrarlos en /usr/share/doc/heartbeat. En este caso tendriamos que copiar los ficheros en /etc/heartbeat.
root@N1:/etc/heartbeat# cd /usr/share/doc/heartbeat/
root@N1:/usr/share/doc/heartbeat# cp ha.cf haresources authkeys /etc/heartbeat
authkeys
Comenzamos la configuración de los ficheros. Empezamos por el más facilito y el que menos guerra da, authkeys.Este fichero contiene información referida a como se autentican los nodos en el cluster. El contenido del fichero es el siguiente.
auth 3
#1 crc
#2 sha1 HI!
3 md5 SecretKey
#1 crc
#2 sha1 HI!
3 md5 SecretKey
auth 3 : método que usará para firmar los paquetes salientes ( 3 se corresponde con md5)
3 md5 SecretKey: nos dice el metodo que usa para firmar los paquetes (crc,sha1,md5), mientras que SecretKey es la clave compartida usada para firmar los paquetes. Esta clave debe ser la misma en todos los nodos. Si usamos CRC, no es necesaria clave, por ello es un método menos seguro.
Fichero configurado, sencillo. Una cosa a tener en cuenta, es que este fichero debe tener los permisos correctos, para que sea accedido solo por el propietario del mismo.
root@N1:/etc/heartbeat# chmod 600 /etc/heartbeat/authkeys
ha.cf
Este es el fichero principal de la configuración de heartbeat.
# keepalive: Número de segundos entre comprobación y comprobación
#
keepalive 2
#
# deadtime: Número de segundos para declarar a un host muerto
#
deadtime 10
##
keepalive 2
#
# deadtime: Número de segundos para declarar a un host muerto
#
deadtime 10
# Que puerto UDP usar para comunicación unicast/multicast
#
udpport 694
...
# Sobre que interfaz se envian los hearbeats en multicast?
#
bcast eth0 # Linux
#
mcast eth0 225.0.0.1 694 1 0
#
# IP del nodo 2
#
ucast eth0 192.168.112.181
#
# Si queremos autofailback
#
auto_failback off
...
#
# Que máquinas están en cluster
# Formato: node nodename ... Podemos sacar el nodename con uname -n
#
node N1
node N2
node N2
Con estas opciones funcionaría a la perfección, pero hay un montón más de opciones que nos permiten hacer cosas más complejas. Copiamos este fichero en el Nodo2, cambiando la IP que hemos configurado por la del Nodo1.
root@N1:/etc/heartbeat# scp /etc/heartbeat/ha.cf Nodo2:/etc/heartbeat/ha.cf
haresources
Este fichero contiene la lista de recursos que se moverán entre las máquinas de un cluster. tiene que ser IDENTICO en todos los nodos de un cluster
# These resources in this file are either IP addresses, or the name
# of scripts to run to "start" or "stop" the given resource.#
# The format is like this:
#
#node-name resource1 resource2 ... resourceN
# También podemos ponerlo N1 IPaddr::192.168.112.182/24
Heartbeat configurado!!. Este caso es muy simple, podemos encontrarnos con configuraciones un poco más complejas, pero el procedimiento sería el mismo.
Antes de arrancar el servicio, es importante dar de alta en el /etc/hosts de cada máquina el resto de nodos. Una vez hecho esto, reiniciamos y comprobamos:
root@N1:~# /etc/init.d/heartbeat restart
Stopping High-Availability services: Done.Waiting to allow resource takeover to complete:Done.
Starting High-Availability services: IPaddr[1683]: INFO: Resource is stopped
IPaddr[1723]: INFO: Resource is stopped
Done.
Para comprobar podemos quitar la red, o tirar directamente el nodo que tiene el recurso, en nuestro caso N1, pasados 10 segundos, se dará el N1 como muerto y N2 levantará la interfaz.
root@N2:~# ifconfig
eth0 inet addr:192.168.112.181 Bcast:192.168.112.255 Mask:255.255.255.0eth0:0 inet addr:192.168.112.182 Bcast:192.168.112.255 Mask:255.255.255.0
Todo correcto!. Hasta aquí el tutorial sobre Heartbeat. Espero que haya quedado claro el tema del heartbeat y os sea de ayuda.
Un saludo,
Víctor.
0 comentarios: