Howto Heartbeat

De Tutoriales de Informatica
Saltar a: navegación, buscar

¿Que 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.

Instalación

En debian es muy facil, hay que ejecutar lo siguiente:

 apt-get install heartbeat 

Esto nos crea una directorio en /etc llamado ha.d en el cual vamos a realizar las configuraciones.

Configuración

Fichero ha.cf

Es el fichero ‘core’ de heartbeat, mostraré las opciones fundamentales para que heartbeat funcione correctamente, cabe destacar que estas configuraciones son validas para los dos nodos(servidores):

#       File to write debug messages to
debugfile /var/log/ha-debug
#
#
#       File to write other messages to
#
logfile /var/log/ha-log
#
#
#       Facility to use for syslog()/logger
#
logfacility     local0
#
# Envia pings cada 2 segundo al otro nodo
keepalive       2
#
# tras 20 segundo sin recibir respuesta del otro nodo, se considera como muerto.
#
deadtime        20
#
# Si durante 5 segundo el otro nodo no responde, este nodo se pone en Alerta.
#
warntime 10
#
#       Very first dead time (initdead)
#
#       On some machines/OSes, etc. the network takes a while to come up
#       and start working right after you've been rebooted.  As a result
#       we have a separate dead time for when things first come up.
#       It should be at least twice the normal dead time.
#
initdead        120
#
# Puerto UDP por defecto de Heartbeat según IANA
#
udpport 694
#       Set up a unicast / udp heartbeat medium
#       ucast [dev] [peer-ip-addr]
#
#       [dev]           device to send/rcv heartbeats on
#       [peer-ip-addr]  IP address of peer to send packets to
# Interfaz de red donde se levantará heartbeat
bcast   eth1
ucast   eth1 192.168.22.39
#
auto_failback   on
#       Tell what machines are in the cluster
# Declaración de los nodos
#
node    proxmox-lab
node    prox1-lab

Fichero haresources

Aqui se identifica el nodo principal de esta manera

[MasterHost] [IP_Virtual] [servicios]

  • [MasterHost]: Nombre del servidor.
  • [IP_Virtual]: Es la que levantará heartbeat para referirse al aliasing de red, en castellano, es la que utilizará tanto si proxmox-lab cae como si no, de tal manera que si proxmox-lab está funcionando realmente irá a la dirección 192,168.22.40 y sino, a la 192.168.22.39(prox1-lab).
  • [servicios]: Los servicios disponibles se nombran tal y como aparecen en /etc/init.d puesto que es aqui donde heartbeat va a buscarlos.

Ej: de fichero haresources en proxmox-lab

prox1-lab 192.168.22.35 vm-start

Ej: de Fichero haresources en prox1-lab

prox1-lab 192.168.22.35 vm-start

NOTA: en este caso son iguales, por que todas las virtuales estan ubicadas en proxmox-lab, de estar correctamente balanceadas el archivo haresources de prox1-lab, deberia ser el siguiente

proxmox-lab 192.168.22.35 vm-start

fichero authkeys

Heartbeat posee una medida de seguridad para poder comunicarse entre nodos con suficiente confiabilidad como para transmitir sin que haya intrusos o suplantaciones de identidad. Sus mecanismos de autenticación entre nodos permiten sha, md5 o crc(menos seguro).Es más que recomendable que a este archivo se le aplique un chmod 600. Su contenido será exclusivamente este:

auth 1
1 sha1 clave_de_seguridad

NOTA: en nuestro ambiente de prueba no lo utilizamos.

Configuraciones extras

Sincronización de virtuales

Para poder levantar las virtuales en otro nodo que no se el que la tiene habitualmente, hay que sincronizar los archivos de configuracion de las mismas entre ambos servidor. Estos archivos se encuentran en el directorio /etc/qemu-server.

A efectos de sincronizar los mismos creamos dentro del directorio /usr/bin, un bash denominado 'vm-sync' que contiene lo siguiente:

#! /bin/bash
# Sincroniza la configuración de la vistuales para tenerlas en ambos
# servidores, los archivos de configuración se enciuentran en la
# carpeta /etc/qemu-server/

rsync -av --compare-dest= /etc/qemu-server/* root@10.22.0.39:/etc/qemu-server/
rsync -av --compare-dest= root@10.22.0.39:/etc/qemu-server/* /etc/qemu-server/

Ejecución de virtuales

Para que heartbeat ejecute las virtuales que necesitamos, creamos un bash denomina 'vm-start' dentro del directorio /etc/init.d, que contiene lo siguiente:

#! /bin/bash
# Inicia las virtuales de proxmox-lab en el caso que el mismo se apague
# de improvisto

case $1 in
'start')

        qm start 110
        ;;
'stop')
;;
'restart')
;;

*)
        echo "Usage: $0 { start | stop | restart }"
        RETVAL=1
        ;;
esac
exit $RETVAL