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

Скачать скрипт