Нода стала недоступною — скрипт сам перемкне домен на наступний IP із пулу та повідомить про це в Telegram. Трафік не простоює, а вам не потрібно редагувати DNS вручну.
Скрипт протестований та налагоджений, його можна використовувати в продакшені. Постачається «як є».
Навіщо це потрібно#
Сценарій знайомий кожному, хто працює з трафіком:
- Сайт або лендінг раптово перестає відповідати
- Причина — нода заблокована або недоступна
- Трафік втрачається, поки ви вручну не зміните A-запис у Cloudflare
Тепер це відбувається автоматично.
Як працює автоматизація#
Ми підготували PHP-скрипт, який можна запускати за cron або як демон. Він робить таке:
- Перевіряє доступність ноди за заданим URL (GET або POST з JSON-пейлоадом).
- Якщо за 5 секунд немає коректної відповіді (200, 301, 302) — нода вважається недоступною.
- Запитує список A-записів у Cloudflare через API.
- Знаходить поточний IP та замінює його на наступний по колу із заданого пулу:
Пул: [1.1.1.1, 2.2.2.2, 3.3.3.3]
Був IP: 2.2.2.2 → стане: 3.3.3.3
Був останній → стане перший- Оновлює DNS-запис через Cloudflare API.
- Надсилає сповіщення в Telegram, щоб ви були в курсі.
Що це дає#
- Мінімум простою — IP змінюється через секунди після збою.
- Просте масштабування — додавайте в пул скільки завгодно нод.
- Повна автономність — жодних ручних правок DNS.
- Telegram-сповіщення — ви дізнаєтеся про всі дії в реальному часі.
Як налаштувати#
- Встановіть PHP >= 7.4.
- Вкажіть у конфігу:
- домен
- ім’я хоста (наприклад,
node1.domain.com) - Cloudflare API Token та Zone ID
- пул IP-адрес
- токен Telegram-бота
- chat ID (див. нижче)
- Додайте виклик скрипта в cron або запустіть як systemd-службу.
Як отримати Telegram chat ID#
Є два прості способи:
Спосіб 1 — через @userinfobot#
- Відкрийте Telegram.
- Знайдіть бота @userinfobot.
- Запустіть його — він одразу покаже ваш ID. Це і є потрібний chat_id.
Спосіб 2 — через свого бота#
Якщо ви хочете отримувати сповіщення від власного бота:
- Напишіть будь-яке повідомлення своєму боту.
- Перейдіть за посиланням, підставивши свій токен:
https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getUpdatesЗнайдіть у JSON-відповіді рядок:
"chat": {
"id": 123456789,
...
}123456789 — ваш chat_id.
Як запускати скрипт#
Обирайте зручний спосіб:
1. Через cron#
Запускайте скрипт регулярно, наприклад, кожні 2 хвилини:
*/2 * * * * php /path/to/checker.phpЗамініть /path/to/checker.php на реальний шлях до вашого файлу.
2. Через веб (по HTTP)#
Розмістіть скрипт на сервері з доступом за URL, наприклад:
https://yourhost.com/tools/checker.phpМожна викликати:
- із систем моніторингу (UptimeRobot, Pingdom, HetrixTools)
- із CI/CD пайплайну (GitLab CI, Jenkins)
- із систем автоматизації (Home Assistant, Zabbix)
- вручну через браузер або curl:
curl https://yourhost.com/tools/checker.php