Как я обновлял exchange 2010 до 2016

Статус
Закрыто для дальнейших ответов.

quake

Случайный прохожий
Решил запилить пост про то как я мигрировал с exchange 2010 на exchange server 2016, вдруг кому то будет полезно. Расскажу как планировалось, какие всплыли грабли и косяки, что пошло по плану миграции, что пошло не по плану и как решалось.

guy.jpg

Итак исходные данные - есть организация exchange 2010, один лес и домен active directory - уровень леса 2008r2, Внутридоменные толстые клиенты outlook 2010, публикация OWA и ActiveSync. Текущая почтовая система работает примерно по такой схеме.
mail.png
 
Задача - переехать на 2 exchange server 2016 построить DAG перетащить туда 150 почтовых ящиков, на все было выделено техническое окно в 3 выходных дня. Старый Exchange отправить в утиль. Т.е. хотели прийти к такой схеме.

mail2.png
 
Миграция была достаточно долго планировалась поэтому постараюсь остановиться на каждом шаге что бы ничего не забыть, который проделывался именно в моем частном случае. У кого то может быть все по другому, так что на правильность сценария миграции не претендую:).
Первым делом было решено заменить контроллеры домена до более новых операционных систем - поэтому за неделю до технического окна была проделана эта работа. Ставить решили сразу на windows server 2019. Меняли поочередно, выводя старые контроллеры домена работающие на 2008 винде. Тут все прошло штатно, после того как перешли на DFSR репликацию и все контроллеры домена фурычили на 2019 сервере, повысили уровень леса до 2012. Выше решено было не поднимать так как остались старые машинки в домене и решили пойти исходя из соображений совместимости.
Что хотелось бы посоветовать на этапе "до миграции".
Совет 1. Обязательно проверьте работоспособность Active Directory. Не начинайте миграцию exchange если у вас есть какие либо проблемы с репликацией AD, групповыми политиками или DNS.
dcdiag вам в помощь а так же
Код:
repadmin /showrepl
repadmin /replsum
Совет 2. Обновите почтовые клиенты Outllook или выведите старые
Совет навеян тем что после миграции некоторые пользователи тупо на смогли подключиться к Exchange, поэтому это лучше сделать заранее. Это был достаточно неожиданный нежданчик для нас, а почта была нужна ПЦ как срочно. Можно было конечно дать owa но именно в нашем случае это не годилось.
Совет 3. Оцените объем данных который нужно переносить.
Я имею в виду размер почтовых баз. Потому как оказалось 5 гб в exchange 2010 не равно 5 гб в exchange 2016. Соберите максимум инфы что бы понимать что и как работает у вас. Скрипты отсюда помогут это сделать
 
Последнее редактирование модератором:
Подготовка схемы AD с сервера Exchange 2016 (проверьте что у вас есть права на это)

Добавляем оснастки
Add-WindowsFeature RSAT-ADDS

Подготавливаем active directory, это делается один раз при установке первого сервера exchange 2016
Setup.EXE /prepareSchema /IAcceptExchangeServerLicenseTerms
.\Setup.EXE /prepareAD /IAcceptExchangeServerLicenseTerms
Нежданчик на этом этапе заключался в том что сервер отказался подготавливать лес без Microsoft Dot Net Framework 4.8 Пришлось ставить недостающие компоненты - а это время.
2222.png
После этого запускаем установку Exchange
.\Setup.exe /mode:Install /r:MB /IAcceptExchangeServerLicenseTerms
1111.png
Здесь тоже были проблемы т.к не были установлены все необходимые компоненты.
Но это я уже нашел позже..
Код:
Install-WindowsFeature AS-HTTP-Activation, Desktop-Experience, NET-Framework-45-Features, RPC-over-HTTP-proxy, RSAT-Clustering, RSAT-Clustering-CmdInterface, RSAT-Clustering-Mgmt, RSAT-Clustering-PowerShell, Web-Mgmt-Console, WAS-Process-Model, Web-Asp-Net45, Web-Basic-Auth, Web-Client-Auth, Web-Digest-Auth, Web-Dir-Browsing, Web-Dyn-Compression, Web-Http-Errors, Web-Http-Logging, Web-Http-Redirect, Web-Http-Tracing, Web-ISAPI-Ext, Web-ISAPI-Filter, Web-Lgcy-Mgmt-Console, Web-Metabase, Web-Mgmt-Console, Web-Mgmt-Service, Web-Net-Ext45, Web-Request-Monitor, Web-Server, Web-Stat-Compression, Web-Static-Content, Web-Windows-Auth, Web-WMI, Windows-Identity-Foundation, RSAT-ADDS

