Предисловие
Конфигурация Exchange DAG стала де-факто стандартом при построении инфраструктуры почтового сервиса на решении Microsoft. В современных версиях Exchange "накликать" базы данных в конфигурацию DAG не занимает много времени, но для многих из ИТ-персонала, к сожалению, остается неясным поведение систем и почтового сервиса при тех или иных типовых возможных сценариях нештатного поведения системы (обслуживание, обрыв канала итд...). По этой причине, а так же по причине необходимости проверки корректности функционирования почтового сервиса и получения информации по времени отработки DAG(восстановление после сбоя) в конкретной инфраструктуре требуется проведение тестирования.
Информации в общем доступе по существующим практикам/методикам/способам тестирования стабильности и поведения баз данных в DAG найти не удалось, по этой причине разрабатывать описание тестовых сценариев пришлось самостоятельно. Предложенная методика является универсальной и масштабируемой для тех случаев, когда конфигурация DAG содержит большее количество узлов/датацентров. 
Предложенная методика указана для DAG распределенного в двух датацентрах. 
Описание окружения
1. SRVEXDB1 – Exchange 2016 DB+CAS server Primary Datacenter
2. SRVEXDB2– Exchange 2016 DB+CAS server Secondary Datacenter
3. SRVEXWN  - Withness SMB share in Primary Datacenter.
4. DB1 – mailbox database, primary SRVEXDB1 
5. DB2 – mailbox database, primary SRVEXDB2
6. CAS servers: Primary – SRVEXDB1
7. CAS servers: Secondary – SRVEXDB2
 
Методика тестирования
Приведенные сценарии с описанием шагов используемых при тестировании покрывают наиболее веротные случаи возможные в инфраструктуре. В случае, если конфигурация Вашего DAG более или менее сложная, часть сценариев можно не использовать а часть шагов легко изменяются в соответствии с реалиями инфраструктуры.
Использование изложенной методики позволяет:
	- Проверить функционирование отказоустойчивости почтового сервиса на уровне баз данных почтовых ящиков при типовых сценариях.
 
	- Выявить план действий и составить сопутствующие артефакты-инструкции для дальнейшего обслуживания почтового сервиса такие как "сценарий обновления","failover сценарий".
 
	- Проверить возможность корректного восстановления.
 
	- Произвести тестирование/обучение обслуживающего системы персонала.
 
	- Выявить время требуемое для восстановления после сбоя RTO.
 
1. Сценарий планового обслуживания систем
Сопутствующие действия: составление сценария обновлений систем
	- Проверка состояния баз данных Get-MailboxDatabaseCopyStatus
 
	- Проверка состояния компонент Test-ReplicationHealth
 
	- Перевод SRVEXDB1  в maintenance mode StartDagServerMaintenance.ps1
 
	- Проверка состояния баз данных Get-MailboxDatabaseCopyStatus
 
	- Проверка состояния компонент Test-ReplicationHealth
 
	- Проверка доступности почтового ящиков через owa на каждом из доступных CAS серверов и через MAPI.
 
	- Перезагрузка SRVEXDB1 
 
	- Возвращение состояния SRVEXDB1  (п.3)  StopDagServerMaintenance.ps1
 
	- Проверка состояния баз данных Get-MailboxDatabaseCopyStatus
 
	- Проверка состояния компонент Test-ReplicationHealth
 
	- Перевод SRVEXDB2 в maintenance mode StartDagServerMaintenance.ps1
 
	- Проверка состояния баз данных Get-MailboxDatabaseCopyStatus
 
	- Проверка состояния компонент Test-ReplicationHealth
 
	- Проверка доступности почтового ящиков через owa на каждом из доступных CAS серверов и через MAPI. 
 
	- Перезагрузка SRVEXDB2
 
	- Возвращение состояния SRVEXDB2 (п.11)   StopDagServerMaintenance.ps1
 
	- Проверка состояния баз данных Get-MailboxDatabaseCopyStatus
 
	- Проверка состояния компонент Test-ReplicationHealth
 
	- Проверка доступности почтового ящиков через owa на каждом из доступных CAS серверов и через MAPI.
 
