Welcome to TechNet Blogs Sign in | Join | Help

Заметки об Exchange и Active Directory

Информация на данном сайте предоставляется "КАК ЕСТЬ" без каких-либо гарантий и передачи прав. Мнения, высказанные здесь, являются отражением моего личного взгляда, а не позиции работодателя.
Как Exchange "борется" с задержками при репликации

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

Например, если администратор создает новую базу данных (Mailbox database), он наверняка захочет тут же ее использовать - но как это сделать, если сервер еще не знает об этом?

Вот какие механизмы существуют в Exchange 2000/2003 для смягчения негативных последствий репликации. (В Exchange 2007 по большому счету все работает примерно так же):

1. Общий Конфигурационный контроллер домена. В любой момент времени все без исключения службы Exchange читают и сохраняют свои конфигурационые данные с одного и того же сервера, называемого Конфигурационным контроллером домена (Config DC, или ККД). Под конфигурацией здесь понимается все, что хранится в разделе CN=Configuration,DC=<rootDomain>,DC=com.
Поскольку абсолютно все контроллеры домена имеют реплику (копию) этого раздела, компонент DSAccess всегда выбирает ККД из контроллеров домена, находяшихся поближе к Exchange  вне зависимости от домена. Результат выбора сообщается регулярно в событии 2080, о котором я говорил ранее.
Если ККД по какой-то причине становится недоступным, то DSAccess выбирает другой DC, и все службы одновременно переключаются на него.
Наличие одного ККД для всех служб позволяет всем компонентам Exchange иметь целостное видение конфигурации. При необходимости в реестре можно "насильно" установить ККД, но это рекомендуется делать лишь кратковременно, поскольку если этот сервер вдруг станет недоступен, то DSAccess не сможет нарушить "приказ" и найти другой ККД.

2. Администрирование с помощью ККД. Exchange System Manager может удаленно администрировать любой Exchange сервер, так как в большинстве случаев администрирование - это просто работа с данными в Active Directory. Но чтобу изменения моментально начинали действовать, ESM выясняет у удаленного сервера, какой ККД тот использует, и шлет все изменения туда. А поскольку большинство служб Exchange отслеживает изменения конфигурации (именно на ККД), то создается эффект мнговенности данной операции.

3. ККД и установка Exchange. Установка - экстремальный случай администрирования :) Очевидно, когда службы стартуют в первый раз, им очень важно прочитать настройки с правильного DC. Для этого программа установки Exchange "говорит" DSAccess какой ККД нужно использовать сразу после старта службы System Attendant. Это значение сохраняется в течение 8 часов, что более чем достаточно для репликации. Но если остановить службы (или рестартовать сервер) сразу после установки, что это значение будет утеряно и придется ждать, пока репликация завершится.
Кстати, ККД и в обычном режиме меняется каждые 8 часов, чтобы распреедлить нагрузку между контроллерами доменов более равномерно.

4. Конфигурация пользователей и почтовых ящиков. (Тут я не могу подобрать правильные термины, я имею в виду Mail Recipients/Mailboxes. Кто знает - подскажите!) Эти данные не хранятся на ККД, и считываются с глобальных каталогов. Exchange одновременно использует до 10 глобальных каталогов, поэтому точно сказать, откуда будут считаны данные, нельзя. Кроме того, данные о пользователях кэшируются на двух уровнях - Information Store и DSAccess, и уведомлений об изменениях для этих данных тоже нет. Поэтому "мгновенные" изменения пользовательских данных практически невозможны.

Exchange System Manager на вкладке DSAccess содержит полные списки серверов, использующихся в настояще время. 
 

Posted: Wednesday, May 31, 2006 5:45 AM by vladg

Comments

msexpert said:

Есть два вопроса и один комментарий :)

1. По какому в точности критерию Exchange выбирает ККД, и почему DSAccess всегда использует только один ККД (во избежание конфликтов репликации?)? Если используемый ККД становится недоступен, используется ли стандартный механизм DS Discovery, есть ли разница с процессом обнаружения "обычных" GC?

2. Кроме ККД, DSAccess использует также три GC сервера (понятно) и три обычных DC (через LDAP, то есть по порту 389). Вот эти последние, зачем они и как они используются? Для получения тех атрибутов, которые не хостятся на GC? Как Exchange определяет, с GC или с DC нужно брать информацию?

3. Пример с базой данных во втором абзаце, имхо, не слишком удачен. Дело в том, что при создании базы конфигурируется также путь к edb/stm файлам и PF store. Поэтому, если пытаться создать базу или изменить путь к ней из ESM, запущенного на другом компьютере, то получится отлуп в виде сообщения "This option is available only if the Exchange System Manager runs on the server on which the files are located". А остальное все верно, конечно :)
# June 6, 2006 4:25 PM

vladg said:

Отвечаю на вопросы:) Извиняюсь за задержку, изо всех сил готовим публичную бету Exchange 2007.
1.  Один ККД используется для того, чтобы все службы имели одинаковое видение конфигурации в любой момент времени.  Иначе, к примеру, может получиться, что один процесс "знает" про новый или измененный объект - например, mailbox database, а другой еще нет, и все начнет работать непредсказуемо.
Честно говоря, с репликацией и так трудно добиться каких-то гарантированных результатов, а если еще позволить серверу считывать критически важные данные со случайных контроллеров домена, то вообще наступит полный хаос.
Наша цель - постоянный источник данных. Имея один общий сервер можно заставить все службы отслеживать изменения на нем и тогда любое действие администратора будет имет мгновенный эффект на всем Exchange сервере.

1а. Выбирается ККД по тем же критериям, что и обычный КД - то есть нужные битики в событии 2080 должны быть установлены. Любой КД из списка серверов, прошедших проверку, имеет шанс стать ККД.

2. Маленькая коррекция - серверов в списке DC и GC может быть до 10 (но и этот предел можно увеличить). Действительно, DC, которые не GC, нужны довольно редко. Насколько я помню, один из немногих сценариев это OWA Logon, когда надо проверить, давно ли менялся пароль у пользователя. Ну а еще КД используются для сохранения изменений. Скажем, Information Store иногда обновляет запись пользователя в Active Directory - для этого, естественно глобальный каталог не подойдет.

3. Насчет третьего пункта не согласен:) Exchange 2003 Service Pack 2 при удаленном создании базы данных действительно не может проверить пути к файлам, но при этом выдает лишь предупреждение:
"The Exchange System Manager cannot verify if the database file names are valid.... Are you sure you want to continue and use these values?", которое можно проигнорировать и успешно создать базу данных. А какая версия ругается и не позволяет это сделать?

# June 16, 2006 7:16 PM

msexpert said:

Спасибо, Владимир,

Касательно "третьего пункта" :) а Вы попробуйте не создавать новую базу, а просто нажать кнопку Browse на вкладке Database в свойствах уже существующей базы (как если бы Вы собирались поменять путь к файлам базы). Вы получите вот такое сообщение (от версии и сервис-пака Exchange, насколько я помню, это не зависит):
This option is available only if the Exchange System Manager runs on the server on which the files are located.
Что в принципе естественно, ибо каждый сервер "видит" буквы дисков по-своему, а атрибуты msExchEDBFile и msExchSLVFile в AD используют именно буквы дисков.
# June 26, 2006 2:53 PM
Anonymous comments are disabled
Page view tracker