Что такое DNS Failover
DNS Failover — это автоматическая замена IP-адреса в A или AAAA-записи, когда основной сервер перестаёт отвечать. Специальный мониторинг постоянно опрашивает основной хост, и при обнаружении сбоя система переписывает запись зоны на резервный сервер без участия человека. Это дешёвая альтернатива балансировщику нагрузки для сайтов, которым не нужна постоянная работа двух серверов одновременно, а нужна только страховка на случай отказа основного.
Технология не заменяет резервное копирование и не спасает от потери данных — она решает только задачу доступности домена, пока основная инфраструктура восстанавливается.
Как работает проверка доступности
В основе DNS Failover — health check: внешний агент раз в 10–60 секунд обращается к серверу по HTTP, TCP или ping и ждёт корректного ответа. Настройка обычно выглядит так:
check_type: http
url: https://example.com/health
interval: 30s
timeout: 5s
failures_before_switch: 3Порог в несколько подряд неудачных проверок (в примере — 3) нужен, чтобы не переключаться на резерв из-за одной случайной задержки в сети. После срабатывания порога система заменяет A-запись на IP резервного сервера и ждёт возврата основного к жизни, чтобы переключить обратно.
Настройка низкого TTL для быстрого переключения
Скорость, с которой посетители увидят новый IP, определяется значением TTL записи, а не скоростью самого мониторинга. Пока старое значение живёт в кэше резолвера у провайдера пользователя, тот продолжит стучаться в упавший сервер. Для доменов с Failover TTL обычно снижают до 60–300 секунд:
example.com. 60 IN A 203.0.113.10Подробно про выбор значения TTL и его влияние на скорость обновления — в статье про настройку TTL. Здесь важно помнить компромисс: слишком низкий TTL увеличивает число запросов к DNS-серверам и немного повышает задержку резолвинга, слишком высокий — тормозит переключение при сбое.
DNS Failover и Anycast: в чём разница
DNS Failover и Anycast решают похожую задачу — доступность сервиса — но разными способами. Failover меняет содержимое записи и зависит от TTL и скорости обновления кэшей резолверов по всему миру, поэтому переключение занимает минуты. Anycast отдаёт один и тот же IP с нескольких точек присутствия одновременно, а маршрутизация на уровне BGP сама уводит трафик от упавшего узла — переключение происходит на уровне сети, а не DNS, и укладывается в секунды.
Anycast сложнее и дороже в развёртывании, поэтому для небольших проектов DNS Failover остаётся разумным компромиссом между стоимостью и временем простоя.
Ограничения и подводные камни
| Проблема | Почему возникает |
|---|---|
| Часть пользователей ещё видит старый IP | Резолвер провайдера держит запись дольше TTL, игнорируя его |
| Ложное переключение | Здоровье проверялось с одной точки, а сеть моргнула локально |
| Переключение произошло, но сайт всё равно недоступен | На резервном сервере не синхронизированы данные или конфигурация |
| Переключение назад не происходит | Основной сервер отвечает на health check, но приложение на нём всё ещё сломано |
Чек-лист внедрения DNS Failover
- Настройте health check по тому же протоколу, что использует реальный трафик, а не просто ping.
- Снизьте TTL записи заранее, за сутки до включения Failover, чтобы старые значения выпали из кэшей.
- Держите резервный сервер с актуальными данными и конфигурацией, а не только с установленным ПО.
- Проверяйте переключение через dig с разных резолверов, а не только с одного устройства.
- Настройте порог в несколько неудачных проверок подряд, чтобы избежать ложных срабатываний.