viernes, 11 de febrero de 2011

Heartbeat en Debian Squeeze


El famoso Heartbeat

Nos permite tener alta disponibilidad en caso haya problemas con un server estara el otro que permitira continuar con el servicio, siendo transparente para el usuario final, en este caso un ejemplo sencillo con el servicio web

El esquema es el siguiente

IP HA (compartida): 192.168.0.199

ServerA 192.168.0.200
ServerB 192.168.0.201

Configuramos el archivo /etc/hosts en ambos servers

127.0.0.1 localhost
192.168.0.200 ServerA
192.168.0.201 ServerB

Instalamos el paquete heartbeat en ambos servers

apt-get install heartbeat

En ambos server agregamos estas lineas en el /etc/sysctl.conf
net.ipv4.ip_nonlocal_bind=1

Lo ejecutamos con:

sysctl -p

Se genera el archivo y se copia en ambos servers sino lo hacen sale error cuando reinicien el hearbeat

#nano /etc/ha.d/authkeys
auth 3
3 md5 clave

Donde clave es el password.

Ahora configuramos los permisos del archivo

chmod 600 /etc/ha.d/authkeys

En Debian el archivo no encontraran el archivo en /etc/ha.d sino esta en /usr/share/doc/heartbeat/ha.cf.gz simple lo descomprimen y lo copian en /etc/ha.d.

Editamos el archivo /etc/ha.d/ha.cf en ServerA:

#
# keepalive: how many seconds between heartbeats
#
keepalive 2
#
# deadtime: seconds-to-declare-host-dead
#
deadtime 10
#
# What UDP port to use for udp or ppp-udp communication?
#
udpport 694
bcast eth0
mcast eth0 225.0.0.1 694 1 0
ucast eth0 192.168.0.201 #La ip del serverB
# What interfaces to heartbeat over?
udp eth0
#
# Facility to use for syslog()/logger (alternative to log/debugfile)
#
#logfacility local0
#
# Tell what machines are in the cluster
# node nodename ... -- must match uname -n
node ServerA
node ServerB

Copiamos el archivo al ServerB solo que cambiamos la ip de ServerA

Ahora vamos a modificar el archivo haresources, igual lo copiamos del /usr/share/doc/heartbeat/

Y hay ponemos la IP HA (compartida)

ServerA 192.168.0.199 apache2

Reiniciamos el servicio

:~# /etc/init.d/heartbeat restart
Stopping High-Availability services: Done.

Waiting to allow resource takeover to complete:Done.

Starting High-Availability services: IPaddr[3275]: INFO: Resource is stopped
Done.

:~#

Listo !!!
A modo de prueba reinicien uno de los servers y en el browser apunten a la IP HA (compartida), en mi caso 192.168.0.199, veran que no cae, es mas modifiquen el index en uno que diga ServerA y el otro serverB y refresquen el browser.

PD: La interface virtual donde estara la IP pues lo configuramos en /etc/network/interfaces
y agregamos.

auto lo eth0 eth0:0
allow-hotplug eth0 eth0:0
iface eth0:0 inet static
addres 192.168.0.199
netmask 255.255.255.0

Fuente:

http://bytecoders.net/content/servidores-de-alta-disponibilidad-heartbeat.html
http://lubl.de/blog/2009/10/setting-up-hearbeat-failover-for-an-ip-adress-on-debian-squeeze/

1 comentario:

Javier Camilo dijo...

Excelente, muchas gracias el aporte ha sido muy valioso!