Контроллеры домена и Exchange 2013/2016

Одной из главных задач при планировании организации Exchange является правильный выбор количества и расположения контроллеров домена Active Directory. По этому поводу есть много различной документации и я не буду в данной статье углубляться в эту тему. Сейчас хотелось бы остановиться на одном изменении, которое в какой-то степени может изменить архитектуру расположения контроллеров домена.


Напомню базовое требование Exchange к контроллерам домена: в сайте, где будет установлен Exchange сервер, обязательно должен быть как минимум 1 контроллер домена с ролью глобального каталога (не RODC).


Итак, при старте Exchange сервера (а затем каждые 15 минут в общем случае) служба Microsoft Exchange Active Directory Topology (MSExchangeADTopology) собирает данные об Active Directory окружении, чтобы в последствии предоставлять эту информацию другим службам и сервисам Exchange. Если посмотреть в Application Event Log, то часть этой информации можно увидеть в событиях с номерами 2081 и 2080 (про значения содержимого события 2080 можно почитать здесь):


Если теперь посмотреть через EMS, какие контроллеры домена используются Exchange сервером, то их список будет полностью совпадать с содержимым события 2081.

Замечание №1

Вывод списка текущих контроллеров домена актуален только для локального сервера. Т.е. на предыдущем скриншоте список контроллеров домена актуален только для сервера EX2013SRV01.
Для проверки этого, зайдем на Exchange сервер EX2013SRV03, который расположен в сайте Msk, и запросим туже информацию:

Здесь видно, что список контроллеров домена для EX2013SRV01 и EX2013SRV02 изменился. И теперь актуальный список отображается только для EX2013SRV03. Зачастую этот список будет такой же, как и список из события 2081 того же сервера.

Замечание №2
Обратите внимание, что на сервере EX2013SRV03 я использовал обычный Powershell, а не EMS. Связано это с новым «замечательным» механизмом Mailbox Anchoring, который появился в Exchange 2013 CU11 и планировался в Exchange 2016 CU1, который проксирует соединение к тому серверу, где находится ваш ящик. Как оказалось, это негативно сказывается на работу тех командлетов, которые должны получать информацию с локального сервера. Например, Move-DatabasePath, Get-ExchangeCertificate и т.д. Так вот, использование Powershell взамен EMS позволяет избежать этой проблемы (о других вариантах решения этой проблемы можно почитать в статье Bug: Move-DatabasePath in Exchange 2013 CU11). К счастью, этот функционал убрали в Exchange 2013 CU12 и Exchange 2016 CU1.


Итак, вернемся к контроллерам домена.

К сожалению, информация о том механизме, о котором я хочу рассказать, проявилась случайно во время решения одной из проблем с форума TechNet по Exchange. Описал его в своем блоге Дмитрий Хребин еще в августе. И, к сожалению, более никакой информации по данному механизму не было.


Представьте следующий сценарий:

AD Site «Root»:

  • 1 x Exchange Server 2013 CU6+ (в моем случае это EX2013SRV01 c установленным CU11)
  • 3 x Domain Controllers (в моем случае это DC01, DC02 и DC03)

AD Site «Msk»:

  • 1 x Domain Controller (в моем случае это DC04)


Что будет происходить, если контроллеры домена в сайте Root будут поочередно становиться недоступными?

До CU6 все было просто: Exchange сервер использовал контроллеры домена в локальном сайте до тех пор, пока в сайте не оставалось ни одного контроллера. После этого Exchange сервер начинал использовать контроллеры домена из другого сайта.

После CU6 этот алгоритм изменился: Exchange сервер использует контроллеры домена в локальном сайте до тех пор, пока в сайте 3 и более контроллера. Улучшение от нового алгоритма видно сразу: если в сайте остается слишком мало контроллеров, то новый алгоритм позволяет распределить нагрузку с соседним сайтом, дабы избежать сильной перегрузки локальных контроллеров.


Давайте посмотрим этот алгоритм на практике.

Выключаем DC03 в сайте Root и смотрим на список используемых контроллеров:

Как видно, Exchange сервер EX2013SRV01 добавил в список используемых контроллер домена сервера из соседнего сайта Msk (в данном случае это контроллер DC04).

Теперь посмотрим, что будет если выключить еще 1 контроллер домена в сайте Root.

Неожиданно :) Я изначально писал статью, чтобы показать действие этого алгоритма, а получилось найти баг :)

Как оказывается, в некоторых случаях, когда из списка всех контроллеров остается только 2-3, то вероятны сбои этого алгоритма, что приводит либо к использованию только 1 контроллера, либо к тому, что контроллеры вообще не будут использоваться. На данный момент, эту проблему можно исключить 2 способами.


Способ №1

Установить Exchange 2013 CU12 (или Exchange 2016 CU1) – в этих обновлениях значение по умолчанию количества остающихся контроллеров в сайте изменили с 3 на 1. Тем самым, по сути, вернули поведение до CU6.


Способ №2

Если вы по каким-то причинам не можете обновиться до Exchange 2013 CU12 (Exchange 2016 CU1), то можно вручную задать значение требуемого параметра. Для этого необходимо в файле Microsoft.Exchange.Directory.TopologyService.config в раздел Topology добавить строчку MinSuitableServer = «1». После этого раздел Topology будет иметь следующий вид:

  <Topology MinimumPrefixMatch = "2"
MinSuitableServer = "1"
FullTopologyDiscoveryTimeout = "00:05:00"
UrgentOrInitialTopologyTimeout = "00:05:00"
DiscoveryFrequency = "00:15:00"
DiscoveryFrequencyOnNoTopology = "00:00:30"
DiscoveryFrequencyOnFailure = "00:05:00"
DiscoveryFrequencyOnMinPercentageDC = "00:05:00"
WaitTimeBetweenInitialAndFullDiscovery = "00:00:30"
ForestScanFrequency = "00:06:00"
ForestScanFrequencyOnFailure = "00:30:00"
ForestScanTimeout = "00:05:00"
SiteMonitorFrequency = "00:15:00"
SiteMonitorFrequencyOnFailure = "00:05:00"
SiteMonitorTimeout = "00:05:00"
MaxRemoteForestDiscoveryErrorsPerHour = "25"
RemoteDomainSingleServerDiscoveryTimeout = "00:05:00"
ThrottleOnFullQueue = "00:00:30"
ThrottleOnEmptyQueue = "00:01:00"
MaxRunningTasks = "40"
WaitAmountBeforeRestartRequest ="00:00:15"
LocalIPAddressesCacheRefreshInterval = "1.00:00:00"
ExchangeTopologyCacheLifetime = "04:00:00,00:20:00"
ExchangeTopologyCacheFrequency = "01:00:00,00:05:00"
MinPercentageOfHealthyDC = "50"
EnableWholeForestDiscovery = "true"
ForestWideAffinityRequested = "true"/>



Бонус

Если запустить Network Monitor, то можно увидеть, что каждый Exchange сервер постоянно пингует все контроллеры домена. Причем тот контроллер, который используется для чтения и записи конфигурации, пингуется гораздо чаще.

Читайте также:

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