Выберите продукт

Disaster Recovery для VDS: проектируем DR-план с RTO/RPO, бэкапами, репликацией и DNS‑переключением

Разбираем DR для VDS без «героизма»: какие аварии учитывать, как приземлить RTO/RPO в цифры, где бэкапы не заменяют репликацию, как оформить runbook для дежурного и организовать DNS‑переключение и тесты восстановления.
Disaster Recovery для VDS: проектируем DR-план с RTO/RPO, бэкапами, репликацией и DNS‑переключением

Зачем VDS нужен Disaster Recovery (DR), даже если «у нас всё просто»

Disaster Recovery для VDS — это не «ещё один бэкап», а заранее спроектированный и проверенный способ восстановить сервис после серьёзного инцидента: отказа узла/диска, потери доступности площадки, разрушения данных, компрометации, человеческой ошибки или неудачного релиза.

Типичная проблема: резервные копии вроде бы есть, но они не проверяются, хранятся рядом с сервером, а в момент аварии выясняется, что восстановление займёт сутки, хотя бизнес ожидал «час». DR-план нужен, чтобы ожидания и ответственность были формализованы, а восстановление было повторяемым процессом, а не разовой импровизацией.

Важно: DR — это не только про инфраструктуру. Это ещё и про людей: кто принимает решение о переключении, где лежит инструкция, какие доступы нужны в 03:00, как и кому вы сообщаете статус.

Базовые определения: RTO, RPO и почему их нельзя угадывать

Если вы не измеряете цели восстановления, DR превращается в декларацию. Два ключевых параметра:

  • RTO (Recovery Time Objective) — сколько времени сервис может быть недоступен. Например, RTO 30 минут означает, что от момента инцидента до восстановления работоспособности должно пройти не больше 30 минут.

  • RPO (Recovery Point Objective) — сколько данных вы можете потерять «по времени». Например, RPO 5 минут означает, что в худшем случае вы теряете до 5 минут изменений.

RTO/RPO задаются не «по желанию админа», а по бизнес-процессам: что ломается при простое, сколько стоит час недоступности, сколько стоит потеря транзакций за 5–60 минут, есть ли ручные обходные сценарии.

Практика: сначала фиксируйте RTO/RPO на уровне сервисов (сайт, API, БД, очередь, админка), а уже затем выбирайте архитектуру DR под эти цифры.

Чтобы не спорить «на глаз», полезно оформить простую таблицу зависимостей и критического пути (что должно восстановиться раньше чего). Такой документ потом становится основой для runbook и DR-учений.

FastFox VDS
Облачный VDS-сервер в России
Аренда виртуальных серверов с моментальным развертыванием инфраструктуры от 195₽ / мес

Классы DR-стратегий для VDS: от бэкапа до актив-актива

Условно DR на VDS можно разложить по зрелости и стоимости. Чем ниже целевые RTO/RPO, тем дороже инфраструктура и сложнее эксплуатация.

1) Backup-only: «восстановимся из бэкапа»

Самый частый сценарий: есть резервные копии, но нет подготовленного «второго места», куда быстро разворачивать. RTO обычно измеряется часами, RPO зависит от частоты бэкапов.

Подходит, если у вас допустимы простой на несколько часов и потеря данных в пределах, например, 1–24 часов (в зависимости от графика резервного копирования).

2) Pilot Light: «держим минимальную инфраструктуру»

В резервной зоне заранее подготовлены базовые образы/плейбуки, конфиги, возможно, пустая БД или реплика без постоянной нагрузки. При аварии вы быстро поднимаете полноценный стек. RTO — десятки минут или пара часов, RPO — от минут до часов.

3) Warm Standby: «тёплый резерв»

Есть постоянно работающий резервный VDS (или несколько), на нём развёрнуты сервисы и регулярно синхронизируются данные. Переключение быстрее: RTO обычно минуты-десятки минут. RPO может быть небольшим, если настроена репликация.

4) Hot Standby / Active-Active: «почти без простоя»

Параллельно работают две площадки, трафик балансируется, данные реплицируются максимально близко к реальному времени. RTO — минуты или меньше, RPO — близко к нулю (но не «ноль» по умолчанию, особенно в распределённых сценариях).

