Un noeud devient indisponible — le script bascule lui-même le domaine sur l’IP suivante du pool et vous en informe dans Telegram. Le trafic n’est pas interrompu, et vous n’avez pas à modifier le DNS manuellement.
Le script a été testé et débogué, il peut être utilisé en production. Il est fourni « tel quel ».
Pourquoi est-ce nécessaire#
Le scénario est familier à tous ceux qui travaillent avec le trafic :
- Le site ou la page d’atterrissage cesse soudainement de répondre
- La cause : le noeud est bloqué ou indisponible
- Le trafic est perdu tant que vous ne modifiez pas manuellement l’enregistrement A dans Cloudflare
Désormais, cela se fait automatiquement.
Comment fonctionne l’automatisation#
Nous avons préparé un script PHP qui peut être exécuté via cron ou en tant que démon. Il effectue les opérations suivantes :
- Vérifie la disponibilité du noeud via une URL définie (GET ou POST avec payload JSON).
- Si aucune réponse correcte (200, 301, 302) n’est reçue dans les 5 secondes, le noeud est considéré comme indisponible.
- Interroge la liste des enregistrements A dans Cloudflare via l’API.
- Trouve l’IP actuelle et la remplace par la suivante du pool défini, de manière cyclique :
Pool : [1.1.1.1, 2.2.2.2, 3.3.3.3]
IP actuelle : 2.2.2.2 → nouvelle : 3.3.3.3
Si c'est la dernière → retour à la première- Met à jour l’enregistrement DNS via l’API Cloudflare.
- Envoie une notification dans Telegram pour que vous soyez informé.
Ce que cela apporte#
- Interruption minimale — l’IP change quelques secondes après la panne.
- Mise à l’échelle simple — ajoutez au pool autant de noeuds que vous le souhaitez.
- Autonomie totale — aucune modification manuelle du DNS.
- Notifications Telegram — vous êtes informé de toutes les actions en temps réel.
Comment configurer#
- Installez PHP >= 7.4.
- Indiquez dans la configuration :
- le domaine
- le nom d’hôte (par exemple,
node1.domain.com) - le Cloudflare API Token et le Zone ID
- le pool d’adresses IP
- le token du bot Telegram
- le chat ID (voir ci-dessous)
- Ajoutez l’appel du script dans le cron ou lancez-le en tant que service systemd.
Comment obtenir le chat ID Telegram#
Il existe deux méthodes simples :
Méthode 1 — via @userinfobot#
- Ouvrez Telegram.
- Trouvez le bot @userinfobot.
- Lancez-le — il affichera immédiatement votre ID. C’est le chat_id recherché.
Méthode 2 — via votre propre bot#
Si vous souhaitez recevoir des notifications de votre propre bot :
- Envoyez un message quelconque à votre bot.
- Accédez au lien suivant en y insérant votre token :
https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getUpdatesTrouvez dans la réponse JSON la ligne :
"chat": {
"id": 123456789,
...
}123456789 est votre chat_id.
Comment exécuter le script#
Choisissez la méthode qui vous convient :
1. Via cron#
Exécutez le script régulièrement, par exemple toutes les 2 minutes :
*/2 * * * * php /path/to/checker.phpRemplacez /path/to/checker.php par le chemin réel vers votre fichier.
2. Via le web (par HTTP)#
Placez le script sur un serveur accessible par URL, par exemple :
https://yourhost.com/tools/checker.phpVous pouvez l’appeler :
- depuis des systèmes de monitoring (UptimeRobot, Pingdom, HetrixTools)
- depuis un pipeline CI/CD (GitLab CI, Jenkins)
- depuis des systèmes d’automatisation (Home Assistant, Zabbix)
- manuellement via un navigateur ou curl :
curl https://yourhost.com/tools/checker.php