Нода стала недоступною — скрипт сам перемкне домен на наступний 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

Завантажити скрипт