Миграция Exchange 2013-2019. Часть 2

В прошлом году мы приняли давно назревшее решение об обновлении домена и Exchange на 2019. Работа очень объёмная, процесс длится уже больше года. Рассказываем, как мы готовили и настраивали сервера.

Продолжение.

Содержание:

Часть 1.

6. Миграция почтовых ящиков

6.1. Автономная адресная книга (OAB)

6.2. Миграция системных ящиков

6.3. Миграция ящиков общих папок

6.4. Миграция ящиков пользователей

6.5. Возможные ошибки

7. Удаление серверов Exchange 2013 — EX1 и EX2

8. Обновление пограничных серверов EDGE

8.1. Удаление подписки 2013 EDGE-сервера

8.2. Подготовка 2019 EDGE-сервера

8.3. Создание подписки нового EDGE-сервера

8.4. Установка сертификата на коннектор приема

9. Заключение

6. Миграция почтовых ящиков

В Exchange есть системные ящики, также называемые ящиками арбитража. Генерация автономной адресной книги (OAB), также происходит в арбитражном почтовом ящике.

Теперь требуется  перенести в новый Exchange — DAG19 почтовые ящики, не только пользователей, но и почтовые ящики арбитража (Arbitration) и общих папок (Public Folders). Подробнее.

При перемещении любых ящиков создаются запросы перемещения (MoveRequest).

Отобразить запросы перемещения ящиков:

Get-MoveRequest | Get-MoveRequestStatistics

Удалить, завершенные запросы на перемещение ящиков:

Get-MoveRequest -MoveStatus Completed -ResultSize Unlimited | Remove-MoveRequest -Confirm:$false

  1. Автономная адресная книга (OAB):

Список OAB:

Get-OfflineAddressBook | Select AddressLists, Name,*Version, Virt*,*Web*,GeneratingMailbox | OGV

Ящик, содержащий OAB«ы с отображение локации (сервера и БД) на Exchange 2013:

$Ex2013Servers = Get-MailBoxServer | Where {$_.AdminDisplayVersion -Like «Version 15.0*»} 

$Ex2013Servers | Get-Mailbox -Arbitration | ?{$_.PersistedCapabilities –like «OrganizationCapabilityOABGen»} | Select Name, ServeerName

Name                                                  ServerName

-----                                                 ----------

SystemMailbox{bb558c35–97f1–4cb9–8ff7-d53741dc928c}   ex1

  1. Миграция системных ящиков:

Отобразить арбитражные почтовые ящики расположены в среде Exchange 2013:

$Ex2013Servers = Get-MailBoxServer | Where {$_.AdminDisplayVersion -Like «Version 15.0*»} 

$Ex2013Servers | Get-Mailbox -Arbitration

Name                                                  ServerName

-----                                                 ----------

SystemMailbox{bb558c35–97f1–4cb9–8ff7-d53741dc928c}   ex1

FederatedEmail.4c1f4d8b-8179–4148–93bf-00a95fa1e042   ex1

Migration.8f3e7716–2011–43e4–96b1-aba62d229136        ex1

SystemMailbox{1f05a927-xxxx-xxxx-xxxx-xxxxxxxxxxxx}   ex1

SystemMailbox{bb558c35–97f1–4cb9–8ff7-d53741dc928c}   ex1

SystemMailbox{e0dc1c29–89c3–4034-b678-e6c29d823ed9}   ex1

Запустить миграцию арбитражных почтовых ящиков в Ex2019DB. Эта БД расположена в среде Exchange 2019:

$Ex2013Servers = Get-MailBoxServer | Where {$_.AdminDisplayVersion -Like «Version 15.0*»} 

$Ex2013Servers | Get-Mailbox -Arbitration | New-MoveRequest -TargetDatabase Ex2019DB

DisplayName                                           StatusDetail    TotalMailboxSize          PercentComplete

-----------                                           ------------    ----------------          ---------------

