Der gängigste Weg ist hierbei für Redundanzen in der Infrastruktur zu sorgen. Beispielsweise werden Linux Serversysteme doppelt ausgelegt. Fällt einer der Knoten aus, übernimmt das Gegenstück.
Mit Keepalived ist es auf sehr einfachem Wege möglich solche Master - Slave (Backup) Konfigurationen einzurichten.
Einführung
Keepalived setzt das VRRP (Virtual Router Redundancy Protocol) ein. Grundlegendes Prinzip ist, dass dem Cluster (bestehend aus Master, Slave/s) eine virtuelle IP-Adresse hinzugefügt wird.
Die Auflösung der IP-Adresse in die MAC Adresse führt dabei immer auf den aktiven Server. Fällt also der Master aus, wird die Zuordnung der Adresse geändert und führt auf den Slave.
Um für eine Redundanz zu sorgen, muss Keepalived auf beiden Servern laufen.
Installation
Unter Debian / Ubuntu erfolgt die Installation von Keepalived über den nachfolgenden Befehl.
sudo apt-get install keepalived
Beim Einsatz von RedHat / CentOS Linux:
sudo yum install keepalived
Im nächsten Schritt wird der automatische Start beim Booten aktiviert.
Für Debian / Ubuntu:
sudo update-rc.d keepalived defaults
RedHat / CentOS:
sudo chkconfig keepalived on
Virtuelle IP erlauben
Um zu erlauben, dass IPs auch auf nicht lokale Schnittstellen zugewiesen werden dürfen, ist ein Eintrag in der /etc/systemctl.conf nötig.
sudo echo "net.ipv4.ip_nonlocal_bind = 1" >> /etc/sysctl.conf
sudo sysctl -p
Konfiguration
Die zentrale Konfiguration von Keepalived unter Linux erfolgt über die Datei /etc/keepalived/keepalived.conf.
Erreichbarkeit / Service prüfen
Zur Konfiguration sollte man sich zunächst Gedanken machen, wie man Nichterreichbarkeit definiert. Die einfachste Methode ist hierbei der Ping.
Allerdings kann ein Server durchaus per Ping erreichbar sein auch wenn der Dienst (SMB, NFS, Proxy, etc.) nicht reagiert.
Daher hat sich das Prüfen des entsprechenden Dienstes etabliert. Der erste Teil der Konfigurationsdatei besteht daher aus dem folgenden Block.
vrrp_script chk_haproxy {
script "killall -0 haproxy" # Dienst prüfen
interval 2 # Alle 2 Sekunden prüfen
weight 2 # 2 Punkte hinzufügen wenn OK
}
Eine Zuweisung von Master / Slave erfolgt dabei über die Priorität.Hierbei gilt höher = wichtiger.
Aus diesem Grund setzen wir 101 auf dem Master und 100 auf dem Backup Server.
Diese Abfrage lässt sich natürlich beliebig anpassen. So könnte man beispielsweise ein eigenes Bashskript für komplexere Abfragen konstruieren. Wichtig ist nur der Rückgabewert.
- 0 = true - Erreichbar
- 1 = false - Nicht erreichbar
Master
Für den Master ergibt sich dann die folgende Konfiguration.
vrrp_script chk_haproxy {
script "killall -0 haproxy" # Dienst prüfen
interval 2 # Alle 2 Sekunden prüfen
weight 2 # 2 Punkte hinzufügen wenn OK
}
vrrp_instance Instance0 {
interface eth0 # Zu überwachendes Interface
state MASTER
virtual_router_id 51 # ID der Route
priority 101 # 101 - Master, 100 - Backup
virtual_ipaddress {
192.168.1.100 # Die virtuelle IP Adresse
}
track_script {
chk_haproxy
}
}
Backup
Auf dem Backup Server, welcher die Hochverfügbarkeit des Clusters gewährleisten soll sieht die Konfiguration wie folgt aus. Es wird lediglich die Priorität angepasst.
vrrp_script chk_haproxy {
script "killall -0 haproxy" # Dienst prüfen
interval 2 # Alle 2 Sekunden prüfen
weight 2 # 2 Punkte hinzufügen wenn OK
}
vrrp_instance Instance0 {
interface eth0 # Zu überwachendes Interface
state MASTER
virtual_router_id 51 # ID der Route
priority 100 # 101 - Master, 100 - Backup
virtual_ipaddress {
192.168.1.100 # Die virtuelle IP Adresse
}
track_script {
chk_haproxy
}
}
Keepalived starten
Die Konfiguration ist nun abgeschlossen. Um Keepalived zu starten und damit auch die virtuelle IP im Netzwerk verfügbar zu machen, genügt es den Dienst zu neuzustarten.
sudo service keepalived restart
Sollte es dennoch zu Problemen kommen hilft meist ein Neustart der beiden Serversysteme.
Fazit
Die Konfiguration von Keepalived gestaltet sich sehr übersichtlich. Gerade für Linux Server bietet sich somit eine solide Basis für hochverfügbare Cluster mit Failover Funktionen.
Ähnliche Artikel
- NFS Server einrichten mit Ubuntu
- NFS Client einrichten mit Ubuntu
- FTP Server einrichten mit Ubuntu
- Samba Server einrichten mit Ubuntu
- Ubuntu installieren
- Jolicloud 1.2 Installation
- HAProxy Load Balancer mit Ubuntu / Debian
- USV Management mit APCUPSd auf Debian / Ubuntu
- Layer 4 Load Balancing mit IPVS und Debian / Ubuntu
- Icinga Server Monitoring installieren und einrichten mit Ubuntu
Michael Kostka
17.07.2014 08:39
dies kannst du über Notify Skripte realisieren:
https://tobrunet.ch/2013/07/keepalived-check-and-notify-scripts/#notify-script
Allerdings sollte die Datenbank auf dem Slave immer laufen. Wenn du sie erst im Failover Fall hochfährst kommt es zu ungewollten Verbindungsabbrüchen.
Viele Grüße
Michael
Claus ALbrecht - Brich
15.07.2014 09:49
wie starte ich auf dem slave dann eine Datenbank (pgsql) und stoppe Sie auf dem Master.
Oder geht das gar nicht.