Переносим почтовую систему с Exchange 2007 на Exchange 2010. Вторая часть.

24/01/2012. Автор: inbloom
Прочитали - твитните и лайкните :-) Социальные кнопки внизу, после комментариев. Спасибо, что твитнули и лайкнули новость!

Устанавливаем вторые сервера в и NLB
Чуть раньше нами был рассмотрен процесс установки и настройки первых серверов в DAG и NLB. Теперь же нам остается лишь добавить некоторые дополнительные виды серверов, для того чтобы решение обрело статус отказоустойчивого.
Добавление второго узла в DAG
Сам процесс добавления второго узла практически ничем существенным не отличается от первого. Здесь также задействуются два сетевых интерфейса. Один из них должен иметь сетевые настройки, которые будут характерны для всех клиентов локальной сети. На интерфейсе, служащем для репликации мы оставим включенным только один Internet Protocol Version 4. Нужно помнить, что необходимо указать правильный ip-адрес (не такой как у интерфейса для репликации на первом узле!) и, конечно же, маску подсети, не нужно указывать dns- и gateway-, а кроме того следует отключить на dns-сервере регистрацию клиента (др.словами Register this connection’s addresses in DNS).
После того, как все эти действия будут выполнены можно смело приступать к непосредственной установке всех нужных компонентов нашей системы с помощью PowerShell. Вот как это должно выглядеть:
Import-Module ServerManager
Add-WindowsFeature NET-Framework,RSAT-ADDS,Web-Server,Web-Basic-Auth, Web--Auth,Web-Metabase,Web-Net-Ext,Web-Lgcy-Mgmt-Console,WAS-Process-Model, RSAT-Web-Server -Restart
После того, как будет выполнена перезагрузка системы, следует установить сервер (роль Mailbox). А именно:
setup.com /r:M /Mdbname:”HQ Mailbox Database 01″ /DbFilePath:e:\db01\db01.edb /LogFolderPath:d:\log01
Делается это все не в графическом режиме, так как в данном случае мы сможем задать имя, а также и расположение самой первой базы почты еще заранее. Выполнив очередную перезагрузку – можно настраивать сервер на роль узла DAG.
Вспомним, что ранее нами была создана группа доступности, что означает, что новый сервер для почтовых ящичков нужно просто к ней добавить. Делается это следующим образом:
Add-DatabaseAvailabilityGroupServer -Identity hq-dag -MailboxServer hq-mbx4
В то время как этот командлет будет работать, попутно будут устанавливаться нужные бинарники для кластерной службы Windows, будет полностью проверен на наличие ошибок сервер hq-mbx4 и если все закончится успешно, то он автоматически добавиться в нашу группу доступности.
По завершению этих операций, можно будет приступать к созданию копий почтовых баз, которые уже были созданы ранее на 1-м узле группы.
Добавление второго сервера с ролями Sever и Hub Transport Server
В первую очередь, с помощью PowerShell устанавливаем все компоненты системы, что будут необходимы. Вот как это выглядит:

Import-Module ServerManager

Add-WindowsFeature NET-Framework,RSAT-ADDS,Web-Server,Web-Basic-Auth, Web-Windows-Auth,Web-Metabase,Web-Net-Ext,Web-Lgcy-Mgmt-Console,WAS-Process-Model, RSAT-Web-Server,Web-ISAPI-Ext,Web-Digest-Auth,Web-Dyn-Compression, NET-HTTP-Activation,RPC-Over-HTTP-Proxy,Telnet-Client,NLB -Restart
После того, как система перезапуститься, мы должны настроить сервис Net.Tcp Port Sharing на работу в автоматическом запуске. Делается это так:
Set-Service NetTcpPortSharing -StartupType Automatic
Следующий шаг – это установка непосредственного сервера Exchange 2010. Помним, что ранее мы уже сделали все нужные настройки при установке 1-го сервера с ролями Hub Transport и CAS, поэтому в данном случае можно устанавливать сервер, только лишь с помощью командной строки, без указания каких-либо дополнительных параметров. То есть:
setup.com /r:C,HT
Перезагрузив систему можно начинать настраивать новый сервер, а затем добавлять его прямо в NLB.
В первую очередь нужно запустить следующую консоль, находящуюся в административных утилитах – Network Load Balancing Manager, а затем подключиться к уже созданному кластеру. Делается это так, как показано на рисунках ниже:

