Зеркало сайта и фолбэк-домен — как переключаться без простоя
Основной сайт упал, заблокирован или DNS не отвечает. Зеркало на резервном домене должно подняться за секунды, без участия админа. Разбираем архитектуру active-passive с автопереключением, реальные настройки и грабли.
Когда основной сайт недоступен, есть два сценария: бизнес лежит до восстановления (плохо) или автоматически переключается на резерв (хорошо). Второе требует немного инфраструктуры, но работает.
Схема active-passive
- Active — основной сайт. Принимает 100% трафика.
- Passive — зеркало на резервном хостинге и/или резервном домене. Готово принять трафик за секунды.
- Health-check — внешний мониторинг, проверяющий active. При падении — переключает DNS.
Что должно быть на passive
- Свежая копия кода — деплоится одновременно с active или с задержкой максимум час.
- Реплика БД — асинхронная (Postgres streaming replication, MySQL binlog).
- Те же конфиги, секреты, env-переменные.
- SSL-сертификат на тот же домен — у обоих хостеров.
- Не отвечает наружу — пока не переключили DNS.
Переключение через DNS
Способ 1 — TTL и ручное переключение:
- A-запись основного сайта с TTL 60-300 секунд.
- При инциденте — поменять IP на резервный.
- Распространение по DNS — 1-5 минут.
Способ 2 — DNS failover с health-check:
- Сервисы — Yandex Cloud DNS с health-check, Selectel DNS, Cloudflare (если используете).
- Health-check каждые 10-60 секунд.
- При падении — автоматическая смена A-записи на passive.
- Переключение 30 секунд - 5 минут.
Способ 3 — anycast/балансировщик L4:
- Yandex Network Load Balancer или ITGLOBAL.
- Балансировщик отвечает на один IP, но направляет трафик на active или passive.
- Переключение мгновенное.
- Дороже первых двух, но самый надёжный.
Фолбэк-домен
Когда основной домен полностью недоступен (заморожен, блокирован), нужен резервный:
- Регистрация в .RU, .SU, .РФ.
- SSL-сертификат настроен.
- 301-редирект с фолбэк-домена на основной (когда основной работает).
- В коде сайта баннер: «работаем на резервном домене».
Что нельзя забыть
- Email. SPF/DKIM/DMARC на резервном хостинге — иначе письма уходят в спам.
- Платёжный шлюз — настроен на оба домена (ЮKassa, Тинькофф).
- OAuth-провайдеры — добавить redirect_uri для резервного домена.
- Поисковые системы — Яндекс.Вебмастер с обоими доменами.
- Аналитика — счётчик метрики с поддержкой нескольких доменов.
Тестирование переключения
Сценарий «переключиться раз в квартал» — обязательно:
- В рабочее время вручную сделать active недоступным.
- Проверить, что failover сработал.
- Проверить работу всех ключевых функций на passive (логин, оплата, формы).
- Вернуть active.
- Замерить время до и после переключения.
Без тестирования резерв «не работает» в момент реальной аварии в 50% случаев.
Реалистичные сроки
- Настройка с нуля для типового сайта на VPS: 3-5 дней разработчик + 1-2 дня DevOps.
- Стоимость инфраструктуры: +50-100% к базовому хостингу (второй VPS, балансировщик).
- Поддержка: 5-10 часов/месяц на синхронизацию, мониторинг, тесты.
Когда оправдано
Active-passive с автопереключением имеет смысл при стоимости простоя >5-10 тыс ₽/час. Это интернет-магазин с потоком, SaaS, банк-клиент, доставка. Для типового лендинга студии — overkill, достаточно резервного домена с ручным переключением.
Вывод
Зеркало сайта — реальная страховка от простоя. Минимум: DNS failover с health-check + резервный VPS с реплицируемой БД + фолбэк-домен в .RU. Тест раз в квартал. Без тестов резерв не работает. Цена — +50-100% к хостингу, окупается при потерях >5-10 тыс ₽/час.