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