SystemMailbox{bb558c35–97f1–4cb9–8ff7-d53741dc928c}   Queued          305.7 KB (313,037 bytes)  0

FederatedEmail.4c1f4d8b-8179–4148–93bf-00a95fa1e042   Queued          302.7 KB (309,919 bytes)  0

Migration.8f3e7716–2011–43e4–96b1-aba62d229136        Queued          299.9 KB (307,073 bytes)  0

SystemMailbox{1f05a927-xxxx-xxxx-xxxx-xxxxxxxxxxxx}   Queued          205.4 KB (210,330 bytes)  0

SystemMailbox{bb558c35–97f1–4cb9–8ff7-d53741dc928c}   Queued          303.6 KB (310,887 bytes)  0

SystemMailbox{e0dc1c29–89c3–4034-b678-e6c29d823ed9}   Queued          280.5 KB (287,232 bytes)  0

  1. Миграция ящиков общих папок:

Запустить миграцию ящиков общих почтовых ящиков в Ex2019DB. Это БД расположена в среде Exchange 2019:

$Ex2013Servers = Get-MailBoxServer | Where {$_.AdminDisplayVersion -Like "Version 15.0*"} 

$Ex2013Servers | Get-Mailbox-PiblicFolder | New-MoveRequest -TargetDatabase Ex2019DB

Для отображения и удаления запросов на перемещения, также используем: Get-MoveRequest/Remove-MoveRequest

  1. Миграция ящиков пользователей:

Запустить миграцию ящиков общих почтовых ящиков в Ex2019DB. Это БД расположена в среде Exchange 2019:

$Ex2013Servers = Get-MailBoxServer | Where {$_.AdminDisplayVersion -Like "Version 15.0*"} 

$Ex2013Servers | Get-Mailbox  | New-MoveRequest -TargetDatabase Ex2019DB

Для отображения и удаления запросов на перемещения, также используем: Get-MoveRequest/Remove-MoveRequest

  1. Возможные ошибки:

Иногда после переноса почтового ящика клиент не может подключится, тогда нужно перезапустить пул MSExchangeAutoDiscoveryAppPool (ссылка):

Outlook not connecting to Exchange after migration autodiscoverpool recycle

Outlook not connecting to Exchange after migration autodiscoverpool recycle


Можно поставить на время миграции автоматический перезапуск пула.

После завершения переноса почтового ящика, если Outlook включен, клиент увидит окно с уведомлением о необходимости перезапуска Outlook:

627c0563b4a52440a92276a12515cc2d.png

Достаточно просто перезапустить Outlook.

7. Удаление серверов Exchange 2013 — EX1 и EX2:

После окончания процесса миграции, после того как мы убедимся, что все работает, нужно удалить Exchange 2013. Для проверки можно просто выключить сервера Exchange 2013 на несколько дней. Все действия можно выполнить, используя ECP или PowerShell. 

Этапы вывода серверов Exchange:

  • Удаление DAG серверов Exchange 2013:

    #Отобразить группу высокой доступности Exchange 2013:

    Get-DatabaseAvailabilityGroup -Identity DAG01

    #Предварительно необходимо удалить все сервера из группы высокой доступности DAG01:

    Remove-DatabaseAvailabilityGroupServer -Identity DAG01 -MailboxServer EX1\EX2

    #Удалить саму группу высокой доступности DAG01:

    Remove-DatabaseAvailabilityGroup-Identity DAG01

8. Обновление пограничных серверов EDGE:

Для того, чтобы заменить EDGE сервер, нужно сначала убрать его из внешнего DNS. Так как в моей конфигурации их два, то поток почты просто пойдет через второй, и работа почты не будет нарушена.

EDGE сервер не находятся в домене, но, в то же время, он использует одностороннюю синхронизацию со службами AD. Для этого используется механизм подписки (SubScription) на сайт Active Directory, а на самом EDGE-сервере устанавливается облегченная версия службы каталогов AD LDS (Active Directory Lightweight Directory).

