Инструкция по добавлению нового сервера в DAG

Эту пошаговую инструкцию, по добавлению дополнительного сервера в Database Availability Group (DAG) Microsoft Exchange Server, натолкнуло написать периодическое выполнение соответствующих работ. Однако, каждый раз сталкивался с тем что какую-то из операций, либо забывал выполнить, либо в приходилось обращаться к документации, чтобы уточнить те или иные действия. Если с вашей стороны есть замечания комментарии или дополнения, то буду рад обратной связи.
Итак,
Порядок добавления дополнительного почтового сервера в DAG
1. Импортируем на сервер валидный сертификат (Как правило можно взять с рядом стоящего сервера, так как мы добавляем дополнительный сервер, а не развертываем инфраструктуру с нуля)

2. Устанавливаем Exchange Server 2010/2013/2016 (Пошагово выполняем установку Exchange Server)

здесь и далее предполагается, что роли Client Access, Hub transport и Mailbox будут устанавливаться на одном сервере (что by design для Exchange 2016) и вовсе не обязательно для Exchange 2010 и 2013

Рекомендуется заранее подготовить командлеты для пунктов 3 и 4, выполнить их сразу после установки сервера, и далее сразу выполнить замену сертификата на IIS

3. Изменяем Адрес подключения для доменных клиентов (параметр AutoDiscoverServiceInternalUri)
определяем текущие настройки и проверяем, что они идентичны на всех серверах. Для этого через командлет:

Get-ClientAccessServer | ft Name,AutoDiscoverSiteScope, AutoDiscoverServiceInternalUri -AutoSize

получаем значение параметра AutoDiscoverServiceInternalUri для сайта SiteName в котором выполняется установка и назначаем новые значения:

Set-ClientAccessServer -Identity EXCHMB04 -AutoDiscoverSiteScope {SiteName} -AutoDiscoverServiceInternalUri "https://mail.contoso.com/Autodiscover/Autodiscover.xml"

4. Изменяем параметры InternalUrl, ExternalUrl и способы аутентификации для виртуальных каталогов

В случае сложной многосайтовой почтовой инфраструктуры значения должны прописываться с учетом Internet-facing и особенностями Вашей среды

4.1 MAPI
определяем текущие настройки и проверяем, что они идентичны на всех серверах

Get-MapiVirtualDirectory | fl Name, Internal*, External*, IIS*

задаем новые значения

Set-MapiVirtualDirectory -Identity "EXCHMB04\mapi (Default Web Site)" -InternalUrl "https://mail.contoso.com/mapi" -ExternalUrl "https://mail.contoso.com/mapi" -IISAuthenticationMethods Ntlm, OAuth, Negotiate

4.2 Autodiscover
определяем текущие настройки и проверяем, что они идентичны на всех серверах

Get-AutodiscoverVirtualDirectory | fl Identity, Internal*, External*

4.3 ECP
определяем текущие настройки и проверяем, что они идентичны на всех серверах

Get-EcpVirtualDirectory | fl Identity, Internal*, External*

задаем новые значения

Set-EcpVirtualDirectory -Identity "EXCHMB04\ecp (Default Web Site)" -InternalUrl "https://mail.contoso.com/ecp" -ExternalUrl "https://mail.contoso.com/ecp"

4.4 EWS
определяем текущие настройки и проверяем, что они идентичны на всех серверах

Get-WebServicesVirtualDirectory | fl Identity, Internal*, External*

задаем новые значения

Set-WebServicesVirtualDirectory -Identity "EXCHMB04\EWS (Default Web Site)" -InternalUrl "https://mail.contoso.com/EWS/Exchange.asmx" -ExternalUrl "https://mail.contoso.com/EWS/Exchange.asmx"

4.5 Microsoft-Server-ActiveSync
определяем текущие настройки и проверяем, что они идентичны на всех серверах

Get-ActiveSyncVirtualDirectory | fl identity, internal*, External*

задаем новые значения

Set-ActiveSyncVirtualDirectory -Identity "EXCHMB04\Microsoft-Server-ActiveSync (Default Web Site)" -InternalUrl "https://mail.contoso.com/Microsoft-Server-ActiveSync" -ExternalUrl "https://mail.contoso.com/Microsoft-Server-ActiveSync"

4.6 OAB
определяем текущие настройки и проверяем, что они идентичны на всех серверах

Get-OabVirtualDirectory | fl Identity, Internal*, External*

задаем новые значения

Set-OabVirtualDirectory -Identity "EXCHMB04\OAB (Default Web Site)" -InternalUrl "https://mail.contoso.com/OAB" -ExternalUrl "https://mail.contoso.com/OAB"

4.7 OWA
определяем текущие настройки и проверяем, что они идентичны на всех серверах

Get-OwaVirtualDirectory | fl Identity, Internal*, External*

задаем новые значения

Set-OwaVirtualDirectory -Identity "EXCHMB04\owa (Default Web Site)" -InternalUrl "https://mail.contoso.com/owa" -ExternalUrl "https://mail.contoso.com/owa"