Важно: active-active — это не про «круто», а про дисциплину. Сложнее схема — больше вариантов получить логическую порчу данных, конфликты записи и тяжёлые для расследования инциденты.

Схема DR: бэкапы, реплика БД, резервный сервер и переключение DNS

Модель угроз и типовые «бедствия», которые стоит заложить

DR-план имеет смысл строить от реальных сценариев. Для VDS обычно закладывают:

  • Потерю узла/диска: корневая ФС не монтируется, файловая система повреждена, снапшоты битые.

  • Недоступность сети/провайдера/площадки: сервер жив, но недоступен извне, или «отвалился» регион.

  • Компрометацию: утечка ключей, внедрение бэкдора, шифровальщик, уничтожение данных.

  • Человеческую ошибку: удаление таблицы/директории, неверный ansible-playbook, ошибочная миграция.

  • Логическую порчу: приложение записало некорректные данные, баг «разнёс» мусор по репликам.

От сценариев зависят требования к бэкапам (частота, глубина истории, точки во времени), необходимость неизменяемого хранения, а также процедура incident response: когда «лечим», а когда сразу изолируем и переключаемся.

Инвентаризация: что именно восстанавливаем

«DR для сервера» часто проваливается, потому что никто не описал состав сервиса. Для VDS минимальный чек-лист объектов восстановления:

  • ОС и пакеты: версия ОС, установленные пакеты, источники репозиториев.

  • Конфигурация: Nginx/Apache, systemd unit’ы, конфиги приложения, переменные окружения.

  • Секреты: ключи SSH, токены, пароли, ключи шифрования, API-ключи (и порядок их ротации).

  • Данные: БД, загруженные файлы, очередь, кэши (понимать, что можно пересоздать).

  • DNS и TLS: записи, TTL, сертификаты, сценарий перевыпуска/переноса.

  • Наблюдаемость: логи, метрики, алерты (хотя бы чтобы видеть, что восстановление прошло успешно).

Практичный подход: оформите «паспорт сервиса» в репозитории (README), и держите рядом контакты/доступы/владельцев. В аварии память подводит, а чек-лист — нет.

Бэкапы для DR: частота, хранение, проверка, защита от порчи

Бэкап в DR отвечает за достижение RPO, но только если вы можете гарантировать, что он:

  • создаётся регулярно и без пропусков;

  • хранится вне основной площадки (иначе это не DR, а «копия рядом»);

  • восстанавливается в тесте (иначе это вера, а не план);

  • защищён от удаления/шифрования при компрометации (раздельные учётки, раздельные ключи, по возможности неизменяемое хранение).

3-2-1 как база, но с уточнениями для VDS

Классика: 3 копии, 2 разных носителя, 1 копия вне площадки. На практике для VDS это часто превращается в: локальный снапшот + удалённый бэкап + «холодная» копия (архив на долгий срок). Ключевой момент: эти копии не должны управляться одной и той же учёткой, которая может быть скомпрометирована.

Проверка восстановления: «бэкап есть» недостаточно

Минимум раз в месяц (лучше чаще) делайте тренировку: разворачивайте новый сервер, поднимайте сервис из бэкапа, проверяйте критичные ручки/страницы, сверяйте целостность БД. Это и есть «DR в реальности», а не на бумаге.

Репликация и консистентность: как не получить «быстрый failover в сломанные данные»

Если ваша цель — низкий RPO, одной резервной копии обычно мало: нужна репликация. Но репликация не заменяет бэкап: если вы удалили данные или записали некорректное значение, реплика честно повторит это же.

Синхронная vs асинхронная репликация

  • Синхронная помогает приблизиться к минимальному RPO, но увеличивает задержки записи и сложнее между площадками.

  • Асинхронная проще и чаще применима между регионами, но даёт «окно потери» (репликационный лаг), которое нужно учитывать в RPO.

Точка истины и процедура промоушена

Для БД важно определить: кто является primary, как именно происходит промоушен реплики, какие проверки вы делаете перед переключением, и как предотвращаете split-brain (когда две ноды думают, что обе primary).

Если у вас нет чёткой процедуры «кто primary» и «как мы запрещаем старому primary принимать записи», вы проектируете не DR, а генератор сложных инцидентов.