Итак выводим 2013 EDGE-сервер из подписки и вводим EDGE 2019. То же самое делаем со вторым EDGE-сервером.

Установка EDGE-сервера подробно: ссылка1 и ссылка2.

  1. Удаление подписки 2013 EDGE-сервера:

Для даление подписки нужно запустить командлет два раза: — на EDGE-сервере и на любом MBX\CAS-сервере и согласиться с удалением:

Remove-EdgeSubscription EDGE1

  1.  Подготовка 2019 EDGE-сервера:

Разворачиваем сервер Windows Server 2019, EDGE1. Оставляем в рабочей группе — не добавляем в домен. Устанавливаем настройки сети, такие же (IP-адрес), как у 2013 EDGE-сервера.

Важный пункт — нужно добавить DNS-суффикс домена, в моем случае — domen.ru и тогда Full computer name будет —  EDGE1.domen.ru. Перезагружаем.

0c3a4f4c3cd7c4a12007e8bd54fca2c0.png

 Устанавливаем необходимые пакеты:

И службу AD LDS:

Install-WindowsFeature ADLDS

Запускаем установку, только выбираем роль «Edge Transport role«И службу AD LDS:

f34c774ee4f695ad4e39629eebedcd97.png

Опять перезагружаем. Проверяем, инсталлятор должен был открыть входящие порты 50636, 50389 и 25 порт.

  1.  Создание подписки нового EDGE-сервера:

Запускаем на EDGE-сервере:

New-EdgeSubscription -Filename "C:\edge1.xml"

У нас появится файл XML, который нужно импортировать на MBX\CAS-сервере. Просто копируем его на EX01 или EX02. Выполняем команду уже на MBX\CAS-сервере:

New-EdgeSubscription -FileData ([byte[]]$(Get-Content -Path «C:\edge1.xml» -Encoding Byte -ReadCount 0)) -Site «Default-First-Site-Name»

Name  Site                                                     Domain

----  ----                                                     ------

EDGE1 domen.ru/Configuration/Sites/Default-First-Site-Name domen.ru

Чтобы не ждать и синхронизации, запускаем ее, потребуется время:

Start-EdgeSynchronization

Для проверки синхронизации:

Test-EdgeSynchronization -TargetServer EDGE1

RunspaceId                  : a270935e-81a2–4e28–9c18-a3c94603c2f9

SyncStatus                  : Normal

UtcNow                      : 04.11.2024 11:56:36

Name                        : EDGE1

LeaseHolder                 : CN=EX01, CN=Servers, CN=Exchange Administrative Group (FYDIBOHF23SPDLT), CN=Administrative Groups,

                             CN=domen, CN=Microsoft Exchange, CN=Services, CN=Configuration, DC=domen, DC=ru                        

LeaseType                   : Option

FailureDetail               :

LeaseExpiryUtc              : 04.11.2024 12:26:09

LastSynchronizedUtc         : 04.11.2024 11:56:09

TransportServerStatus       : Skipped

TransportConfigStatus       : Skipped

AcceptedDomainStatus        : Skipped

RemoteDomainStatus          : Skipped

SendConnectorStatus         : Skipped

MessageClassificationStatus: Skipped

RecipientStatus             : Skipped

CredentialRecords           : Number of credentials 12

CookieRecords               : Number of cookies 2

Результат синхронизации (SyncStatus) Normal, без ошибок.

Возвращаем во внешнем DNS запись для EDGE1. Повторяем все пункты для EDGE2.

  1.  Установка сертификата на коннектор приема.

Так как в нашей конфигурации используются пограничные сервера. То первой, точкой приема будет коннектор приема на EDGE-сервере. И можно (не обязательно) установить сертификат согласно пункту 5.5. Предварительно нужно скопировать сертификат и импортировать (*.pfx)  в «Personal\Certificates»(пункт 5.3).

9. Заключение

Был проведено обновление всей инфраструктуры. Причем с важным условием: не останавливая\нарушая работу сервисов. Результат вполне удовлетворительный.

© Habrahabr.ru