Konfiguration von Keepalived für Hochverfügbarkeit und IP-Failover unter CentOS und RHEL

So richten Sie ein Failover für Ihre Linux-Proxyserver mit keepalived ein

Hochverfügbarkeit unter Linux einzurichten ist nicht immer einfach, insbesondere wenn man seine Proxy-Server reibungslos betreiben möchte. Fällt ein Server aus oder gibt es Netzwerkprobleme, erhalten Clients Fehlermeldungen, weil die IP-Adresse nicht korrekt übergeben wird. Hier kommt keepalived ins Spiel: Es sorgt dafür, dass ein Server nahtlos die Aufgaben eines anderen übernimmt und vermeidet so lästige Ausfallzeiten. Der Trick besteht darin, VRRP korrekt zu konfigurieren, damit die virtuellen IPs zwischen den Servern wechseln. Achten Sie darauf, welche IPs real und welche virtuell sind, da eine falsche Zuordnung zu Netzwerkproblemen führen kann. Hier finden Sie eine Schritt-für-Schritt-Anleitung für die Einrichtung eines Linux-Failover-Clusters mit keepalived, speziell für Squid-Proxy-Server. Bisher funktioniert es unter CentOS 7, und vieles davon ist auch auf RHEL-basierte Distributionen übertragbar.

Wie man unter Linux einen Failover-Cluster mit keepalived erstellt

Grundsätze des VRRP und was Sie darüber wissen müssen

Falls Sie noch nie mit VRRP gearbeitet haben, hier eine kurze Erklärung: Eine VIP (Virtual IP) ist eine dynamische IP-Adresse, die zwischen Servern wechselt. Das Konzept ist allgemein bekannt, aber VRRP macht es dynamisch. Fällt Ihr primärer Server (der Master) aus, übernimmt der Backup-Server. VRRP verwendet eine Virtual Router ID (VRID), um Konflikte zwischen verschiedenen Gruppen zu vermeiden. Prioritätsnummern bestimmen, welcher Server zum Master wird. Heartbeat-Pakete (Multicasts auf 224.0.0.18) signalisieren allen anderen Servern: „Ich bin erreichbar.“ Erhält der Backup-Server keine Rückmeldung vom Master, springt er ein. Wichtig: Stellen Sie sicher, dass Ihr Switch Multicast-Verkehr unterstützt, sonst kann es zu Problemen kommen. Verwenden Sie außerdem nicht Ihre realen IP-Adressen als virtuelle Adressen. Fällt ein Server aus und Ihre IP-Adresse ändert sich, kann es passieren, dass die Verbindung zum Netzwerk unterbrochen wird, bis VRRP dies behoben hat. In manchen Konfigurationen mag das ungewöhnlich erscheinen, aber vermeiden Sie einfach die Wiederverwendung realer IP-Adressen als VIPs, um alles übersichtlich zu halten.

Schritt 1: Installation von keepalived und Basiskonfiguration

  • Verwenden Sie yum (oder yum/dnf ) zur Installation:
