Ist eine Node nicht mehr erreichbar, schaltet das Skript die Domain selbstständig auf die nächste IP aus dem Pool um und meldet dies in Telegram. Der Traffic steht nicht still, und Sie müssen das DNS nicht von Hand anpassen.
Das Skript ist getestet und debuggt und kann im Produktivbetrieb eingesetzt werden. Es wird „wie besehen“ bereitgestellt.
Wozu das dient#
Das Szenario ist jedem bekannt, der mit Traffic arbeitet:
- Eine Website oder Landingpage antwortet plötzlich nicht mehr
- Die Ursache — die Node ist gesperrt oder nicht erreichbar
- Traffic geht verloren, bis Sie den A-Eintrag in Cloudflare manuell ändern
Das geschieht jetzt automatisch.
Wie die Automatisierung funktioniert#
Wir haben ein PHP-Skript vorbereitet, das per Cron oder als Daemon gestartet werden kann. Es erledigt Folgendes:
- Prüft die Erreichbarkeit der Node über eine vorgegebene URL (GET oder POST mit JSON-Payload).
- Kommt innerhalb von 5 Sekunden keine korrekte Antwort (200, 301, 302), gilt die Node als nicht erreichbar.
- Ruft die Liste der A-Einträge in Cloudflare über die API ab.
- Findet die aktuelle IP und ersetzt sie reihum durch die nächste aus dem vorgegebenen Pool:
Pool: [1.1.1.1, 2.2.2.2, 3.3.3.3]
War IP: 2.2.2.2 → wird: 3.3.3.3
War die letzte → wird die erste- Aktualisiert den DNS-Eintrag über die Cloudflare-API.
- Sendet eine Benachrichtigung an Telegram, damit Sie auf dem Laufenden sind.
Was das bringt#
- Minimale Ausfallzeit — die IP wird Sekunden nach dem Ausfall gewechselt.
- Einfache Skalierung — fügen Sie dem Pool beliebig viele Nodes hinzu.
- Vollständige Autonomie — keinerlei manuelle DNS-Änderungen.
- Telegram-Benachrichtigungen — Sie erfahren in Echtzeit von allen Aktionen.
Einrichtung#
- Installieren Sie PHP >= 7.4.
- Geben Sie in der Konfiguration an:
- Domain
- Hostname (z. B.
node1.domain.com) - Cloudflare API Token und Zone ID
- IP-Adressen-Pool
- Telegram-Bot-Token
- Chat-ID (siehe unten)
- Fügen Sie den Skriptaufruf zu Cron hinzu oder starten Sie das Skript als systemd-Dienst.
Telegram-Chat-ID ermitteln#
Es gibt zwei einfache Wege:
Weg 1 — über @userinfobot#
- Öffnen Sie Telegram.
- Suchen Sie den Bot @userinfobot.
- Starten Sie ihn — er zeigt sofort Ihre ID an. Das ist die benötigte chat_id.
Weg 2 — über Ihren eigenen Bot#
Wenn Sie Benachrichtigungen von Ihrem eigenen Bot erhalten möchten:
- Schreiben Sie Ihrem Bot eine beliebige Nachricht.
- Rufen Sie den folgenden Link auf und setzen Sie dabei Ihren Token ein:
https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getUpdatesSuchen Sie in der JSON-Antwort die Zeile:
"chat": {
"id": 123456789,
...
}123456789 — Ihre chat_id.
Skript starten#
Wählen Sie die für Sie passende Methode:
1. Über Cron#
Starten Sie das Skript regelmäßig, z. B. alle 2 Minuten:
*/2 * * * * php /path/to/checker.phpErsetzen Sie /path/to/checker.php durch den tatsächlichen Pfad zu Ihrer Datei.
2. Über Web (per HTTP)#
Platzieren Sie das Skript auf einem Server mit URL-Zugriff, z. B.:
https://yourhost.com/tools/checker.phpDer Aufruf ist möglich:
- aus Monitoring-Systemen (UptimeRobot, Pingdom, HetrixTools)
- aus CI/CD-Pipelines (GitLab CI, Jenkins)
- aus Automatisierungssystemen (Home Assistant, Zabbix)
- manuell über den Browser oder curl:
curl https://yourhost.com/tools/checker.php