VMware Failover · 3 min read · Dec 01, 2025

Virtuelle Maschinenreplikation & Failover mit VMWare Server & Debian Etch (4.0) - Seite 3

4. Konfiguration des Heartbeat-Pakets

Die Installation des Heartbeat-Pakets ermöglicht automatisches Failover und Ressourcenmanagement im Falle eines Ressourcen- und/oder Hardwareausfalls.

In diesem Tutorial werde ich Heartbeat über das Netzwerk verwenden, aber es ist auch möglich, Heartbeat mit einem seriellen Kabel und anderen Methoden zu verwenden. Heartbeat wird Updates von beiden Servern überprüfen, und wenn keine weiteren Updates empfangen werden, wird ein Failover und die Übernahme der angegebenen Ressourcen (in unserem Fall DRBD und VMWare) eingeleitet.

SOFERN NICHT ANDERS ANGEGEBEN, WERDEN ALLE BEFEHLE AUF BEIDEN SERVERN AUSGEFÜHRT

OK, zur Konfiguration. Zu Ihrer Bequemlichkeit können Sie die folgenden Konfigurationsdateien verwenden, da sie auf dieses Tutorial zugeschnitten sind. Heartbeat benötigt 3 Dateien zur Konfiguration, nämlich: “ha.cf”, “haresources” und “authkeys”. Bearbeiten Sie diese entsprechend mit Ihrem bevorzugten Editor:

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  ## stellen Sie sicher, dass beide Namen zugänglich sind - überprüfen Sie /etc/hosts
node    server2
ping 192.168.0.254  ## Geben Sie eine IP-Adresse ein, die vom ETH0-Netzwerk aus anpingbar ist !!
respawn hacluster /usr/lib/heartbeat/ipfail

HINWEIS: Diese ha.cf-Datei ermöglicht ein Failover im Falle eines Netzwerkverbindungsfehlers auf ETH0 und/oder eines allgemeinen Serverausfalls. Probleme mit ETH1 werden NICHT dazu führen, dass ein Failover auftritt!

Jetzt bearbeiten wir die Datei “authkeys”:

nano /etc/ha.d/authkeys
auth 3
3 md5 failover  ## dies ist nur eine Zeichenfolge, geben Sie ein, was Sie möchten! auth 3 md5 verwendet md5-Verschlüsselung

Aber wir müssen diese Datei auch so chmodden, dass sie nur von “root” lesbar ist:

chmod 600 /etc/ha.d/authkeys

Und zuletzt bearbeiten wir die Datei “haresources”, die die Failover-Ressourcen enthält.

nano /etc/ha.d/haresources
server1 192.168.0.10 drbddisk::vm1 Filesystem::/dev/drbd0::/var/vm::ext3 vmstart
# Erklärung:
# Primärer Servername --> virtuelle IP-Adresse, die verwendet werden soll --> DRBD-Ressource, wie in /etc/drbd.conf konfiguriert
# --> wo die DRBD-Ressource und der Dateisystemtyp gemountet werden sollen --> Ressource, die im Falle eines Failovers gestartet/gestoppt werden soll
# die "vmstart"-Ressource ist ein benutzerdefiniertes Skript, das für VMWare Server benötigt wird, da Sie Heartbeat nicht die Kontrolle über
# die VMware-Dienste übernehmen lassen können, sonst erhalten Sie die gefürchteten "nicht für diese Maschine konfiguriert"-Fehler!

Bevor wir fortfahren, müssen wir das benutzerdefinierte “vmstart”-Skript erstellen, um sicherzustellen, dass virtuelle Maschinen im Falle eines Failovers automatisch auf dem Server gestartet werden. Bei anderen Ressourcen wie Apache, Mysql, NFS … hätten wir einfach die Startskripte für sie aus den rc.d-Verzeichnissen entfernen können, aber bei VMWare ist dies nicht möglich, da sie für das ordnungsgemäße Funktionieren der Dienste erforderlich sind. Daher benötigen wir ein benutzerdefiniertes Skript, um die virtuellen Maschinen im Falle eines Failovers zu starten, da die VMWare-Dienste bereits vor dem Failover ausgeführt werden!

Das “vmstart”-Skript muss im Verzeichnis “/etc/ha.d/resource.d/“ abgelegt werden, da Heartbeat dort danach suchen wird.

nano /etc/ha.d/resource.d/vmstart
#!/bin/bash 
case "$1" in 
start) 
/usr/bin/vmware-cmd -s register "/var/vm/'virtual machine name'/'vm config file'.vmx" 2>/dev/null
/usr/bin/vmware-cmd "/var/vm/'virtual machine name'/'vm config file'.vmx" start 2>/dev/null 
;;
stop) 
/usr/bin/vmware-cmd "/var/vm/'virtual machine name'/'vm config file'.vmx" stop trysoft 2> /dev/null 
;;
status) 
if `/usr/bin/vmware-cmd "/var/vm/'virtual machine name'/'vm config file'.vmx" getstate 2>/dev/null | grep -q "getstate() = on"` 
then 
echo "running" 
else 
echo "stopped" 
fi
;;
*) 
echo "Usage: `basename $0` 'virtual machine file' {start|stop|status}" 
echo "Wo "virtual machine file" wie /var/vm/'virtual machine name'/'vm config file'.vmx ist"
;;
esac 
exit 0

Füllen Sie die Anweisungen ‘virtual machine’ und ‘vm config file’ mit den notwendigen Informationen aus (überprüfen Sie das Verzeichnis /var/vm). Wenn Sie mehrere virtuelle Maschinen haben, kopieren Sie einfach die Zeilen.

Dieses benutzerdefinierte Skript wird zuerst die virtuelle Maschine registrieren (notwendig, wenn Sie einen neu installierten Server verwenden!) und sie dann starten. Es muss auf diese Weise erfolgen, da VMWare Server nur die Option hat, VMs beim Systemstart automatisch zu starten. Jetzt, da Sie alles konfiguriert haben, ist es an der Zeit zu testen, ob alles in Ordnung ist. Starten Sie den Heartbeat-Dienst, zuerst auf Server1, dann auf Server2.

/etc/init.d/heartbeat start

Wenn alles in Ordnung ist, sollten Sie die neue virtuelle IP auf Ihrem Master-Server sehen.

ifconfig |more

Ausgabe:

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, wenn Sie sich glücklich fühlen und dieses Tutorial mit etwas gesundem Menschenverstand befolgt haben, dann ist es jetzt an der Zeit, das Stromkabel herauszuziehen, Ihre Kaffeetasse festzuhalten und zuzusehen, wie die virtuelle Maschine auf Ihrem zweiten Server online geht.

5. Links

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.