Затем добавляем новый узел:

Теперь следует указать сетевой интерфейс (он войдет в состав балансировщика), а также нужно указать некоторые дополнительные настройки, а после недолгой конфигурации – состав балансировщика пополниться еще одним узлом:


Следующий шаг – это настройка ролей на нашем новом сервере. В принципе, настройка 2-го узла балансировщика практически ничем не будет отличаться от установки 1-го узла, описанной ранее. Исключение лишь составит настройка массива для серверов CAS. В виду того, что он уже ранее был создан, все сервера с ролью CAS, установленные позже войдут в него по умолчанию.
Переносим функции клиентского доступа в Exchange 2010
После того как установка и настройка для серверов Exchange 2010 будет завершена, нужно будет переключить клиентов на созданные серверы клиентского доступа. Здесь нужно помнить, что на базе Exchange 2010 все серверы с клиентским доступом не смогут подключиться к серверам ящиков почты на , ровно, как и наоборот. А значит, все серверы с клиентским доступом следует вывести только лишь после того, как на прежних серверах ящиков (почтовых) не останется ровно никакой информации. После того, как клиентский доступ будет переключен на сервера Exchange 2010, все новые клиенты будут обращены на новые созданные сервера сразу при подключении. Те же клиенты, у кого почтовые ящики будут все еще находиться на прежних серверах ящиков, будут переадресовываться в автоматическом режиме на старые сервера с клиентским доступом, а клиенты, у кого ящики находятся на новых серверах, смогут работать в обычном режиме.
Нельзя сказать, что сам процесс переключения тривиален, а потому я попробовал его подробно описать, исходя из статьи на блоге команды Exchange. Читаем ниже:
Теперь у нас выданы и установлены все нужные сертификаты, а сервера клиентского доступа также настроены и готовы к работе. Кроме того на них включен Outlook Anywhere. Не стоит также забывать и о том, что у нас есть балансировщик нагрузок, задача которого балансировать все клиентские подключения на определенные серверы с клиентским доступом.
Нужно проверить параметр ExternalURL, причем проверяем его буквально на каждом из серверов клиентского доступа Exchange 2010 для оффлайновой службы адресной книги, веб-сервиса, OWA, Exchange Control Panel (или же ECP), а также ActiveSync. Делается это следующим образом:
Get-OABVirtualDirectory servername\OAB* | fl -ExternalURL
Get-WebServicesVirtualDirectory servername\EWS* | fl -ExternalURL
Get-ActiveSyncVirtualDirectory -Identity servername\Microsoft-Server-ActiveSync | fl -ExternalURL
Get-OWAVirtualDirectory servername\OWA* | fl –ExternalURL
Get-ECPVirtualDirectory servername\ECP* | fl -ExternalURL
В том случае, если на некоторых серверах данные параметры будут пусты или будут указывать не на внешний доменный адрес балансировщика, то его обязательно нужно будет указать:
Set-OABVirtualDirectory servername\OAB* -ExternalURL https://hq-hub.domain.com/OAB
Set-WebServicesVirtualDirectory servername\EWS* -ExternalURL https://hq-hub.domain.com/ews/exchange.asmx
Set-ActiveSyncVirtualDirectory -Identity servername\Microsoft-Server-ActiveSync -ExternalURL https://hq-hub.domain.com/Microsoft-Server-ActiveSync
Set-OWAVirtualDirectory servername\OWA* -ExternalURL https://hq-hub.domain.com/OWA
Set-ECPVirtualDirectory servername\ECP* -ExternalURL https://hq-hub.domain.com/ECP
В том случае, если в наличии есть серверы Exchange 2007 в тех сайтах, которые не имеют доступа в сеть Интернет, то нужно сделать копии бинарных файлов OWA Exchange 2007 (самая старшая версия, сегодня это папка «8.3.192.1», которая располагается в %ProgramFiles%\Microsoft\Exchange Server\Client Access\Owa) и вставить их в папку %ProgramFiles%\Microsoft\Exchange Server\V14\ClientAccess\ на все серверы с клиентским доступом в Exchange 2010. Завершив данные операции следует запустить IISReset на каждом сервере клиентского доступа Exchange 2010.
Перенесение оффлайновой адресной книги на сервера Exchange 2010
В первую очередь перенесем весь процесс создания книги на любой сервер почтового ящика Exchange 2010 (минус в том, что указать DAG не представляется возможным):
Move-OfflineAddressBook “Default Offline Address List” -Server servername
После этого, нужно добавить в свойства адресной книги некоторые точки распространения, которые расположены на наших серверах с клиентским доступом Exchange 2010. Набираем следующие команды:
$OABVDir=Get-OABVirtualDirectory -Server servername
$OAB=Get-OfflineAddressBook “Default Offline Address List”
$OAB.VirtualDirectories += $OABVdir.DistinguishedName
Set-OfflineAddressBook “Default Offline Address List” -VirtualDirectories $OAB.VirtualDirectories
Весь процесс будет повторяться для 2-х серверов с клиентским доступом. Указать балансировщик в данном случае не представляется возможным. Делается это также и через EMC. А именно:
Organization Configuration > Mailbox > Offline Address Book.
Затем, проверим доступность из сети Интернет наших серверов с ролью клиентского доступа и балансировщика нагрузки.
После этого, можно приступать к непосредственному процессу переключения функций -го доступа с серверов Exchange 2007 на сервера Exchange 2010. Для этого проверим записи в параметре ExternalURL, причем проверим на каждом отдельном сервере клиентского доступа Exchange 2007 для специализированных служб оффлайн адресной книги, а также веб-сервиса и OWA с ActiveSync. Смотрим ниже, как это выглядит:
Get-OABVirtualDirectory servername\OAB* | fl -ExternalURL
Get-WebServicesVirtualDirectory servername\EWS* | fl -ExternalURL
Get-ActiveSyncVirtualDirectory -Identity servername\Microsoft-Server-ActiveSync | fl –ExternalURL
Get-OWAVirtualDirectory servername\OWA* | fl –ExternalURL
В том случае, если указывается не имя сервера, чьи настройки мы рассматриваем, то лучше всего сделать так:
Set-OABVirtualDirectory servername\OAB* -ExternalURL https://servername.domain.com/OAB
Set-WebServicesVirtualDirectory servername\EWS* -ExternalURL https://servername.domain.com/ews/exchange.asmx
Set-ActiveSyncVirtualDirectory -Identity servername\Microsoft-Server-ActiveSync -ExternalURL https://servername.domain.com/Microsoft-Server-ActiveSync
Set-OWAVirtualDirectory servername\OWA* -ExternalURL https://servername.domain.com/OWA
Данная настройка обусловлена тем, что клиент, имеющий ящик на одном из серверов Exchange 2007 в момент захода на сервер с клиентским доступом Exchange 2010 будет автоматом переброшен на тот адрес, который указан в параметре ExternalURL той службы, которая на данный момент запрашивается клиентом. А значит, наиболее простым вариантом будет указать в данном параметре сервера с клиентским доступом, или же их DNS-алиасы, которые будут доступны снаружи.
Далее, необходимо поменять как во внешнем, так и внутреннем dns запись autodiscover.domain.com (A, CNAME, SRV) таким образом, чтобы она ссылалась на балансировщик нагрузки. Затем, нужно некоторое время подождать пока обновится dns-кэш на всех клиентах.
Завершив перенастройку свойств всех виртуальных директорий нужно переключить сервис, отвечающий за автообнаружение со старых серверов на новые (т.е. балансировщик нагрузки). Для каждого сервера клиентского доступа в Exchange 2007 это выполняется командой, приведенной ниже:
Get-ClientAccessServer servername –AutoDiscoverServiceInternalUri https://hq-hub.domain.com/Autodiscover/Autodiscover.xml
Создаем права доступа для регионального офиса
Что касается непосредственной модели назначения прав доступа в Exchange 2010, то она существенно изменилась в сравнении с Exchange 2007. В данном разделе я подробно опишу всю процедуру создания прав доступа. По аналогии с моделью Exchange 2007 мы попробуем дать неограниченный доступ всем региональным администраторам к их почтовым сервакам, а кроме того попытаемся дать также полный доступ и к региональным почтовым объектам и ко всем общим папкам. В первую очередь необходимо создать некоторые области действия для региональных администраторов. Это будет использоваться для почтовых объектов:
New-ManagementScope “Region1 Recipients Scope” -RecipientRoot region1.local -RecipientRestrictionFilter ‘(objectclass -like “*”)’
Сервера же будут иметь следующий вид:
New-ManagementScope “Region1 Servers Scope” -ServerRestrictionFilter {ServerSite -eq “Region1-Site-Name”}
После этой процедуры нужно скопировать все роли из уже действующей группы ролей, а именно Server Management, и вставить их в новую группу, чья область действия будет ограничиваться только лишь региональными серверами. После этого останется только добавить одного или группу администраторов. А именно:
$RoleGroup = Get-RoleGroup “Server Management”
New-RoleGroup “Region1 Server Management” -Roles $RoleGroup.Roles -CustomConfigWriteScope “Region1 Servers Scope” -ManagedBy “region1 admin” -Members “region1 admin”
Исходя из предыдущей записи мы вновь копируем все роли из группы под названием Recipient Management и вставляем их в новую группу, чья область действия будет ограничена региональным(ми) почтовыми объектами. И опять в конце добавляем в нее регионального(ых) администраторов. Делаем это следующим образом:
$RoleGroup = Get-RoleGroup “Recipient Management”
New-RoleGroup “Region1 Recipient Management” -Roles $RoleGroup.Roles -CustomRecipientWriteScope “Region1 Recipients Scope” -ManagedBy “region1 admin” -Members “region1 admin”
Тот же путь будет и для общих папок, т.е. назначаем область действия и добавляем региональные серверы. В итоге:
$RoleGroup = Get-RoleGroup “Public Folder Management”
New-RoleGroup “Region1 Public Folder Management” -Roles $RoleGroup.Roles -CustomConfigWriteScope “Region1 Servers Scope” -ManagedBy “region1 admin” -Members “region1 admin”
Переносим данные с серверов почтовых ящиков
Первое о чем пойдет речь в данном разделе – это перенос общих папок. Ровно как и при переносе с Exchange 2003 в Exchange 2007 все общие папки первоначально должны быть отреплицированы на новые сервера. Это делается при помощи добавления в свойства общей папки некоторых реплик на созданные сервера всех почтовых ящиков, где и будут находиться все базы для общих папок. В том случае, если таких папок очень много, перенести реплики вручную будет очень и очень трудно. Для того, чтобы упростить данную задачу создан скрипт под названием AddReplicaToPFRecursive.ps1. Именно он и добавит реплики в свойства той общей папки, что была указана при этом и во все ее дочерние папки. Для того чтобы запустить его нужно воспользоваться командой, приведенной ниже:
AddReplicaToPFRecursive.ps1 -Server 2007MBX -TopPublicFolder “\” -ServerToAdd 2010MBX
В этом случае все реплики добавятся в каждую дочернюю папку корня. Что касается системных папок, то в этом случае команда будет иметь следующий вид:
AddReplicaToPFRecursive.ps1 -Server 2007MBX -TopPublicFolder “\NON_IPM_SUBTREE” -ServerToAdd 2010MBX
Нужно запомнить, что в том случае, когда размер всех общих папок больше чем 30 Гига байт, первая операция должна выполняться с максимальной осторожностью в виду большого риска уронить транспортный сервер (или сервера), который будет не способен справится с огромным количеством писем и следовательно попросту отключит транспортный сервис, которые потребует трудоемкого восстановления.
Переносим почтовые ящики пользователей
После того, как мы завершили репликации всех общих папок, можно начинать процесс переноса почтовых ящиков рядовых пользователей. Лучше всего при этом пользоваться Exchange Management Console ( т.е. Recipient Configuration > Mailbox > New Local Move Request) или же командлетом New-MoveRequest в Exchange Management Shell. Весь процесс должен запускаться с серверов в Exchange 2010.
Перемещая почтовый ящик, мы можем его использовать. По завершению процесса переноса, должно выскочить предупреждение на счет того, что администратором были внесены изменения, в результате которых необходимо перезапустить Outlook. Нужно принять во внимание, что запросы на перемещение не удаляются автоматически, а значит их нужно удалить вручную после переноса всех ящиков.
Удаляем сервера ящиков на Exchange 2007
Переместив точку для создания адресной книги (оффлайновой), все общие папки, а также ящики на новые сервера, мы можем теперь удалить старый . После того, как завершится репликация общих папок, а также все процессы описанные выше (переносы ящиков и т.п.) на старом сервере Exchange 2007 не останется никаких данных, которые могли бы пригодиться пользователям для работы. Казалось бы, можно без особых хлопот удалить сервер. Однако без ряда важных манипуляций сделать это будет невозможно без вреда системе.
Для начала необходимо проверить все почтовые базы, что остались на старом сервере. Они должны использовать базу общих папок с Exchange 2010. Для того чтобы быстро проверить это, на старом сервере нужно запустить следующую команду:
Get-MailboxDatabase -Server servername | fl Name,PublicFolderDatabase
В том случае, если действительно эксплуатируется старая база, то исправляем это следующим образом:
Set-MailboxDatabase -Name “Old Mailbox Database” –PublicFolderDatabase “New Public Folder Database”
Затем, удаляем со старого сервера общие папки (используя на новом сервере скрипт MoveAllReplicas.ps1):
MoveAllReplicas.ps1 -Server oldserver -NewServer newserver
Это займет немного времени. Помним, что реплики уже скопированы на новый сервер, поэтому данный процесс должен их лишь удалить со старого. Проконтролируем это командой Get-PublicFolderStatistics, в результате увидим:
Get-PublicFolderStatistics -Server oldserver
После того, как команда прекратит демонстрировать папки со старого сервера, можно будет переходить к следующему моменту. Это своего рода проблема: не удаляются одна или несколько папок с сервера. Проще всего ее решить, воспользовавшись Outlook, т.е. выгрузить эти данные с папок в pst-файл, записать на время клиентские права, папки удалить и затем создать их вновь, задать права и загрузить данные обратно.
Удаление старой базы общих папок
Реплики удалены из прежней базы, а значит теперь можно удалять и базу общих папок. Делаем это с нового сервера таким путем:
Get-PublicFolderDatabase -Identity “Old Public Folder Database” | Remove-PublicFolderDatabase
Удаление старых почтовых баз
После того, как удалили старую базу общих папок нужно удалять старые почтовые базы, которые более не содержат ящиков реальных пользователей. Для этого на старом сервере используем:
Get-MailboxDatabase -Server oldserver | Remove-MailboxDatabase
Затем удаляем логи и edb-файлы. В непосредственном процессе удаления всех объектов базы, они не удаляются, а значит придется это делать самостоятельно.
Удаление старого сервера с почтовыми ящиками
Сам процесс должен запускаться с помощью Program and Features в главной панели управления сервером. Здесь важно убрать галочки с Mailbox Role, а также с Management Tools.

