Тестирование DR без влияния на рабочую среду
Выполните тестовое переключение в изолированную сеть, чтобы проверить план восстановления от начала до конца, измерьте фактический RTO и задокументируйте пробелы для устранения.
«Тестирование DR без влияния на рабочую среду» — бесплатный урок Azure Fundamentals на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Azure Fundamentals, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Azure Fundamentals содержит 4 уроков всего.
Почему тестирование DR обязательно
План аварийного восстановления, который ни разу не тестировали, — всего лишь гипотеза. Практика показывает, что планы DR часто выявляют пробелы — расхождения в конфигурации, отсутствие автоматизации, устаревшие сценарии или более длительное, чем ожидалось, время запуска, — которые обнаруживаются только в условиях тестирования. Только регулярное тестирование DR позволяет быть уверенным, что план сработает в самый нужный момент.
Функция тестового переключения
Test Failover — встроенная функция Azure Site Recovery, позволяющая имитировать переключение на вторичный регион без прерывания работы production. Во время тестового переключения ASR создает копии реплицированных VM в изолированной виртуальной сети вторичного региона. Рабочие VM продолжают нормально работать в первичном регионе, поэтому для пользователей production риска нет.
# Trigger a test failover for a recovery plan:
az site-recovery recovery-plan test-failover \
--resource-group myRG \
--vault-name myRecoveryVault \
--name myRecoveryPlan \
--failover-direction PrimaryToRecovery \
--network-id '/subscriptions/.../virtualNetworks/testFailoverVNet'Изоляция тестовой среды
Изолированная тестовая VNet не должна иметь подключения к рабочим системам. Это предотвращает случайную запись тестовых VM в рабочую базу данных, отправку писем реальным клиентам или запуск платежных операций. Создайте выделенную VNet для тестового переключения без пиринга с рабочими VNet и без доступа к Интернету, а затем используйте ее исключительно для учений DR.
# Create an isolated test VNet for DR drills:
az network vnet create \
--resource-group drRG \
--name testFailoverVNet \
--address-prefix 10.99.0.0/16 \
--subnet-name testSubnet \
--subnet-prefix 10.99.1.0/24
# NOTE: Do NOT peer this VNet to any production VNetЧто проверять во время теста DR
Тест DR должен проверять определенный набор критериев:
- время загрузки — запускаются ли все VM в ожидаемый интервал?
- запуск приложения — правильно ли инициализируется приложение при подключении к восстановленной базе данных?
- целостность данных — согласованы и полны ли данные в точке восстановления?
- фактический RTO — измерьте общее время от запуска переключения до начала обработки запросов приложением
- выполнение сценария — успешно ли завершились все сценарии автоматизации?
Измерение фактического RTO
Во время теста запустите таймер сразу после запуска тестового переключения. Остановите его, когда будет подтверждена работоспособность приложения (проверка работоспособности балансировщика нагрузки вернет 200 OK). Это и есть ваш фактический RTO. Сравните его с целевым RTO. Если фактическое значение превышает целевое, выявите узкие места — медленный запуск VM, длительную инициализацию базы данных, задержку распространения DNS — и устраните их.
# During DR test, record timestamps:
# T0: Test failover triggered
# T1: All VMs in group 1 (database) running
# T2: All VMs in group 2 (app tier) running
# T3: All VMs in group 3 (web tier) running
# T4: Health probe returns 200 OK on all instances
# Actual RTO = T4 - T0
# Compare to target RTO, document any gapsПроверка данных в точке восстановления
После завершения тестового переключения подключитесь к восстановленной базе данных и проверьте данные. Убедитесь, что транзакции, зафиксированные до границы репликации, присутствуют, а частично зафиксированные транзакции обработаны правильно (откачены или завершены). Для баз данных с возможностью восстановления на момент времени (PITR) проверьте восстановление на конкретную временную отметку и убедитесь, что состояние данных соответствует ожидаемому.
# Example data verification after test failover:
# 1. Connect to recovered database
# 2. Run: SELECT COUNT(*) FROM orders WHERE created_at > DATEADD(hour, -1, GETUTCDATE())
# 3. Compare count to production database count for the same window
# 4. Check for any orphaned records or constraint violationsОчистка после тестового переключения
После завершения теста необходимо удалить ресурсы тестового переключения — тестовые VM, их диски и сетевые интерфейсы во вторичном регионе. Azure Site Recovery предоставляет на портале действие «Очистка после тестового переключения», которое автоматически удаляет все тестовые ресурсы. Если забыть выполнить очистку, это приведет к лишним расходам и загромождению вторичного региона устаревшими ресурсами.
# Trigger cleanup after test failover:
az site-recovery recovery-plan test-failover-cleanup \
--resource-group myRG \
--vault-name myRecoveryVault \
--name myRecoveryPlan \
--notes 'Test completed. RTO = 22 minutes. All checks passed.'Документирование результатов теста DR
После каждого теста DR составляйте отчет о тестировании, включающий дату и область теста, достигнутые фактические значения RTO и RPO, список проверок со статусом успешного или неуспешного прохождения, выявленные пробелы или сбои и запланированные корректирующие действия. Этот отчет важен для аудитов соответствия (ISO 27001, SOC 2, HIPAA) и отслеживания повышения зрелости DR с течением времени.
Периодичность тестирования DR
Отраслевые рекомендации и нормативные стандарты обычно требуют проводить тесты DR как минимум ежегодно, однако многие организации тестируют системы ежеквартально или даже ежемесячно для рабочих нагрузок уровня 1. Более частое тестирование позволяет раньше обнаруживать расхождения в конфигурации и повышает уверенность команды, а также формирует необходимые практические навыки. По возможности автоматизируйте настройку и проверку теста, чтобы снизить трудозатраты на частое тестирование.
Azure Chaos Studio для тестирования устойчивости
Azure Chaos Studio — это управляемая служба хаос-инжиниринга, позволяющая внедрять контролируемые сбои в ресурсы Azure для проверки устойчивости приложений. Вы можете выключать VM, имитировать отказ зон, ограничивать CPU или добавлять сетевую задержку, чтобы наблюдать за поведением приложения. В отличие от стандартного учения DR, хаос-инжиниринг проверяет, способно ли приложение корректно работать при постепенном ухудшении в условиях частичных сбоев.
# Chaos Studio experiment: shut down a VM zone
# 1. Create a chaos experiment in the portal
# 2. Select fault: 'VM Shutdown'
# 3. Target: VMs in Zone 1
# 4. Duration: 10 minutes
# 5. Observe: Does Traffic Manager reroute to Zone 2?
# 6. Check: Application health during and after the faultЦикл непрерывного улучшения DR
Тестирование DR приносит наибольшую пользу как часть цикла непрерывного улучшения: планирование → выполнение → измерение → устранение проблем → повторение. После каждого теста устраняйте найденные пробелы, обновляйте сценарии и документацию, а затем проводите тест снова. Со временем разрыв между заявленными целевыми значениями RTO/RPO и фактически достигнутыми значениями должен сокращаться, пока вы не начнете стабильно проходить каждый тест в пределах допустимого отклонения.
Быстрая проверка
Проверьте своё понимание концепций Microsoft Azure Fundamentals (AZ-900), рассмотренных в этом уроке.
Итоги урока
В этом уроке вы узнали, что тестовое переключение позволяет имитировать событие DR без прерывания работы production, создавая копии VM в изолированной VNet; во время теста необходимо измерять фактический RTO и проверять целостность данных; после каждого учения следует удалять тестовые ресурсы и документировать результаты. Далее мы рассмотрим аварийное восстановление для служб PaaS, таких как Azure SQL Database.
Часто задаваемые вопросы
Урок «Тестирование DR без влияния на рабочую среду» бесплатный?
Да — полный текст урока «Тестирование DR без влияния на рабочую среду» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Azure Fundamentals, подпишись на CoddyKit PRO. Курс Azure Fundamentals содержит 4 уроков всего.
Чему я научусь в уроке «Тестирование DR без влияния на рабочую среду»?
Выполните тестовое переключение в изолированную сеть, чтобы проверить план восстановления от начала до конца, измерьте фактический RTO и задокументируйте пробелы для устранения. Ты практикуешь Azure Fundamentals с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Azure Fundamentals?
Предыдущий опыт не требуется. Azure Fundamentals на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Тестирование DR без влияния на рабочую среду»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Azure Fundamentals?
Да. Каждый урок Azure Fundamentals включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Определение RTO, RPO и уровней восстановления
- Планы восстановления и автоматическое переключение
- Тестирование DR без влияния на рабочую среду
- DR для служб PaaS