2. Сценарий обрыва канала связи между датацентрами
Ожидаемый результат при наступлении инцидента — автоматическая миграция копий баз данных с SRVEXDB1 активных ранее на SRVEXDB2
Сопутствующие действия: составление failover сценация
 
	- Проверка состояния баз данных Get-MailboxDatabaseCopyStatus
 
	- Проверка состояния компонент Test-ReplicationHealth
 
	- Открытие почтового ящика в DB2 через owa на каждом из доступных CAS серверов и через MAPI
 
	- Отключение интерфейса на уровне гипервизора на SRVEXDB2 в Secondary Datacenter
 
	- Проверка состояния баз данных Get-MailboxDatabaseCopyStatus на обоих узлах почтового сервиса
 
	- Проверка доступности почтового ящика из п.3 через owa на каждом из доступных CAS серверов и через MAPI.
 
	- Перезагрузка SRVEXDB1.
 
	- Проверка состояния  баз данных Get-MailboxDatabaseCopyStatus
 
	- Восстановление связи между узлами (возвращение рабочего состояния п.4)
 
	- Проверка состояния  баз данных Get-MailboxDatabaseCopyStatus
	В случае отсутствия восстановления состояния использовать Update-MailboxDatabaseCopy и Resume-MailboxDatabaseCopy 
	- Проверка доступности почтового ящика из п.3 через owa на каждом из доступных CAS серверов и через MAPI.
 
3. Сценарий выхода из строя сервера из Secondary Datacenter SRVEXDB2
Ожидаемый результат при наступлении инцидента —  автоматическая миграция копий баз данных с SRVEXDB1 активных ранее на SRVEXDB2
Сопутствующие действия: составление failover сценация, сценария обновлений систем
 
	- Проверка состояния баз данных Get-MailboxDatabaseCopyStatus
 
	- Проверка состояния компонент Test-ReplicationHealth
 
	- Создание резервной копии системы SRVEXDB2
 
	- Открытие почтового ящика в DB2  через owa на каждом из доступных CAS серверов и через MAPI.
 
	- Выполнение unexpected Shutdown на уровне гипервизора на SRVEXDB2 в Secondary Datacenter
 
	- Проверка состояния Get-DatabaseAvailabilityGroupNetwork
 
	- Проверка состояния баз данных Get-MailboxDatabaseCopyStatus 
 
	- Проверка доступности почтового ящика из п.3 через owa на каждом из доступных CAS серверов и через MAPI.
 
	- Включение системы SRVEXDB2(возвращение рабочего состояния п. 5)
 
	- Проверка состояния  баз данных Get-MailboxDatabaseCopyStatus.
 
	- В случае отсутствия восстановления состояния использовать Update-MailboxDatabaseCopy и Resume-MailboxDatabaseCopy
 
	- Ожидание автоматического превода активной копии базы данных DB2 на SRVEXDB2
 
	- Проверка доступности почтового ящика из п.4 через owa на каждом из доступных CAS серверов и через MAPI.
 
4. Сценарий выхода из строя сервера из Primary Datacenter SRVEXDB1
Ожидаемый результат при наступлении инцидента —  автоматическая миграция копий баз данных с SRVEXDB2 активных ранее на SRVEXDB1
Сопутствующие действия: составление failover сценария, сценария обновлений систем
 
	- Проверка состояния баз данных Get-MailboxDatabaseCopyStatus
 
	- Проверка состояния компонент Test-ReplicationHealth
 
	- Создание резервной копии системы SRVEXDB1
 
	- Открытие почтового ящика в DB1 через owa на каждом из доступных CAS серверов и через MAPI. 
 
	- Выполнение unexpected Shutdown на уровне гипервизора на SRVEXDB1 в Primary Datacenter
 
	- Проверка состояния Get-DatabaseAvailabilityGroupNetwork
 
	- Проверка состояния баз данных Get-MailboxDatabaseCopyStatus 
 
	- Проверка доступности почтового ящика из п.3 через SRVEXDB2. 
 
	- Включение системы SRVEXDB2(возвращение рабочего состояния п.5)
 
	- Проверка состояния  баз данных Get-MailboxDatabaseCopyStatus
 
	- В случае отсутствия восстановления состояния использовать Update-MailboxDatabaseCopy и Resume-MailboxDatabaseCopy
 
	- Перевод активной копии базы данных DB1 на SRVEXDB1
 
	- Проверка доступности почтового ящика из п.3 через owa на каждом из доступных CAS серверов и через MAPI. 
 