Отдельно продумайте, как вы откатываетесь назад, если переключение было ложным (например, сетевой инцидент), и что делаете с «бывшим primary», чтобы не размножить расхождения.

FastFox SSL
Надежные SSL-сертификаты
Мы предлагаем широкий спектр SSL-сертификатов от GlobalSign по самым низким ценам. Поможем с покупкой и установкой SSL бесплатно!

DNS-переключение: TTL, healthchecks и что делать, если кэш не слушается

DNS — популярный механизм failover для веб-сервисов на VDS, но он работает не так мгновенно, как ожидают. На скорость влияют TTL, кэши резолверов и поведение клиентов. Поэтому DR-план должен учитывать «DNS-инерцию».

TTL: заранее снижать или держать умеренным?

Частая рекомендация: «снизьте TTL до 60 секунд». Это помогает при плановых переключениях, но в реальности:

  • не все резолверы и клиенты строго соблюдают TTL;

  • малый TTL увеличивает нагрузку на DNS и риски при проблемах у DNS-провайдера;

  • слишком маленький TTL усложняет расследования: ответы быстрее «прыгают».

Практика для большинства проектов: держать TTL в диапазоне 60–300 секунд для критичных A/AAAA записей, а перед плановыми работами временно снижать TTL, если это удобно и управляемо.

Сценарии DNS-failover

  • Ручной: вы меняете A/AAAA на резервный IP по чек-листу.

  • Условно-автоматический: мониторинг сигналит, дежурный подтверждает переключение.

  • Автоматический: healthcheck триггерит смену записи. Подходит не всем, потому что риск ложных срабатываний часто недооценивают.

В DR-инструкции обязательно укажите: какие записи менять, где они управляются, какой ожидаемый TTL, и как проверять распространение с разных резолверов.

Если DR затрагивает домен (перенос управления DNS, смена NS, аварийные контакты регистратора), полезно заранее продумать «доменные» риски и защиту. См. также: как защитить домен от угона и ошибок управления.

Пошаговый DR-runbook: что должен уметь дежурный в 03:00

Runbook — это конкретные шаги, которые выполняются в аварии. Хороший runbook не начинается словами «проверьте логи и разберитесь». Он начинается с диагностики уровня «сервис недоступен» и ведёт к восстановлению.

Структура runbook, которая реально работает

  1. Сигнал: какой алерт/симптом, как подтвердить инцидент из 2–3 независимых источников.

  2. Классификация: деградация, частичная недоступность, полное падение, подозрение на компрометацию.

  3. Решение “failover или fix”: когда чиним на месте, а когда переключаемся.

  4. Процедура переключения: инфраструктура, БД, приложение, DNS, сертификаты, фоновые задачи.

  5. Верификация: проверки после восстановления (снаружи и изнутри), контроль метрик/ошибок.

  6. Коммуникация: кого уведомить, что писать пользователям, где обновлять статус.

  7. Post-incident: сбор артефактов, таймлайн, RCA, действия по предотвращению повторения.

DR — часть incident response, просто с акцентом на восстановление доступности и данных. Если есть подозрение на компрометацию, в runbook должны быть отдельные «стоп-сигналы» (например, немедленная изоляция и ротация ключей), иначе вы рискуете восстановить атакующего вместе с сервисом.

Практический минимальный DR для типового веб-проекта на VDS

Возьмём типичный стек: веб-сервер, приложение, база данных, файловые загрузки. Цель: адекватный RTO 30–60 минут и RPO 15–60 минут без космической сложности.

Минимальный набор

  • Автоматизация развёртывания: IaC/плейбук, который поднимает ОС, пакеты, конфиги.

  • Бэкапы БД: по расписанию, с хранением вне площадки и с периодическим тестом восстановления.

  • Бэкапы/синхронизация загрузок: каталог uploads/хранилище файлов.

  • Резервный сервер: pilot light или warm standby (зависит от RTO).

  • DNS-план: список записей, TTL, шаги смены.

Для TLS заранее решите, как вы обеспечиваете сертификаты на резервной площадке: переносите существующий сертификат, либо выпускаете новый автоматически. Если используете wildcard и автоматизацию через DNS-01, заранее проверьте доступы к DNS и процедуру обновления: wildcard SSL и автоматизация DNS-01.