Теперь можно смело считать закрытым процесс удаления ящиков Exchange 2007
В том случае, если сервер кластерный, то сначала нужно будет удалит пассивный узел, а потом активный.
Удаляем транспортный сервер, а также сервер клиентского доступа
После того, как мы завершили перенос данных с почтовых серверов старых на новые, а также удалили старые, можно начинать процесс переключения на транспортные сервера новые. Это делается либо сразу по завершению установки 1-го транспортного сервера, либо позже. Очередность не имеет значения. В основу переключения ляжет работа с DNS-сервером и его коннекторами.
В первую очередь, перенесем старые транспортные правила на новые сервера. Сделаем это с помощью Exchange Management Shell на любом из серверов Exchange 2010:
$file = Export-TransportRuleCollection -ExportLegacyRules
Set-Content -Path d:\rules.xml -Value $file.FileData -Encoding Byte
[Byte[]]$Data = Get-Content -Path d:\rules.xml -Encoding Byte -ReadCount 0
Import-TransportRuleCollection -FileData $Data
Теперь для того, чтобы только созданные транспортные сервера могли нормально функционировать, т.е. отправлять почту, нужно создать для них во внешней DNS зоне записи. А именно A и MX записи, последние ссылаются на A-записи. При всем при этом почта должна будет проходить спам-фильтр на серверах, что будут принимать данные. Также необходимо проконтролировать процесс указания провайдером в обратной зоне для данного ip DNS имен. Кроме того, нужно создать SPF-запись, или же при ее наличии добавить туда наши новые трансп-е сервера.
Затем нам нужен Send-коннектор, который можно создать, а затем и настроить под новые транспортные сервера. Через этот коннектор почта будет отправляться вне сервера. Если же он уже существует, то можно просто добавить в него новые сервера.
Однако если существует один коннектор, но вы все же решили для новых транспортных серверов создать новый, то прежний можно просто отключить. Удалять его не стоит, так как он может еще пригодиться в дальнейшей работе.
В том случае, если у вас есть коннектор, принимающий анонимные сообщения, поступающие от smtp-серверов (к примеру внутренних), то необходимо его перенести на новый транспортный сервер, а те же smtp-серверы заново настроить на функционирование в качестве обычного смарт-хоста для нового транспортного сервера. Для переноса всего списка ip адресов удобнее всего использовать EMS, а именно:
$connector = Get-ReceiveConnector “EX2007HT\Relay”
Set-ReceiveConnector “EX2010HT\Relay” -RemoteIPRanges $connector.RemoteIPRanges
После того, как мы отключим send-коннектор для прежних транспортных серверов, можно будет просто удалить все MX записи из внешней зоны DNS. После чего отключим Receive-коннекторы на прежних серверах. И после всех этих операций наши старые сервера прекратят свою работу, т.е. отправку и получение почты.
Наконец удаляем A-записи прежних серверов и чистим от них уже имеющуюся SPF запись. После чего с помощью Programs and Features даем старт программе удаления Exchange 2007 и убираем следующие роли: Hub Transport, Exchange Management Tools и, конечно же, Client Access Server. Выглядит это так:

После того, как последний сервер будет удален, наш процесс переноса будет завершен.

Хотите купить шины в Москве и Санкт-Петербурге дешево? Купите их в AutoTulz!

рассказать друзьям и получить подарок
Если статья Вам понравилась и оказалась для вас полезной, то поделитесь ей с другими:

Хочу себе плагин с такими кнопками

понравилась статья? Поделись с друзьями!
Общайтесь со мной здесь:

Related posts:

  1. Переносим почтовую систему с Exchange 2007 на Exchange 2010. Первая часть.
  2. streamripper – часть вторая
  3. Autologon – автоматический вход в систему

Комментарии

1 комментарий на “Переносим почтовую систему с Exchange 2007 на Exchange 2010. Вторая часть.”

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

Следите за новостями! Подписка на RSS в правом верхнем углу сайта поможет вам всегда быть в курсе!