После установки ставлю Exchange 2016 на второй сервер.
 
Последнее редактирование:
После того как все установилось, переименовал и переместил базы туда куда мне надо.
Смотрим базы
Get-MailboxDatabase
Переименовываю базы
Set-MailboxDatabase "Mailbox Database 21341234" -Name "REWMailbox"
Set-MailboxDatabase "Mailbox Database 43562456" -Name "REWArchive"
Перемещаю почтовые базы
Move-DatabasePath "REWMailbox" -EdbFilePath "C:\Databases\REWMailbox\REWMailbox.edb" -LogFolderPath "C:\Databases\REWMailbox"
Move-DatabasePath "REWArchive" -EdbFilePath "C:\Databases\REWArchive\REWArchive.edb" -LogFolderPath "C:\Databases\REWArchive"

На этом этапе все пока идет штатно
 
Далее нужно собрать группу доступности и выбрать свидетеля, поскольку серверов у меня четное число -2.
Собираю DAG
New-DatabaseAvailabilityGroup -Name DAG16 -WitnessServer filesrv.rew.local -WitnessDirectory C:\Witness16

Теперь хотелось бы написать про имена серверов что бы было понятнее что происходит.
mail.rew.local - это почтовый сервер exchange 2010
mail1.rew.local - это почтовый сервер exchange 2016
mail2.rew.local - это почтовый сервер exchange 2016

Теперь добавляю сервера в DAG
Код:
Add-DatabaseAvailabilityGroupServer -Identity DAG16 -MailboxServer MAIL1
Add-DatabaseAvailabilityGroupServer -Identity DAG16 -MailboxServer MAIL2

Проверяю все ли успешно
Get-DatabaseAvailabilityGroup DAG16 -Status

Теперь реплики баз
Код:
Add-MailboxDatabaseCopy "REWMailbox" -MailboxServer mail2
Add-MailboxDatabaseCopy "REWArchive" -MailboxServer mail1
 
Включил цикличное ведение журналов.
Get-MailboxDatabase -Server mail1 | Set-MailboxDatabase -CircularLoggingEnabled $true
Get-MailboxDatabase -Server mail2 | Set-MailboxDatabase -CircularLoggingEnabled $true
Статус можно посмотреть командой
Get-MailboxDatabaseCopyStatus *
Перенес сертификат из старого exchange в новый. Навесил его на службы IIS. Тоже слава богу все прошло гладко.

И вот далее начинается самое интересное. Днс суффиксы у меня различаются OWA опубликована из мира под именем mail.reverend.ru в доменные компы имеют вид rew.local. Теперь надо перенацелить внутренних пользователей прописав им новые пути виртуальных директорий
Это я сделал скриптом https://sysadmins.online/resources/17/
Как он работает если интересно то есть в описании.

После этого я начал перемещать почтовые ящики. Далее начались приключения и отклонения от плана миграции. Оказалось что ящики копировались оооочень долго. Некоторые не копировались вообще...
Почтовый ящик гигов на 5 мог копироваться полчаса а мог 40 минут. А ящиков всего было за сотню.
Некоторые ящики копироваться упорно не хотели а времени оставалось мало. Запросы на перемещение зависали по различным причинам но в основном из за того что в базе данных назначения были другие, более маленькие значения квот, во вторых для базы данных назначения был включен полнотекстовый индекс.

Пришлось в базах назначения временно увеличить значения квот (я хз как это влияет на перемещение ящика, но это помогло)
Set-MailboxDatabase -Identity REWMailbox -IssueWarningQuota 10GB -ProhibitSendQuota 12MB -ProhibitSendReceiveQuota 15GB
Так же пришлось грохнуть полнотекстовый индекс и отключить его для этих баз вообще. Иначе запросы на перемещение впадали в статус
Произошла неустранимая ошибка UpdateMovedMailboxPermanentException или StalledDueToTarget_ContentIndexing
Пришлось отключать для всех баз
Set-MailboxDatabase “your mailbox database” -IndexEnabled:$False
Рестарт служб и грохнуть папки с полнотектовым индексом обязательно.
 
