Virtuelle-IP für Failover-Szenarien mit heartbeat

Veröffentlicht: Februar 13, 2016 in Linux
Schlagwörter:, , ,

heartbeatheartbeat ist eine ClusterManagment-Software, welche zum Linux-HA-Projekt gehört.

In diesem Artikel wird beschrieben wie man Heartbeat zum Umschalten einer virtuellen IP verwendet (alternativ zum bereits beschriebenen ucarp). Heartbeat kann aber deutlich mehr leisten, z.B. die Überwachung von Diensten. Eine gute Übersicht findet man in der englischsprachigen Wikipedia.

ucarp oder heartbeat für IP-Failover?

Sofern es lediglich um die Nutzung einer virtuellen IP in einem Failover-Szenario geht, bietet keines der beiden Tools signifikante Vor -oder Nachteile (Ausnahme VMs). Während ucarp zur Kommunikation zwischen den Hosts Multicast-Pakete verwendet, kann heartbeat zusätzlich auch Unicast oder Broadcast verwenden. Bei der Verwendung von VMs, empfiehlt es sich allerdings Heartbeat mit Unicast zu verwenden, da für ucarp ggf. weitere Konfigurationen am vSwitch notwendig sind.

Szenario
  • Node1 (Master): IP = 192.168.1.201
  • Node2 (Slave)   : IP = 192.168.1.202
  • Virtuelle-IP              = 192.168.1.101
  • zur Kommunikation zwischen den Nodes wird Unicast über eth0 verwendet
Installation & Konfiguration

Im ersten Schritt installieren wir heartbeat auf allen Systemen, unter Debian/Ubuntu geht dies über:

apt-get install heartbeat

Die Konfiguration ist für beide Seiten identisch, daher ist ausreichend die Config auf einer Seite zu erstellen und die Files dann auf die andere Seite zu kopieren.

/etc/ha.d/ha.cf
debugfile /var/log/ha-debug 
logfile /var/log/ha-log 
logfacility local0 
keepalive 2 
deadtime 10 
ucast eth0 192.168.1.201 
ucast eth0 192.168.1.202 
auto_failback off 
node Node1 Node2 
ping 192.168.1.101

Die ersten 3 Zeilen enthalten lediglich Informationen zum Logging und sollen uns dieser Stelle nicht weiter interessieren.

Zeile 2 & 3:

  • keepalive – Zeitintervall in Sekunden in welchem heartbeat-Pakete gesendet werden und somit die Verfügbarkeit der Nodes geprüft wird
  • deadtime – Zeit in Sekunden bis eine Node als Tod erklärt wird (beim Ausbleiben von Keepalive-Paketen)

Die Zeilen 6 & 7 enthalten Informationen zu den beiden Nodes (Zeile 6 = Node1, Zeile7 = Node2). Da jede Seite ihre eigenen Informationen kennt, werden die eigenen Angaben ignoriert => Node1 ignoriert Zeile6 und Node 2 ignoriert Zeile 7. Die Config setzt sich dabei aus den folgenden 3 Bestandteilen zusammen.

  • ucast – Unicast
  • eth0 – Schnitstelle
  • IP-Adresse

In einigen Szenarien sollte man der Funktion auto_failback (Zeile8) besondere Aufmerksamkeit schenken. Gehen wir einmal davon aus das Node1 ein moderner Server ist und Node2 schon etwas in die Jahre gekommen und eigentlich nur eine Lösung für den Notfall darstellt. Hier sollte man auto_failback indem Fall aktivieren (on). Fällt Node1 aus wird nach 10 Sekunden (deadtime) auf Node2 geschwenkt. Ist Node1 dann wieder erreichbar sollte natürlich zurückgeschwenkt werden, schließlich möchte man nicht auf der Notfalllösung laufen.

In den letzten beiden Zeilen gibt es nicht viel zu beachten:

  • node – Aufzählung der Nodes im Cluster
  • ping – ping auf die vituelle IP der beiden Nodes, anhand des Pings wird ermittelt ob die aktive Node erreichbar ist

 

/etc/ha.d/haresources
Node1 192.168.1.101

Hier wird lediglich die bevorzugte Node und die umzuschaltende Ressource (Virtuelle IP) angegeben.

/etc/ha.d/authkeys
auth 3
#1 crc
#2 sha1 HI!
3 md5 Hello!

Als Key sollte man einen SHA1 -oder MD5-Hash bevorzugen.

 

Abschliessend muss heartbeat auf beiden Seiten noch neu gestartet werden:

service heartbeat restart
Advertisements

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden /  Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden /  Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden /  Ändern )

w

Verbinde mit %s