Для корректной работы Exchange 2003 полностью полагается на Active Directory, поэтому не удивительно, что на Exchange-сервере работают несколько компонентов, взаимодействующих с Active Directory. Один из этих компонентов – служба доступа к каталогу (Directory Service Access - DSAccess).
Если вы хотите ознакомиться с остальными частями этой статьи, то, пожалуйста, прочитайте Детальный обзор работы службы доступа к каталогу (DSAccess) – Часть 2.
Что такое DSAccess?
Внутри Exchange есть много компонентов, которым требуется доступ к службам Active Directory, например, информационное хранилище и классификатор сообщений. DSAccess оптимизирует связи между этими компонентами и Active Directory.
Компоненты Exchange-сервера, которым нужно взаимодействовать с Active Directory, используют для получения информации DSAccess, вместо того, чтобы соединяться с контроллерами домена и серверами глобального каталога напрямую. Поэтому DSAccess –это очень важная часть Exchange-сервера. DSAccess не сильно влияет на производительность, поскольку он работает с кэшем, что значительно уменьшает количество LDAP-запросов, создаваемых компонентами Exchange-сервера к Active Directory. Это положительно влияет и на скорость запросов, и на уменьшения нагрузки, как на контроллерах домена, так и на серверах глобального каталога. Но обратите внимание, что поиск в глобальном списке адресов (Global Address List - GAL) клиентов Outlook не использует этот кэш.
Службу DSAccess инициализирует служба System Attendant. DSAccess поставляется в виде файла динамически подсоединяемой библиотеки (DLL) DSACCESS.DLL. Кроме DSACCESS.DLL еще две библиотеки: DSCMGS.DLL и DSCPERF.DLL. DSCMGS.DLL содержит информацию для записи в журнал событий, а DSCPERF.DLL - информацию о производительности объектов.
Для того, чтобы увидеть, какие процессы используют DSACCESS.DLL, используйте средство командной строки TLIST.EXE, запустив на Exchange-сервере следующую команду:
tlist –m dsaccess.dll
Вы увидите (Рисунок 1), что DSACCESS.DLL используется такими процессами, как Information Store (store.exe) и System Attendant (mad.exe).
Короче говоря, DSAccess выполняет поиск для определения топологии Active Directory, а затем выбирает подходящие контроллеры домена и серверы глобального каталога Active Directory, которые можно использовать Exchange-сервером. Позже я расскажу, какие контроллеры домена и серверы глобального каталога являются подходящими для DSAccess. Выбрав подходящие серверы, DSAccess управляет выходящим списком серверов, которыми может пользоваться Exchange-сервер.
До выхода Exchange 2000 SP2 для создания списка контроллеров домена, серверов глобального каталога и настроек контроллера домена для использования DSAccess применялась утилита DSADIAG.EXE. Начиная с Exchange 2000 SP2 функциональность DSADIAG.EXE была встроена в консоль управления Exchange System Manager, так что теперь вам не нужно искать средство DSADIAG.EXE. Информацию DSAccess теперь можно просматривать на каждом Exchange-сервера в свойствах сервера в консоли Exchange System Manager. Информация расположена на вкладке Directory Access (Доступ к каталогу) (Рисунок 2). Но учтите, что для получения данной информации должна быть запущена служба Microsoft Exchange Management.
Стоит отметить, что обычно служба DSAccess устойчива к отказам. Другими словами, если один из серверов глобального каталога или контроллеров домена, которые используются службами Exchange-сервера, выходит из строя, данные службы продолжают работать, поскольку способны использовать другой сервер или контроллер домена. Однако, если Exchange-сервер установлен на контроллере домена, этого не случится. Сделано это умышленно, и это является одной из основных причин того, почему не рекомендуется устанавливать Exchange-сервер на контроллере домена.
Выбор сервера
DSAccess разделяет серверы Active Directory на три группы: серверы глобального каталога, контроллеры домена и контроллер настроек домена. Эти три группы крайне важны для правильной работы инфраструктуры Exchange. Серверы глобального каталога используются для поиска в лесе, контроллеры домена используются для получения информации о домене, а контроллер настроек домена используется для того, чтобы гарантировать, что все изменения пишутся только на один контроллер домена.
DSAccess выбирает до 10 серверов глобального каталога и контроллеров домена из локального сайта Active Directory. Если внутри локального сайта Active Directory не найдены подходящие серверы, DSAccess выбирает их из удаленных сайтов Active Directory, но по возможности он все равно возвращается к локальному сайту, поскольку, как вы понимаете, серверы глобального каталога и контроллеры домена из локального сайта гораздо предпочтительней. Оба списка выбранных серверов обновляются каждые 15 минут, если только серверы не указаны жестко в реестре, при этом на соответствие они не проверяются. В дальнейшем я подробней расскажу о жестко прописанных в реестре серверах. По умолчанию контроллер настроек домена обновляется каждые 8 часов.
Как же именно DSAccess выбирает списки серверов? Производится набор тестов на соответствие. Тесты такие:
- Доступен ли сервер? DSAccess проверяет, доступен ли сервер по порту 389, если это контроллер домена, или 3268, если это сервер глобального каталога. Без сомнения, вы узнали номера портов LDAP.
- Синхронизирован ли сервер? DSAccess смотрит, синхронизирован ли сервер, проверяя атрибут isSynchronized в свойстве rootDSE сервера.
- Является ли сервер сервером глобального каталога? Эта проверка подобна описанной выше: проверяется атрибут isGlobalCatalogReady в свойстве rootDSE сервера.
- Читается ли список контроля доступа к содержимому настроек именования? DSAccess считает сервер неподходящим, если данный тест не проходит.
- Находится ли сервер в домене, в котором была запущена утилита Exchange DomainPrep? Требуется, чтобы тестируемый на соответствие сервер существовал в домене, где утилита Exchange DomainPrep выполнилась успешно.
- Подходит ли сервер в общем смысле? DSAccess запрашивает службу Netlogon через вызов RPC. Цель теста в том, что если у сервера проблемы общего характера, он не будет признан подходящим.
- Установлена ли на сервере операционная система Windows Server 2003 или Windows 2000 SP3 и выше? DSAcess работает только с этими операционными системами.
Данные тесты называются жесткими тестами. После их завершения DSAccess проводит несколько мягких тестов для гарантии того, что протестированные серверы способны управлять нагрузкой, которую возложит на них Exchange 2003. Эти тесты проверяют время отклика на LDAP-запросы к этим серверам. Считается, что если ответ на эти LDAP-запросы занимает более 2 секунд, тест сервером не пройден, и потому он удаляется из списка подходящих серверов. Для исключения эмулятора первичного контроллера домена из списка серверов DSAccess можно провести следующую настройку. Я думаю, что вы знаете, что эмулятор первичного контроллера домена – это одна из пяти ролей одиночного гибкого хозяина операций (Flexible Single Master Operation - FSMO) в Active Directory, и в некоторых ситуациях эмулятор первичного контроллера домена подвержен большим нагрузкам. Если вы не хотите использовать эмулятор первичного контроллера домена, внесите в реестр следующие изменения:
Ключ: HKLM\System\CurrentControlSet\Services\MSExchangeDSAccess\Profiles\Default
Параметр: MinUserDc
Тип: REG_DWORD
Установите значение параметра равным минимальному количеству контроллеров домена в одном сайте Active Directory до того, как эмулятор первичного контроллера домена будет исключен DSAccess. Для полной отмены использования эмулятора первичного контроллера домена, установите это значение равным 1.
Резюме
В первой части мы рассмотрели вопросы о том, что такое DSAccess, и как эта служба выбирает контроллеры домена и серверы глобального каталога для использования их в Exchange. Во второй части мы поговорим о том, как просмотреть результаты тестов DSAccess, жестко прописанные серверы, информацию кэша и кратко обсудим информацию счетчиков производительности.
Если вы хотите ознакомиться с остальными частями этой статьи, то, пожалуйста, прочитайте Детальный обзор работы службы доступа к каталогу (DSAccess) – Часть 2.