В нашем постоянно меняющемся мире для предотвращения угроз безопасности компания Microsoft выпускает обновления. О том, как я применяю их на сервере MS Exchange 2010 SP2, состоящем из 4-х серверов: 2-х серверов с ролями CAS+HUB и 2-х серверов с ролью MB, объединенных в DAG, будет написано дальше.
Итак в моей компании для обмена электронной почтой применяется сервер MS Exchange 2010. Для отказоустойчивости 4 сервера разделены на 2 функциональные части:
1 часть состоит из 2-х серверов с ролями CAS+HUB. Для распределения нагрузки применяется используется кластер MS NLB. Имена серверов SEN-EXCH01 и SEN-EXCH02.
2 часть состоит из 2-х серверов с ролью MB. Сервера объединены в DAG. Имена серверов SEN-EXMB01 и SEN-EXMB02. Имя DAG — DAG1.
Доменная часть вообщем то не обязательна.
Итак, вышли новые обновления, необходимо их установить на наши сервера. Вначале я обновляю сервера с ролью CAS+HUB.
Для этого, на обновляемом сервере запускаю «Network Load Balancing Manager», на нужном хосте нажимаю правую клавишу мыши, последовательно выбираю «Control Host->Drainstop».
После этого подключения на этот хост должны прекратиться, сервер временно выбывает из состава кластера NLB. Второй сервер продолжает обслуживать пользователей. Ставлю обновления, перезагружаю сервер. После перезагрузки сервер возвращается в кластер NLB и продолжает обслуживать пользователей. Если обновления встали нормально и все работает без ошибок, повторяю процедуру на втором сервере с ролью CAS+HUB.
После обновления серверов с ролями CAS+HUB, приступаю к обновлению серверов с ролью MB и объединенных в DAG.
В Exchange 2010 SP2 есть несколько скриптов, которые делают управление членами DAG более простым. Смысл их очень просто – вы запускаете скрипт, переводящий сервер в режим обслуживания, перемещая активные базы на другой сервер. После завершения обслуживания вы запускаете другой скрипт, который выводит сервер из режима обслуживания и затем перераспределяет базы между членами DAG.
Скрипты находятся по адресу «C:\Program Files\Microsoft\Exchange Server\V14\scripts> «. Если у вас MS Exchange по другому пути, надо соответственно перейти в дугую директорию.
Скрипт первый: StartDagServerMaintenance.ps1 для помещения члена DAG в режим обслуживания После запуска данного скрипта он перемещает все активные базы на другие члены массива и устанавливает значение настройки сервера почтовых ящиков DatabaseCopyAutoActivationPolicy в значение Blocked. Для каждой базы выполняется командлет Suspend-MailboxDatabaseCopy и при необходимости ресурсы кластера перемещаются на другой сервер.
Смотрим состояние почтовых баз перед применением скрипта. Для этого запускаем командлет Get-MailboxServer | Get-MailboxDatabaseCopyStatus
Видим, что активные и пассивные копии почтовых баз распределены по разным серверам.
Для обслуживания сервера SEN-EXMB02 с сервера SEN-EXMB01 запускаем команду
[PS] C:\Program Files\Microsoft\Exchange Server\V14\scripts>.\StartDagServerMaintenance.ps1 -serverName sen-exmb02
Опять смотрим состояние почтовых баз после применениея скрипта. Для этого запускаем командлет Get-MailboxServer | Get-MailboxDatabaseCopyStatus
Рисунок будет добавлен позже
Видим, что все активные копии почтовых баз находятся на одном сервере.
Ставим обновления на сервере SEN-EXMB02
После обновления обычно требуется перезагрузится. После перезагрузки, возвращаем сервер из режима обслуживания. Для этого запускаем скрипт с сервера SEN-EXMB01 :
[PS] C:\Program Files\Microsoft\Exchange Server\V14\scripts>.\StopDagServerMaintenance.ps1 -serverName sen-exmb02
Он запустит для каждой базы командлет Resume-MailboxDatabaseCopy, восстановит работу кластера и установить параметр DatabaseCopyAutoActivationPolicy в значение Unrestricted.
После возвращения сервера SEN-EXMB02 из режима обслуживания, необходимо распределить активные и пассивные копии почтовых баз по разным серверам. Для этого запускаем скрипт:
[PS] C:\Program Files\Microsoft\Exchange Server\V14\scripts>.\RedistributeActiveDatabases.ps1 -DagName DAG1 -BalanceDbsByActivationPreference -ShowFinalDatabaseDistribution
C помощью указания различных опций можно перераспределить базы на основании приоритета активации, используя параметр BalanceDbsByActivationPreference. Если вы используете параметр BalanceDbsBySiteAndActivationPreference, скрипт будет предпринимать попытку активировать наиболее предпочитаемую копию и затем выполнить балансировку в пределах сайта. Более подробно можно прочитать здесь
После запуска скрипта для каждой почтовой базы будет выдан запрос, чтобы автоматически ответить на все вопросы можно добавить в скрипт аргумент -Confirm:$false .
Например: .\RedistributeActiveDatabases.ps1 -DagName DAG1 -BalanceDbsByActivationPreference -ShowFinalDatabaseDistribution -Confirm:$false
После выполнения данного скрипта, проверяем состояние копий почтовых баз с помощью командлета Get-MailboxServer | Get-MailboxDatabaseCopyStatus