4.8 Outlook Anywhere
определяем текущие настройки и проверяем, что они идентичны на всех серверах

Get-OutlookAnywhere | fl Identity, Internal*, External*, IIS*

задаем новые значения

Set-OutlookAnywhere -Identity "EXCHMB04\Rpc (Default Web Site)" -InternalHostname mail.contoso.com -ExternalHostname mail.contoso.com -ExternalClientsRequireSsl:$true -InternalClientsRequireSsl:$true -ExternalClientAuthenticationMethod Negotiate

5. Заменяем сертификат в настройках IIS
для этого в настройках Binding для Default Web Site заменяем сертификат с самоподписанного на валидный сертификат содержащий DNS имена вашей организации (или wildcard сертификат)

6. Получаем список коннекторов получателей с одного из серверов

Get-ReceiveConnector -Server EXCHMB03

Далее, создаем коннекторы получатели на новом сервере по аналогии со старым сервером, для этого можно использовать готовый скрипт: Copy-ReceiveConnector.ps1, его актуальную версию можно найти здесь.
где в качестве параметров указываем Исходный сервер (SourceServer), имя коннектора (ConnectorName), Целевой сервер (TargetServer)

.\Copy-ReceiveConnector.ps1 -SourceServer EXCHMB03 -ConnectorName InternalServers -TargetServer EXCHMB04
.\Copy-ReceiveConnector.ps1 -SourceServer EXCHMB03 -ConnectorName Scanners -TargetServer EXCHMB04
.\Copy-ReceiveConnector.ps1 -SourceServer EXCHMB03 -ConnectorName Monitoring -TargetServer EXCHMB04

7. Переносим все ящики из созданной при инсталляции сервера БД в другую БД (пользовательские, ящики мониторинга и арбитража)
выполняем Get-MailboxDatabase и находим вновь созданную базу ( ее имя будет примерно такое: Mailbox Database 1356181079)
Получаем список пользовательских и служебных почтовых ящиков

Get-Mailbox -Database "Mailbox Database 1756171079"
Get-Mailbox -Database "Mailbox Database 1756171079" -Arbitration
Get-Mailbox -Database "Mailbox Database 1756171079" -Monitoring


Переносим служебные ящики в другую базу

Get-Mailbox -Database "Mailbox Database 1756171079" -Monitoring | New-MoveRequest -TargetDatabase userdb1
Get-Mailbox -Database "Mailbox Database 1756171079" -Arbitration | New-MoveRequest -TargetDatabase userdb1
Get-Mailbox -Database "Mailbox Database 1756171079" | New-MoveRequest -TargetDatabase userdb1


Ожидаем завершени переноса почтовых ящиков
все задачи в Get-MoveRequest должны перейти в статус Completed
Удаляем запрос на перенос БД Get-MoveRequest | Remove-MoveRequest -Confirm:$false
и Удаляем БД

Remove-MailboxDatabase "Mailbox Database 1756171079" -Confirm:$false

8. Добавляем сервер в DAG
Оперделяем имя DAG через командлет:

 Get-DatabaseAvailabilityGroup

Определяем названия необходимого нам DAG и запускаем командлет добавления почтового сервера в DAG

Add-DatabaseAvailabilityGroupServer -Identity DAG -MailboxServer EXCHMB04 

9. Определяем расположение файлов баз данных и логов

Get-MailboxDatabase | ft Name, *path*

создаем аналогичную структуру папок на добавляемом сервере, ее можно создать вручную или воспользоваться скриптом который необходимо выполнять локально на добавляемом сервере

Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010
$ListFolder = Get-MailboxDatabase
Foreach ($folder in $ListFolder)
{
$LocEDB = ($Folder.EdbFilePath.PathName).Substring(0,($Folder.EdbFilePath.PathName).LastIndexOf("\"))
$LocLOG = $folder.LogFolderPath.PathName
New-Item -ItemType directory -Path $LocEDB
New-Item -ItemType directory -Path $LocLOG
}

Если структуру папок надо создавать не для всех баз, то надо явно указать список баз для который необходимо создать структуру папок

Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010
$ListFolder = ("UserDB3", "VIPDB2") |Get-MailboxDatabase
Foreach ($folder in $ListFolder)
{
$LocEDB = ($Folder.EdbFilePath.PathName).Substring(0,($Folder.EdbFilePath.PathName).LastIndexOf("\"))
$LocLOG = $folder.LogFolderPath.PathName
New-Item -ItemType directory -Path $LocEDB
New-Item -ItemType directory -Path $LocLOG
}


10. Добавляем пассивную реплику для необходимых баз данных
Командлет ниже, добавляет для почтовой базы данных VIPDB2 дополнительную копию данных размещенную на сервере EXCHMB04

Add-MailboxDatabaseCopy -Identity VIPDB2 -MailboxServer EXCHMB04

Можно добавить параметр -ActivationPreference, в котором указать приоритет активации базы, при выходе из строя активной базы данных, но если он явно не указан, то значение порядка активации будет самым последним

Добавить комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.