5. Сценарий выхода Primary Datacenter площадки из строя (не доступность сервера SRVEXDB1 п.3. и withness)
Ожидаемый результат при наступлении инцидента — не активность не активных баз данных на SRVEXDB2
Требуемые действия для восстановления работоспособности — ручная активация копий баз данных на SRVEXDB2
Сопутствующие действия: составление failover сценация
 
	- Проверка состояния баз данных Get-MailboxDatabaseCopyStatus
 
	- Проверка состояния компонент Test-ReplicationHealth
 
	- Создание резервной копии системы SRVEXDB1(проверка наличия актуальной резервной копии)
 
	- Подготовка к настройке на firewall windows на SRVEXWN правила запрета всех подключений с SRVEXDB2 и подготовка к отключению SRVEXDB1
 
	- Единовременное выполнение действий из п.4.
 
	- Проверка состояния баз данных Get-MailboxDatabaseCopyStatus
 
	- Проверка состояния компонент Test-ReplicationHealth
 
	- Проверка состояния Get-DatabaseAvailabilityGroupNetwork
 
	- Проверка withness Get-DatabaseAvailabilityGroup
 
	- Выполнение Restore-DatabaseAvailabilityGroup на  SRVEXDB2
 
	- Проверка состояния баз данных Get-MailboxDatabaseCopyStatus
 
	- Проверка доступности почтовых ящиков через owa на каждом из доступных CAS серверов и через MAPI.
 
	- Включение системы SRVEXDB1(возвращение рабочего состояния п.5)
 
	- Проверка состояния баз данных Get-MailboxDatabaseCopyStatus на SRVEXDB1
 
	- Проверка состояния компонент Test-ReplicationHealth  SRVEXDB1
 
	- Проверка состояния Get-DatabaseAvailabilityGroupNetwork  SRVEXDB1
 
	- Отключение на firewall windows на SRVEXWN правила запрета всех подключений с SRVEXDB2  (возвращение рабочего состояния п.5)
 
	- Проверка состояния Get-DatabaseAvailabilityGroupNetwork
 
6. Сценарий недоступности Withness и перезагрузки почтовых серверов 
Ожидаемый результат при наступлении инцидента — неработоспособность баз данных на рабочем почтовом сервере.
Требуемые действия для восстановления работоспособности — ручная активация копий баз данных на рабочем почтовом сервере
Сопутствующие действия: составление failover сценация
 
	- Проверка состояния баз данных Get-MailboxDatabaseCopyStatus
 
	- Проверка состояния компонент Test-ReplicationHealth
 
	- Подготовка и активация на firewall windows на SRVEXWN правила запрета всех подключений с SRVEXDB2.
 
	- Проверка состояния баз данных Get-MailboxDatabaseCopyStatus
 
	- Подготовка и активация на firewall windows на SRVEXWNправила запрета всех подключений с SRVEXDB1.
 
	- Проверка состояния баз данных Get-MailboxDatabaseCopyStatus
 
	- Проверка доступности почтовых ящиков в DB1 и DB2 через owa на каждом из доступных CAS серверов и через MAPI. 
 
	- Отключение на firewall windows на SRVEXWN правила запрета всех подключений с SRVEXDB2 и SRVEXDB1  (п.3).
 
	- Проверка состояния баз данных Get-MailboxDatabaseCopyStatus
 
	- Единовременная ктивация на firewall windows на SRVEXWN правила запрета всех подключений с SRVEXDB2 и SRVEXDB1.
 
	- Проверка состояния баз данных Get-MailboxDatabaseCopyStatus
 
	- Перезагрузка SRVEXDB2
 
	- Проверка состояния баз данных Get-MailboxDatabaseCopyStatus
 
	- Выполнение  Restore-DatabaseAvailabilityGroup для DB2 на SRVEXDB1
 
	- Проверка доступности почтовых ящиков в DB2 через owa на каждом из доступных CAS серверов и через MAPI. 
 
	- Проверка состояния баз данных Get-MailboxDatabaseCopyStatus
 
	- Перезагрузка SRVEXDB1
 
	- Проверка состояния баз данных Get-MailboxDatabaseCopyStatus
 
	- Выполнение  Restore-DatabaseAvailabilityGroup для DB1 и DB2 на SRVEXDB2
 
	- Проверка доступности почтовых ящиков в DB1 через owa на каждом из доступных CAS серверов и через MAPI. 
 
	- Проверка состояния баз данных Get-MailboxDatabaseCopyStatus
 
	- Отключение на firewall windows на SRVEXWN правила запрета всех подключений с SRVEXDB2 и SRVEXDB1 (возвращение рабочего состояния п.11)
 
	- Активация базы данных почтовых ящиков DB2 на SRVEXDB2
 