Последнее редактирование модератором:
К середине последнего 3 дня наконец то почтовые ящики переместились. 3 ящика из 150 оказались повреждены. Мы пытались их починить через командлет New-MailboxRepairRequest, но в итоге бросили эту затею. Что бы не держать старый Exchange 2010 с этими 3 ящиками было решено их грохнуть и восстановить из репозитория бэкапов veeam позже.
Совет. Всегда делайте бэкапы домена и Exchange перед миграцией.
После этого завернули smtp траффик на новый exchange, предварительно выключили Exchange 2010. А вместо его dns записи сделали 2 новые
т.е у нас в DNS нарисовались записи

mail1.rew.local - ip1
mail2.rew.local -ip2
mail.rew.local - ip1
mail.rew.local - ip2

Исходя из схемы выше почтовый сервер на Lotus выполнял роль почтового релея и форвардил почту в exchange 2010.

Далее по сюжету..:) После того как выключили Exchange 2010 3.14здец начал обретать феерический масштаб.:eek: Выразилось это в том что внутренние доменные почтовые клиенты Outlook 2010 и Outlook 2016 перестали подключаться к Exchange, причем перестал работать autodiscover. При попытке настроить учетную запись почты - на outlook 2016 просто ничего не происходило и текущая учетка пользователя не подхватывалась, а на outlook 2010 при попытке настроить почту вылезал запрос на ввод логина и пароля в формате UPN, Если ввести корректный пароль юзера то это не срабатывало. При этом почта исправно ходила до почтовых ящиков и в интернет и обратно. OWA и ActiveSync отлично работали. И это вводило нас в ступор и заблуждение. Времени оставалось совсем мало. Пробовали пересоздавать виртуальные директории, менять способы аутентификации в коннекторах - нифига не помогало не работал ни kerberos ни NTLM ни обычная проверка подлинности.
Совет. Не удаляйте старый Exchange. Выключите его и подождите какое то время что бы убедиться что все работает.
В итоге было решено включить старый Exchange 2010 что нас и спасло..:sneaky: После того как включили Exchange толстые клиенты худо бедно заработали.
 
Последнее редактирование модератором:
В итоге решили что какие то из этих ссылок не верные. Это те которые прописывает вот этот ConfigureExchangeURLsскрипт на шаге ранее.

Outlook Anywhere
- Internal: mail.rew.local
- External: mail.reverend.ru

Outlook Web App
- Internal: https//mail.rew.local/owa
- External: https//mail.reverend.ru/owa

Exchange Control Panel
- Internal: https//mail.rew.local/ecp
- External: https//mail.reverend.ru/ecp

Offline Address Book
- Internal: https//mail.rew.local/OAB
- External: https//mail.reverend.ru/OAB

Exchange Web Services
- Internal: https//mail.rew.local/EWS/Exchange.asmx
- External: https//mail.reverend.ru/EWS/Exchange.asmx

MAPI
- Internal: https//mail.rew.local/mapi
- External: https//mail.reverend.ru/mapi

ActiveSync
- Internal: https//mail.rew.local/Microsoft-Server-ActiveSync
- External: https//mail.reverend.ru/Microsoft-Server-ActiveSync

Autodiscover
- Internal SCP: https//mail.rew.local/Autodiscover/Autodiscover.xml
 
Последнее редактирование модератором:
так чем все закончилось то в итоге
тише , спокойствие.. 🤫Дело еще не закончилось. Сейчас более менее все работает когда exchange server 2010 работает. Я жду следующего окна - выходных. Обязательно напишу в чем дело. Сейчас просто опасно уже что то менять т.к на электронную почту завязано много бизнесс процессов
Ждите ответа в следующей серии...
 
Как в анекдоте:
Входим в "мертвую петлю", а как выйти из "петли" в следующем номере....
Спасибо за статью, ждем развязки. Удачи
 
Ну у всех разный сценарий. эт норм. лучше учится на чужих ошибках. Я думаю у него некорректные url..
попробуйте зайти на старый exchange и посмотреть его параметры... Выкатите ссылки оттуда...
 