# yum install keepalived
  • Nach der Installation öffnen Sie die Datei `/etc/keepalived/keepalived.conf`, um mit der Konfiguration zu beginnen. Nur keine Scheu! Hier ein kurzer Vorgeschmack, wie Ihre Konfiguration auf den einzelnen Servern aussehen könnte:
  • vrrp_script chk_squid_service { script "/usr/sbin/squid -k check" interval 3 } vrrp_instance proxy_ip1 { state MASTER interface eth0 virtual_router_id 1 priority 255 virtual_ipaddress { 192.168.2.101/24 dev eth0 label eth0:1 } track_interface { eth1 } track_script { chk_squid_service } } vrrp_instance proxy_ip2 { state BACKUP interface eth0 virtual_router_id 2 priority 100 virtual_ipaddress { 192.168.2.102/24 dev eth0 label eth0:2 } track_interface { eth1 } track_script { chk_squid_service } } 

    Schritt 2: Umgang mit Netzwerk- und Firewall-Einstellungen

    Bevor Sie keepalived starten, überprüfen Sie Ihre iptables-Regeln. Sie müssen VRRP-Traffic (Multicast 224.0.0.18/8) zulassen. Etwa so:

    # iptables -A INPUT -i eth0 -d 224.0.0.0/8 -j ACCEPT # iptables -A INPUT -p vrrp -i eth0 -j ACCEPT

    Bei manchen Konfigurationen blockiert die Standard-Firewall dies, daher müssen Sie den Zugriff zulassen. Vergessen Sie nicht, keepalived so zu aktivieren, dass es beim Systemstart automatisch startet.

    # systemctl enable keepalived # systemctl start keepalived

    Sobald das System läuft, überprüfen Sie Ihre Schnittstellen:

    # ip a show eth0

    Sobald beide Server betriebsbereit sind, sollten Sie die Ihnen zugewiesenen virtuellen IPs auf der Schnittstelle sehen.

    Schritt 3: Sicherstellen, dass Keepalived auf Dienst- und Schnittstellenausfälle reagiert

    Das ist der springende Punkt: die Überwachung Ihrer Anwendungen (wie Squid) und Schnittstellen. So fügen Sie Prüfungen hinzu:

    vrrp_script chk_squid_service { script "/usr/sbin/squid -k check" interval 3 } vrrp_instance proxy_ip1 {...track_script { chk_squid_service } } vrrp_instance proxy_ip2 {...track_script { chk_squid_service } } 

    Dieses Skript wird alle 3 Sekunden ausgeführt. Falls Squid nicht erreichbar ist, meldet keepalived einen Serverfehler, und die VIP wird auf den funktionierenden Knoten verschoben. Es ist äußerst praktisch, um Probleme wie App-Abstürze oder Netzwerkausfälle zu erkennen.

    Schritt 4: Failover-Test – Ja, absichtlich Fehler verursachen.

    Sobald alles eingerichtet ist, kann der Test durchgeführt werden. Deaktivieren Sie eth0 auf proxy-serv01 ( ifconfig eth0 downoder ip link set eth0 down), und prüfen Sie anschließend, ob proxy-serv02 die virtuelle IP-Adresse (VIP) übernimmt. Führen Sie folgenden Befehl aus:

    # ip a show eth0

    Und beobachten Sie die Protokolle:

    # cat /var/log/messages | grep -i keepalived

    Sie sollten Meldungen sehen, die darauf hinweisen, dass der erste Server in den FAULT-Modus wechselt und der Backup-Server zum MASTER-Modus wird. Wenn Sie eth0 wieder einschalten, sollte der Server automatisch zurückwechseln, und die Protokolle sollten die Änderung bestätigen.

    Gleiches gilt für die Simulation von Ausfällen des externen Netzwerks – deaktivieren Sie eth1, und Sie sollten sehen, wie keepalived dies übernimmt (sofern mit track_interface konfiguriert), wobei die Rollen nach Bedarf getauscht werden.

    Vergessen Sie nicht, Squid manuell zu stoppen, um das ausfallsichere Verhalten zu überprüfen:

    # systemctl stop squid

    Aus den Protokollen geht hervor, dass keepalived erkennt, dass der Dienst nicht mehr funktioniert, und die IP-Adresse entsprechend ändert.

    Zusammenfassung

    Diese Konfiguration, obwohl anfangs etwas umständlich, erwies sich nach einigen Anpassungen als überraschend zuverlässig. Entscheidend ist, dass die virtuellen IPs nicht direkt mit realen Schnittstellen verknüpft sind und die Prüfungen präzise durchgeführt werden. Auf einem einzelnen Rechner kann es ein- oder zweimal zu Ausfällen kommen, bevor sich das System stabilisiert. In einer produktiven Umgebung werden unerwartete Ausfälle jedoch deutlich minimiert. Die Implementierung von Integritätsprüfungen sowohl für Netzwerkschnittstellen als auch für Anwendungsdienste erhöht die Ausfallsicherheit und kann im Ernstfall Abhilfe schaffen.

    Zusammenfassung

    • Installieren Sie Keepalived mit dem Befehl `yum install keepalived`.
    • Definieren Sie Ihre VRRP-Instanzen sorgfältig, legen Sie Prioritäten fest und spezifizieren Sie virtuelle IPs.
    • Firewall-Regeln für Multicast-Datenverkehr konfigurieren
    • Fügen Sie Integritätsprüfungen für Apps und Schnittstellen hinzu
    • Test durch absichtliches Stören des Netzwerks und der Dienste

    Schlussworte

    Hochverfügbarkeit einzurichten ist zwar etwas knifflig, aber wenn es erst einmal funktioniert, ist es eine enorme Erleichterung. Entscheidend ist die gründliche Überwachung und das Testen. Hoffentlich bietet dies eine solide Grundlage für eine ausfallsichere Proxy-Konfiguration. Ich habe etwas gefunden, das auf verschiedenen Systemen funktioniert hat; hoffentlich hilft es jemandem, Ausfallzeiten zu reduzieren.