7. Сценарий удаления/порчи файлов баз данных в состоянии passive при failover
Ожидаемый результат при наступлении инцидента — corrupt data, невозможность failover
Требуемые действия для восстановления работоспособности — повторная репликация, восстановление баз данных
	- Создание резервной копии системы SRVEXDB1 и SRVEXDB2 (проверка наличия актуальной резервной копии)
 
	- Переименование файла D:\DB1\DB1.edb в D:\DB1\DB1.edb.old на SRVEXDB2
 
	- Активация базы данных почтовых ящиков DB1 на SRVEXDB2
 
	- Проверка состояния баз данных Get-MailboxDatabaseCopyStatus
 
	- Проверка состояния компонент Test-ReplicationHealth
 
	- Повторная репликация копии DB1 Update-MailboxDatabaseCopy. Учёт времени.
 
	- Проверка состояния баз данных Get-MailboxDatabaseCopyStatus
 
	- Активация базы данных почтовых ящиков DB1 на SRVEXDB2
 
	- Сохранение копии файла D:\DB2\DB2.edb на SRVEXDB1.Порча файла D:\DB2\DB2.edb на SRVEXDB1 дописыванием информации в середину файла.
 
	- Активация базы данных почтовых ящиков DB2 на SRVEXDB1
 
	- Проверка состояния баз данных Get-MailboxDatabaseCopyStatus
 
8. Восстановление базы данных средствами используемого средства резервного копирования и восстановления
1. Выполнить восстановление  средствами используемого средства резервного копирования и восстановления базы данных DB2 ( D:\DB2\DB2.edb на SRVEXDB1) после выполнения сценария 7.
Дополнительная информация по поводу проведения проверки доступности.
На шаге "Проверка доступности почтового ящика из п.3 через owa на каждом из доступных CAS серверов и через MAPI" рекомендую проверять доступность через MAPI через разные сайты и сегменты сети в которых работают клиенты. Если имеется интеграция почтового сервиса с иными сервисами (например, office, S4B, sharepoint итд...), необходима проверка интеграции клиента с данными сервисами (как пример "Проверка интеграции с SFB через UM."). Непосредственные действия и соответствующие CheckList формируются исходя из требуемого покрытия в конкретной компании для данного сервиса.
 
 
Используемые командлеты
	- 
	
Restore-DatabaseAvailabilityGroup
	 
	- 
	
Test-ReplicationHealth
	 
	- 
	
Get-DatabaseAvailabilityGroup
	 
	- 
	
Get-DatabaseAvailabilityGroupNetwork
	 
	- 
	
Resume-MailboxDatabaseCopy
	 
	- 
	
Update-MailboxDatabaseCopy
	 
	- 
	
Get-MailboxDatabaseCopyStatus
	 
	- 
	
Remove-MailboxDatabaseCopy
	 
	- 
	
StopDagServerMaintenance.ps1
	 
	- 
	
StartDagServerMaintenance.ps1
	 
Ещё мои статьи по диагностике, оптимизации и решению проблем с Exchange Server
 
Мы имеем широкий опыт по настройкам, обслуживанию, поддержке, оптимизации ИТ инфраструктуры .
В компетенциях нашей команды ТЮН-ИТ технологии Microsoft, Oracle, vmWare, Huawei, Citrix, Cisco, Astra Linux и много open source продуктов (Xen & KVM based гипервизоры, Nix системы, сетевые технологии). 
Обращайтесь к нам как со сложными вопросами ИТ: мы открыты как для больших, так и малых проектов.