Failover-IP - Bei Serverausfall Störungsseite anzeigen

In diesem Beispiel wird davon ausgegangen, dass ein dedizierter und ein virtueller Server zur Verfügung stehen. Der dedizierte Server wird hierbei alle regulären Webseiten enthalten, ob der Webserver manuell oder via Plesk verwaltet wird, spielt keine Rolle. Der V-Server beinhaltet die Störungs-Seite, die angezeigt werden soll, wenn es zu einem Ausfall des dedizierten Servers kommt. Der V-Server wird ohne Plesk installiert, in diesem Beispiel wird das Betriebssystem Debian verwendet.

Konfiguration der Domains

Die A-Records der Domain müssen auf die Failover-IP eingestellt werden. Dies ist über das zentrale Kundenmanagement möglich ( https://zkm.webtropia.com > DNS System > Zone bearbeiten  ).

Konfiguration des dedizierten Servers

Beim dedizierten Server ist die Failover-IP im System sowie in Plesk zu konfigurieren. Wenn Sie Plesk nicht nutzen achten Sie darauf, dass die Failover-IP auf dem Webserver den Sie verwenden konfiguriert wurde. Stellen Sie nun die Failover-IP auf Ihren dedizierten Server um, dies ist über das zentralen Kundenmanagment (ZKM) > Dedicated Root-Server > Failover-IP-Verwaltung möglich.

Konfiguration des V-Servers

Auf dem V-Server installieren Sie zunächst den Apache Webserver, welcher die Störungsseite ausliefern wird.

apt-get update && apt-get install apache2

Für das Script wird außerdem das Paket bc benötigt.

apt-get install bc

Verbinden Sie sich im Anschluss via SSH ( bzw. SCP )  zum V-Server und legen Sie die Störungs-Seite ( index.html ) unter /var/www ab. Wenn Sie die IP des V-Servers in den Browser eintippen sollten Sie die Störungs-Seite bereits sehen.

Als Nächstes muss ein Script installiert werden, welches die IP umschwenkt wenn der dedizierte Server ausfällt. Das Script könnte z.B. so aussehen:

#!/bin/bash
PATH=/bin:/usr/bin
REMOTE_IP="192.168.100.101"
API_LINK="
https://zkm.fastit.net/Api/Failover/FailoverAssign?job=example123"
while [ 1 ]; do
    IS_ONLINE=$(ping -W 10 -c 1 -n $REMOTE_IP | grep "64 bytes from $REMOTE_IP:" | wc -l | bc)
    if [ $IS_ONLINE = 0 ]; then
        IS_ONLINE_DEEP=$(ping -W 10 -c 1 -n $REMOTE_IP | grep "64 bytes from $REMOTE_IP:" | wc -l | bc)
        if [ $IS_ONLINE_DEEP = 0 ]; then
           
echo "Konnte remote Host nicht erreichen. Uebernehme IP."
            echo "$(date) [failover] Konnte remote Host nicht erreichen. Uebernehme IP." >> /var/log/overtake-ip.log
            wget -O /dev/null "$API_LINK"
            # Bei einem dedizierten Server müsste hier noch die IP hochgefahren werden.
        fi
    fi
done
exit 0

Das Script läuft in einer Endlosschleife. Geht ein Ping verloren, wird ein zweiter Ping gesendet, geht dieser ebenfalls verloren wird die API getriggert und das Script beendet. Achten Sie darauf, dass die IP in REMOTE_IP die Haupt-IP des dedizierten Servers und nicht die Failover-IP ist.

Am Besten speichern Sie das Script nach /root/overtake-ip.sh , es genügt das Script über die Datei /etc/rc.local zu starten. Tragen Sie also folgende Zeile in der Datei ein:

/root/overtake-ip.sh &

Das & am Ende startet den Prozess im Hintergrund. Achten Sie darauf, den Eintrag unbedingt vor der Zeile "exit 0" vorzunehmen.

Wie mit einer Störung umzugehen ist

Wenn der Fall eintritt, dass der dedizierte Server nicht mehr erreichbar ist, wird die Failover-IP - durch das Script - über die Api auf dem V-Server hochgefahren, dadurch ist über die Failover-IP die Störungs-Seite zu sehen. Wenn die Störung des dedizierten Servers behoben ist, können Sie die Failover-IP über das zentralen Kundenmanagment (ZKM) Dedicated Root-Server > Failover-IP-Verwaltung  ) wieder auf den dedizierten Server routen. Anschließend müssen Sie das Script auf dem V-Server wieder starten, da dieses bei der Übernahme der IP beendet wurde. Das Kommando lautet:

/root/overtake-ip.sh &

Kommentieren nicht möglich