DR-учения: проверка чек-листа восстановления и контроль сервисов на резервной площадке

Как «приземлить» RTO/RPO в цифры: простой метод оценки

Чтобы RTO/RPO не были абстрактными, оцените критический путь восстановления по компонентам. Пример логики:

  • Приложение: развёртывание из автоматики — 10–20 минут.

  • База данных: восстановление бэкапа + прогон миграций — 15–90 минут (зависит от объёма).

  • DNS: распространение — 5–30 минут (иногда больше из-за кэшей).

После этого суммируете критический путь и сравниваете с целевым RTO. Если не сходится — либо улучшаете архитектуру (warm standby, реплика), либо пересматриваете ожидания и коммуникации.

В runbook удобно добавить «шаблон замера» (фактическое время по шагам), чтобы на учениях и реальных инцидентах вы собирали цифры, а не ощущения.

Периодические DR-учения: что именно проверять

DR-учения должны быть повторяемыми и измеримыми. Минимальный набор проверок:

  • поднимается ли новый VDS по вашему описанию (без ручной «магии»);

  • восстанавливается ли БД из актуальной резервной копии и проходит ли проверку целостности;

  • подтягиваются ли загрузки/статические файлы;

  • работает ли выдача/перенос TLS-сертификата по вашему процессу;

  • сколько времени заняли шаги (фактический RTO) и какой объём данных потеряли (фактический RPO).

Результат учений — это обновлённый runbook и список улучшений. DR — живой процесс: меняется код, зависимости, объёмы данных и команда, поэтому «один раз настроили и забыли» не работает.

Типовые ошибки при DR на VDS и как их избежать

  • Смешали бэкап и репликацию: репликация не спасает от логической ошибки. Нужны точки восстановления во времени и тесты восстановления.

  • Секреты не вынесены: в аварии сервис не поднять, потому что ключи/пароли были только на упавшем сервере.

  • DR не тестируется: первый «тест» происходит в проде во время реального инцидента.

  • Не учли DNS и кэши: запись поменяли, но часть пользователей ещё 10–30 минут ходит на старый IP.

  • Нет критерия “когда переключаемся”: команда час «чинит на месте», хотя быстрее было сделать failover.

  • Нет защиты бэкапов: при компрометации злоумышленник удаляет или шифрует и бэкапы тоже.

Итоги: минимальный DR-план, который уже приносит пользу

Начните с фиксации RTO/RPO для ключевых сервисов, опишите инвентарь (что восстанавливаем), настройте бэкапы вне площадки и регулярно проверяйте восстановление. Затем добавляйте репликацию и автоматизацию переключения ровно там, где это оправдано целями восстановления.

Самое ценное в DR для VDS — предсказуемость. Когда случится серьёзный инцидент, вы будете действовать по проверенному сценарию, а не собирать план на ходу.

Поделиться статьей

Вам будет интересно

Debian/Ubuntu: как исправить SSH remote port forwarding failed for listen port и GatewayPorts OpenAI Статья написана AI (GPT 5)

Debian/Ubuntu: как исправить SSH remote port forwarding failed for listen port и GatewayPorts

Если reverse SSH tunnel через ssh -R не поднимается и клиент пишет remote port forwarding failed for listen port, причина обычно н ...
Debian/Ubuntu: apt update зависает на Waiting for headers — IPv6, MTU, proxy и timeout зеркал OpenAI Статья написана AI (GPT 5)

Debian/Ubuntu: apt update зависает на Waiting for headers — IPv6, MTU, proxy и timeout зеркал

Если в Debian или Ubuntu команда apt update подвисает на стадии Waiting for headers, причина обычно не в самом APT, а в сети: слом ...
Debian/Ubuntu: netfilter-persistent save failed — как исправить и сохранить правила nftables/iptables OpenAI Статья написана AI (GPT 5)

Debian/Ubuntu: netfilter-persistent save failed — как исправить и сохранить правила nftables/iptables

Ошибка netfilter-persistent save failed в Debian и Ubuntu обычно связана с путаницей между nftables и iptables, неверным backend, ...