Последнее редактирование:
UPD. Если нужна какая помощь можем подсобить... ресурсы сообщества к вашим услугам🧐
Напишите а ЛС - глянем. А то негоже человека в беде бросать...
спасибо... есть идеи попробуем в выхи... я думаю я просто ошибся в ссылках. Нужно все завернуть на mail.reverend.ru. Щас к сожалению не могу попробовать много xml отправляют по почте, да и обычных писем хватает - большой риск.
UPD. Натра..лся я конечно всласть за выходные. Если то что я написал выше не сработает, можете подсказать куда копать?? Я думаю надо будет лезть в active directiry через adsiedit. Где интересно хранится в AD информация о SCP :unsure:
 
Последнее редактирование модератором:
Укажите корректные ссылки на autodiscover. Можно с ctrl нажать на свойства подключения в outlook (где значок времени в трее) или показать параметры автообнаружения. Будет понятно кто к кому подключается..
 
К середине последнего 3 дня наконец то почтовые ящики переместились. 3 ящика из 150 оказались повреждены. Мы пытались их починить через командлет New-MailboxRepairRequest, но в итоге бросили эту затею. Что бы не держать старый Exchange 2010 с этими 3 ящиками было решено их грохнуть и восстановить из репозитория бэкапов veeam позже.
Совет. Всегда делайте бэкапы домена и Exchange перед миграцией.
После этого завернули smtp траффик на новый exchange, предварительно выключили Exchange 2010. А вместо его dns записи сделали 2 новые
т.е у нас в DNS нарисовались записи

Исходя из схемы выше почтовый сервер на Lotus выполнял роль почтового релея и форвардил почту в exchange 2010.

Далее по сюжету..:) После того как выключили Exchange 2010 Пц начал обретать феерический масштаб.:eek: Выразилось это в том что внутренние доменные почтовые клиенты Outlook 2010 и Outlook 2016 перестали подключаться к Exchange, причем перестал работать autodiscover. При попытке настроить учетную запись почты - на outlook 2016 просто ничего не происходило и текущая учетка пользователя не подхватывалась, а на outlook 2010 при попытке настроить почту вылезал запрос на ввод логина и пароля в формате UPN, Если ввести корректный пароль юзера то это не срабатывало. При этом почта исправно ходила до почтовых ящиков и в интернет и обратно. OWA и ActiveSync отлично работали. И это вводило нас в ступор и заблуждение. Времени оставалось совсем мало. Пробовали пересоздавать виртуальные директории, менять способы аутентификации в коннекторах - нифига не помогало не работал ни kerberos ни NTLM ни обычная проверка подлинности.
Совет. Не удаляйте старый Exchange. Выключите его и подождите какое то время что бы убедиться что все работает.
В итоге было решено включить старый Exchange 2010 что нас и спасло..:sneaky: После того как включили Exchange толстые клиенты худо бедно заработали.
как говорится у пилотов инструкции написаны кровью а у админов - вазелином. Удачи бро. ищи настройки автодискавера ...
 
Настройка autodiscover в exchange 2016
 
Я бы начал с проверки корректности сертификата
 
Всем привет и это снова я со своими exchange 2016! В общем дождался я наконец то выходных что бы помучить настройки своего exchange 2016. Долго и муторно проверял все ссылки, автодискаверы и записи в CNAME .И пришел к выводу что настроено то у меня верно все. На самом деле то проблема в другом - перестала работать аутентификация в exchange 2016. Я заметил что как только я пытаюсь открыть чей то Outlook - он начинает просить пароль а в это время на exchange 2016 в журнале Безопасность бахчисарайским фонтаном сыпятся ошибки с event id 4625 Microsoft Windows Security Auditing. Причем по всем пользователям вне зависимости от версии Outlook.
Вот так это выглядит
65656.png

Верные пароли естественно не работают, NTLM в exchange перестал работать наглухо. Ряд советчиков в этих наших интернетах пишут что можно подправить локальную политику безопасности сервера, вот в этих местах:
55555.png

Мне вобщем это не помогло. Абсолютно ничего не изменилось. Так что мои мудовые рыдания продолжаются - чем закончится хз. Напишу позднее, пока понять почему не работает авторизация не удалось.. И да если включить старый exchange то начинает все работать.. я хз почему..:unsure:
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх Низ