Servidores de alta disponibilidad: Heartbeat
Hoy explicaremos como configurar heartbeat para dos nodos, y ofrecer un servicio de alta disponibilidad con un servidor principal y un mirror.

Autor: Josep Antoni Torres Tobeña
Pagina web: http://bytecoders.homelinux.com/node
En este tutorial tenemos:
* Servidor principal: asteriskPBX ip 192.168.1.8
* Servidor espejo: asteriskPBX2 ip 192.168.1.7
* Ip virtual (linux-ha): 192.168.1.10 (en esta ip se ofrece el servicio de alta disponibilidad)
El primer paso es instalar heartbeat en las 2 maquinas:
apt-get install heartbeat
Ponemos las ips y hostnames en el /etc/hosts de los 2 nodos:
127.0.0.1 localhost.localdomain localhost 192.168.1.8 asteriskPBX.proyectofinalcarrera.edu asteriskPBX 192.168.1.7 asteriskPBX2.proyectofinalcarrera.edu asteriskPBX2
Debemos modificar 3 ficheros en cada una de las maquinas, estos se encuentran en /etc/ha.d:
En authkeys especificaremos las claves, para nuestro caso usaremos el metodo inseguro CRC (que tiene menos carga de CPU) asumiendo que tenemos un buen firewall configurado, podemos usar md5, o sha1 para mayor seguridad:
auth 1 1 crc
En el fichero ha.cf especificaremos las opciones de configuración de heartbeat, indicamos donde queremos guardar los logs, en keepalive le indicamos que los latidos se enviarán cada 2 segundos, en deadtime especificamos que si un nodo no responde en 30 segundos está muerto, en warntime le decimos que si no responde en 10 segundos nos lanzará una alerta, en el inicio antes de considerar un nodo muerto esperaremos 120 segundos para evitar problemas con el arranque del servicio, usaremos el puerto UDP 649 para la comunicación entre las máquinas, en ucast indicaremos nuestro dispositivo ethernet e indicamos que mandamos latidos por unicast a la ip del otro nodo (peer), ponemos el parámetro failback en on para indicar el comportamiento en caso de recuperación de un nodo caído, estando en on este recuperará todos los servicios al volver a estar activo si lo dejamos en off, los servicios residirán en el nodo espejo hasta que este caiga, finalmente indicamos que nodos forman el servicio y un dispositivo ethernet para broadcast:
# 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 # # # A note on specifying "how long" times below... # # The default time unit is seconds # 10 means ten seconds # # You can also specify them in milliseconds # 1500ms means 1.5 seconds # # # keepalive: how long between heartbeats? # keepalive 2 # # deadtime: how long-to-declare-host-dead? # # If you set this too low you will get the problematic # split-brain (or cluster partition) problem. # See the FAQ for how to use warntime to tune deadtime. # deadtime 30 # # warntime: how long before issuing "late heartbeat" warning? # See the FAQ for how to use warntime to tune deadtime. # 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 # # # What UDP port to use for bcast/ucast communication? # 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 # ucast eth0 (ip_del_otro_servidor) # auto_failback on # Tell what machines are in the cluster # node nodename ... -- must match uname -n node asteriskPBX node asteriskPBX2 bcast eth0
En el fichero haresources, especificaremos los servicios que debe manejar heartbeat (en este caso apache y mysql), este fichero es el mismo en los dos nodos:
asteriskPBX IPaddr2::192.168.1.10/24/eth0 apache2 mysql
Reiniciamos el servicio heartbeat en las 2 maquinas:
/etc/init.d/heartbeat restart
Y ya tenemos el servicio listo en 192.168.1.10, más adelante veremos como manejar los datos con DRBD.




Escribe tu comentario