VMware y Debian · 4 min read · Dec 01, 2025

Replicación y Conmutación por Error de Máquinas Virtuales con VMWare Server y Debian Etch (4.0) - Página 3

4. Configurando el paquete Heartbeat

Instalar el paquete Heartbeat habilitará la conmutación por error automática y la gestión de recursos en caso de fallo de recursos y/o hardware.

En este tutorial, usaré Heartbeat a través de la red, pero también es posible usar Heartbeat con un cable serie y otros métodos. Heartbeat verificará las actualizaciones de ambos servidores, y cuando no reciba más actualizaciones, iniciará una conmutación por error y tomará el control de los recursos especificados (en nuestro caso, DRBD y VMWare).

A MENOS QUE SE ESPECIFIQUE LO CONTRARIO, TODOS LOS COMANDOS SE REALIZAN EN AMBOS SERVIDORES

OK, pasemos a la configuración. Para su conveniencia, puede usar los siguientes archivos de configuración ya que están adaptados a este tutorial. Heartbeat necesita 3 archivos para ser configurado, a saber: “ha.cf”, “haresources” y “authkeys”. Edítalos en consecuencia con tu editor favorito:

nano /etc/ha.d/ha.cf
logfile /var/log/ha-log
logfacility local0
keepalive 1
deadtime 10
warntime 10
udpport 694
bcast
eth1
auto_failback off
node    server1  ## asegúrate de que ambos nombres sean accesibles - verifica /etc/hosts
node    server2
ping 192.168.0.254  ## Introduce una dirección IP que sea pingable desde la red ETH0 !!
respawn hacluster /usr/lib/heartbeat/ipfail

NOTA: Este archivo ha.cf habilitará la conmutación por error en caso de fallo de conexión de red en ETH0 y/o fallo general del servidor. Los problemas con ETH1 NO causarán que ocurra una conmutación por error !

Ahora editamos el archivo “authkeys”:

nano /etc/ha.d/authkeys
auth 3
3 md5 failover  ## esto es solo una cadena, ¡introduce lo que quieras! auth 3 md5 usa cifrado md5

Pero también tenemos que cambiar los permisos de este archivo para que solo sea legible por “root”:

chmod 600 /etc/ha.d/authkeys

Y por último, editamos el archivo “haresources” que contiene los recursos de conmutación por error.

nano /etc/ha.d/haresources
server1 192.168.0.10 drbddisk::vm1 Filesystem::/dev/drbd0::/var/vm::ext3 vmstart
# Explicación:
# Nombre del Servidor Primario --> dirección IP virtual a utilizar --> recurso DRBD como se configuró en /etc/drbd.conf
# --> dónde montar el recurso DRBD y el tipo de sistema de archivos --> recurso a iniciar/detener en caso de conmutación por error
# el recurso "vmstart" es un script personalizado necesario para VMWare Server ya que no puedes dejar que heartbeat tome control de
# los servicios de vmware o te encontrarás con los temidos errores "no configurado para esta máquina" !

Antes de continuar, necesitaremos crear el script personalizado “vmstart” para asegurarnos de que las Máquinas Virtuales se inicien automáticamente en el servidor en caso de conmutación por error. Con otros recursos como Apache, Mysql, NFS … podríamos simplemente haber eliminado los scripts de inicio para ellos de los directorios rc.d, pero con VMWare esto no es posible ya que son necesarios para el buen funcionamiento de los servicios. Por lo tanto, necesitamos un script personalizado para iniciar las Máquinas Virtuales en caso de conmutación por error ya que los servicios de VMWare ya estarán en funcionamiento antes de la conmutación por error !

El “vmstart” deberá residir en la carpeta “/etc/ha.d/resource.d/“ ya que es donde heartbeat lo buscará.

nano /etc/ha.d/resource.d/vmstart
#!/bin/bash 
case "$1" in 
start) 
/usr/bin/vmware-cmd -s register "/var/vm/'nombre de la máquina virtual'/'archivo de configuración de vm'.vmx" 2>/dev/null
/usr/bin/vmware-cmd "/var/vm/'nombre de la máquina virtual'/'archivo de configuración de vm'.vmx" start 2>/dev/null 
;;
stop) 
/usr/bin/vmware-cmd "/var/vm/'nombre de la máquina virtual'/'archivo de configuración de vm'.vmx" stop trysoft 2> /dev/null 
;;
status) 
if `/usr/bin/vmware-cmd "/var/vm/'nombre de la máquina virtual'/'archivo de configuración de vm'.vmx" getstate 2>/dev/null | grep -q "getstate() = on"` 
then 
echo "en ejecución" 
else 
echo "detenido" 
fi
;;
*) 
echo "Uso: `basename $0` 'archivo de máquina virtual' {start|stop|status}" 
echo "Donde 'archivo de máquina virtual' es como /var/vm/'nombre de la máquina virtual'/'archivo de configuración de vm'.vmx"
;;
esac 
exit 0

Completa las directivas ‘nombre de la máquina virtual’ y ‘archivo de configuración de vm’ con la información necesaria (verifica el directorio /var/vm). Si tienes múltiples Máquinas Virtuales, simplemente copia las líneas.

Este script personalizado primero registrará la Máquina Virtual (necesario cuando se usa un servidor recién instalado!) y luego las iniciará. Tiene que hacerse de esta manera, ya que VMWare Server solo tiene la opción de iniciar automáticamente las VM en el arranque del sistema.
Ahora que has configurado todo, es hora de probar si todo está bien. Inicia el servicio Heartbeat, primero en Server1, luego en Server2.

/etc/init.d/heartbeat start

Si todo está bien, deberías ver la nueva IP virtual apareciendo en tu servidor maestro.

ifconfig |more

Salida:

eth0 Link encap:Ethernet  HWaddr 00:11:09:00:BB:5D  
          inet addr:192.168.0.1  Bcast:192.168.0.255  Mask:255.255.255.0  
          inet6 addr: fe80::211:9ff:fe00:bb5d/64 Scope:Link  
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1  
          RX packets:1025774 errors:0 dropped:0 overruns:0 frame:0  
          TX packets:227653 errors:0 dropped:0 overruns:0 carrier:0  
          collisions:0 txqueuelen:0  
          RX bytes:281072399 (268.0 MiB)  TX bytes:56403081 (53.7 MiB)  
eth0:0    Link encap:Ethernet  HWaddr 00:11:09:00:BB:5D  
          inet addr:192.168.0.10  Bcast:192.168.0.255  Mask:255.255.255.0  
          ...

Ok, si te sientes afortunado y has seguido este tutorial con un poco de sentido común, entonces ahora es el momento de desconectar ese cable de alimentación, sostener tu taza de café y ver cómo la Máquina Virtual se pone en línea en tu segundo servidor.

5. Enlaces

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.