Обновление кластера DAG
Для обновления кластера DAG в простом случае - можно передать базы на другой другой сервер (выбрав опцию activate в разделе databases в ECP). Однако, лучше выполнить поочередную подготовку серверов через штатную процедуру, описанную в документации MS.
С использованием скрипта StartDagServerMaintenance.ps1
Перевод сервера в режим maintenance
1. Сообщаем транспортной службе больше не принимать новые сообщения.
Set-ServerComponentState MX1 -Component HubTransport -State Draining -Requester Maintenance
2. Инициируем drain транспортной очереди перезапуском службы
Restart-Service MSExchangeTransport
3. Перемещаемся в папку встроенных скриптов MS-Exchange
CD $ExScripts
4. Запускаем скрипт перевода сервера в режим технического обслуживания. Данный скрипт переместит базы на другой сервер, а также запретит запуск критичных для кластера ролей на сервере, перевод которого в режим технического обслуживания предполагается.
.\StartDagServerMaintenance.ps1 -ServerName MX1 -MoveComment Maintenance -PauseClusterNode
5. Переводим сообщения, которые есть в очереди на другой сервер, используя его FQDN
Redirect-Message -Server MX1 -Target MX2.domain.ru
6. Переводим основные функции сервера в режим технического обслуживания
Set-ServerComponentState MX1 -Component ServerWideOffline -State Inactive -Requester Maintenance
Проверка режима maintenance
1. Смотрим, что все основные компоненты (кроме Monitoring и RecoveryActionsEnabled) остановлены.
Get-ServerComponentState MX1 | Format-Table Component,State -Autosize
2. Смотрим, что сервер не хостит активные БД.
Get-MailboxServer MX1 | Format-List DatabaseCopyAutoActivationPolicy
3. Проверяем, что кластер находится в состоянии paused.
Get-ClusterNode MX1 | Format-List
4. Проверяем, что все сообщения покинули очередь.
Get-Queue
Теперь можно производить работы с сервером - устанавливать обновления, перезагружать и т.д.
Перевод сервера в обычный режим
После проведения технических работ нужно вернуть сервер в обычный режим.
1. Сообщаем серверу, что можно принимать клиентские подключения.
Set-ServerComponentState MX1 -Component ServerWideOffline -State Active -Requester Maintenance
2. Перемещаемся в папку встроенных скриптов.
CD $ExScripts
3. Останавливаем режим обслуживания, который мы прежде запустили скриптом StartDagServerMaintenance.ps1.
.\StopDagServerMaintenance.ps1 -serverName MX1
4. Сообщаем транспортным очередям, что они могут принимать сообщения
Set-ServerComponentState MX1 -Component HubTransport -State Active -Requester Maintenance
5. Триггерим возобновление транспортной активности перезапуском службы
Restart-Service MSExchangeTransport
6. Проверяем, что сервер вышел из режима технического обслуживания
Get-ServerComponentState mx1 | Format-Table Component,State -Autosize
7. Если с какими-то компонентами есть проблемы - их можно запустить отдельно. Примеры:
Set-ServerComponentState MX1 -Component ServerWideOffline -State Active -Requester Functional Set-ServerComponentState MX1 -Component Monitoring -State Active -Requester Functional Set-ServerComponentState MX1 -Component RecoveryActionsEnabled -State Active -Requester Functional
Чтобы обновить другой сервер - повторяем операции, описанные в инструкции.
Вариант обновления без использования StartDagServerMaintenance.ps1
Если по каким-либо причинам скрипт StartDagServerMaintenance.ps1 не работает, можно использовать вариант, где включение режима maintenance в DAG выполняется вручную.
Перевод сервера в режим maintenance
#Сообщаем транспортной службе больше не принимать новые сообщения
Set-ServerComponentState exchange02 -Component HubTransport -State Draining -Requester Maintenance
#Перезапускаем транспортные службы
Restart-Service MSExchangeTransport
Restart-Service MSExchangeFrontEndTransport
#Перенаправляем очередь сообщений на другой сервер в домене
Redirect-Message -Server "EXCHANGE02" -Target "EXCHANGE01.domain.ru"
#Ставим на паузу ноду кластера
Suspend-ClusterNode "EXCHANGE02"
#Отключаем автоматическую активацию копий на данном сервере. Эта команда также форсирует перемещение баз данных на другие серверы, которые не находятся в режиме
обслуживания. Перемещение баз занимает какое-то время.
Set-MailboxServer "EXCHANGE02" -DatabaseCopyActivationDisabledAndMoveNow $true
#Блокируем активацию новых копий
Set-MailboxServer "EXCHANGE02" -DatabaseCopyAutoActivationPolicy Blocked
# Смотрим статус политики активации баз данных
Get-MailboxServer "EXCHANGE02" | Select DatabaseCopyAutoActivationPolicy
# Перед выполнение тех. обслуживания на данном сервере не должно оставаться активных баз, проверяем это:
Get-MailboxDatabaseCopyStatus -Server "EXCHANGE02" | Where {$_.Status -eq "Mounted"}
# Переводим сервер в режим технического обслуживания
Set-ServerComponentState "EXCHANGE02" -Component ServerWideOffline -State Inactive -Requester Maintenance
# Проверяем статус компоненов. Все, кроме "Monitoring" и "RecoveryActionsEnabled" должны быть остановлены.
Get-ServerComponentState "EXCHANGE02" | Select Component, State
Проводим запланированные технические работы.
Перевод сервера в обычный режим
# Обратим изменения, сделанные на прошлом этапе и введем сервер в обычный режим обратно Set-ServerComponentState EXCHANGE02 -Component ServerWideOffline -State Active -Requester Maintenance Resume-ClusterNode EXCHANGE02 Set-MailboxServer EXCHANGE02 -DatabaseCopyActivationDisabledAndMoveNow $False Set-MailboxServer EXCHANGE02 -DatabaseCopyAutoActivationPolicy Unrestricted Set-ServerComponentState EXCHANGE02 -Component HubTransport -State Active -Requester Maintenance Restart-Service MSExchangeTransport Restart-Service MSExchangeFrontEndTransport # Если базы Exchange не вернулись автоматом на свой приоритетный серер, выполняем скрипт ребалансировки: cd "C:\Program Files\Microsoft\Exchange Server\V15\Scripts" .\RedistributeActiveDatabases.ps1 -BalanceDbsByActivationPreference -Confirm:$false
Подробнее о приоритете активации баз тут: