Служба каталогов Active Directory Lightweight Directory Services (AD LDS) упрощает развертывание каталогов приложений в организациях, не подвергая дополнительному риску корпоративный лес AD. Одновременно с ростом популярности AD LDS сформировалась потребность в масштабируемости экземпляров данной службы и в обеспечении высокого уровня доступности. Служба LDS построена на основе кода, использованного для создания AD, поэтому она имеет идентичные механизмы репликации и характеристики производительности, однако некоторые правила, обеспечивающие высокий уровень доступности, неприменимы к экземплярам LDS.

. Но сначала давайте познакомимся с основами службы NLB.

Служба Network Load Balancing

Служба NLB, встроенная в платформу Windows Server, предоставляет базовые возможности кластеризации для сетей, работающих по протоколу TCP/IP, не используя для этого общие ресурсы. Служба NLB не обеспечивает согласованности данных на узлах кластера. Если данные динамически изменяются, то для их синхронизации необходимы другие средства. Поэтому служба NLB обычно используется для хранилищ статических данных, например для обслуживания фермы веб-серверов, подключенной к серверной базе данных. Вы можете задействовать NLB и для обслуживания хранилищ с динамическим содержимым, но в этом случае служба NLB передает всю ответственность за синхронизацию данных на узлах механизмам сервера. Служба LDS идеально подходит под данную схему, так как встроенные механизмы репликации позволяют ей выполнять синхронизацию данных.

При настройке службы NLB вы задаете виртуальное имя и IP-адрес. Этот адрес является общим для всех узлов, входящих в кластер NLB. Балансировка загрузки выполняется на основе портов, поэтому вы можете выполнять балансировку работы нескольких служб с различными параметрами на одних и тех же узлах. Также можно установить «вес» и приоритет узла в кластере, чтобы обеспечить приоритетное использование оборудования с более высокой производительностью. При подключении клиента к набору серверов LDS, объединенных в кластер с помощью службы NLB, используется виртуальное имя или IP-адрес. Служба NLB, запущенная на каждом узле кластера, определит, какой из серверов фермы ответит клиенту. Принцип работы службы NLB на верхнем уровне показан на рисунке.

 

Рисунок. Схема работы NLB

Шаг 1. Планирование конфигурации NLB

Прежде чем начать установку службы NLB, необходимо будет принять несколько решений, определяющих схему работы службы NLB с фермой серверов LDS. Выбор решений на начальном уровне поможет минимизировать количество проблем, с которыми вы столкнетесь в ходе внедрения службы NLB. Если вы уже используете службу LDS и хотите просто распространить механизмы балансировки загрузки на дополнительные серверы, планирование снизит риск остановки механизмов LDS при установке служб NLB.

Для начала нужно определить параметры кластерной сети. Необходимо задать IP-адрес кластера — каждый узел кластера будет прослушивать обращения по этому адресу. Кроме того, необходимо указать имя кластера, которое клиенты будут использовать для обращения к службе каталогов. Хоть и это звучит тривиально, назначение имени хоста — важный шаг, в частности если вы планируете использовать протокол SSL. При получении серверного сертификата для узлов LDS сертификат должен содержать общее имя кластера вместо имени отдельного сервера. Если это требование не будет соблюдено, вы столкнетесь с ошибкой имени сертификата, поэтому необходимо назначить имя кластера до того, как будет выполнен запрос на получение сертификата проверки подлинности сервера.

Далее необходимо выбрать режим работы кластера. Есть два варианта: одноадресный, unicast, или многоадресный, multicast. При использовании службы NLB каждый узел кластера будет принимать трафик, направленный получателю, IP-адрес или имя которого совпадает с адресом и именем кластера. Это объясняется тем, что служба NLB назначает кластеру уникальный MAC-адрес. Каждый узел кластера прослушивает трафик, направленный по данному MAC-адресу. Используя встроенный в NLB алгоритм фильтрации, узел принимает решение либо обрабатывать пакет, либо отбросить его. Так как все узлы кластера используют один и тот же алгоритм, пакет в итоге обрабатывается только одним узлом. При выборе режима работы кластера вы определяете алгоритм «прослушивания» узлами кластера пакетов, направленных по МАС-адресу кластера. При использовании режима unicast система подменяет МАС-адрес сетевой карты узла МАС-адресом кластера. То есть все узлы кластера LDS имеют один и тот же MAC-адрес. Каждый узел продолжит обрабатывать запросы клиентов, однако узлы LDS не смогут обмениваться информацией друг с другом, если только в них не установлена вторая сетевая карта. Без второй сетевой карты репликация службы LDS выполняться не будет. Однако при работе в режиме multicast сетевая карта сохраняет свой исходный МАС-адрес и получает дополнительный МАС-адрес многоадресной рассылки. В данной конфигурации узлы кластера могут взаимодействовать друг с другом без дополнительной сетевой карты. В большинстве случаев беспроигрышным вариантом будет использование режима multicast, но важно убедиться, что ваш коммутатор может преобразовывать одноадресные IP-адреса в МАС-адреса многоадресной рассылки.

Затем необходимо определить, сколько сетевых адаптеров будет установлено на каждом узле. К данному вопросу можно подойти с разных сторон: если вы решите работать с кластером в режиме unicast, вам понадобится дополнительная сетевая карта, чтобы обеспечить возможность взаимодействия между собой узлов LDS. С другой стороны, дополнительный сетевой интерфейс может повысить производительность. Одна сетевая карта будет обслуживать кластер, а дополнительная будет использоваться для обработки остального сетевого трафика, например для решения задач репликации и резервного копирования.

Наконец, необходимо обдумать «близость клиентов». Прежде чем клиенты смогут обращаться к каталогу LDS, сначала они должны создать привязку к нему, необходимую для установки соединения и предоставления учетных данных. При использовании схемы с несколькими серверами LDS, для которых осуществляется балансировка загрузки, возникает вероятность того, что клиенты, используя имя кластера, создадут привязку к одному серверу, а их последующие запросы LDS будут перенаправлены к другому узлу кластера. Проблема в том, что клиент будет авторизован лишь на том сервере, к которому он привязан, а не на том, к которому он обращается. Если включена функция «близость клиентов», система следит за тем, чтобы клиент всегда использовал один и тот же узел кластера. У функции «близость клиентов» доступно три режима: None, Single и Network.

Выбор режима None не обязательно означает, что сетевые соединения будут взаимодействовать с различными узлами кластера. Метод расчета параметра «близости» в режиме None выбирается на основе IP-адреса клиента и используемого клиентом исходного порта. Поэтому, если вы используете средство, подобное службе LDP (ldp.exe) для проверки «близости», используемый порт не меняется вплоть до отключения от каталога и повторного подключения. В рамках сессии LDAP используется один и тот же узел LDS, но данная схема подходит не для всех клиентов, работающих по протоколу LDAP. При использовании режима Single алгоритм выбора узла LDS будет учитывать только IP-адрес клиента. Таким образом, один и тот же клиент будет использовать один и тот же сервер до тех пор, пока не изменится IP-адрес клиента. При выборе режима Network система не учитывает ни IP-адрес клиента, ни исходный порт. Вместо этого используется схема, в которой каждый клиент, представляющий одну и ту же подсеть, будет обращаться к одному и тому же узлу LDS. Вы можете применять данный метод для реализации географического принципа балансировки загрузки на своем кластере.

Шаг 2. Запуск службы LDS

Следующий шаг в развертывании фермы LDS — отладка службы LDS без взаимодействия с механизмами NLB. Установите и настройте сетевые адаптеры, после чего запустите службу LDS и убедитесь в ее корректной работе, но повремените с установкой серверных сертификатов. Желательно иметь по крайней мере один запущенный реплицированный экземпляр. Руководство по корректной установке и настройке можно найти в статье Microsoft «AD LDS Getting Started Step-by-Step Guide» по адресу technet.microsoft.com/en-us/library/cc770639.aspx. Примените средство, подобное LDP или ADSIEdit (adsiedit.msc), на клиентских машинах и убедитесь, что вы можете независимо подключиться к каждому из серверов LDS и что реплицируемые данные на обоих серверах совпадают.

Шаг 3. Установка службы NLB на все узлы

Теперь все готово к установке службы NLB на каждый из серверов LDS, содержащих реплику экземпляра каталога. Существует два способа установки службы NLB в системе Windows Server 2008: через графический интерфейс или из командной строки. Для установки службы NLB через графический интерфейс используйте инструмент Server Manager. Выберите элемент Features в дереве консоли и щелкните мышью на кнопке Add Features в основной части окна. В мастере Add Features Wizard установите флажок для параметра Network Load Balancing и нажмите на кнопке Install. Помните, что необходимо установить службу NLB на каждый сервер LDS, входящий в кластер.

Для установки службы NLB на узлы LDS также можно использовать командную строку. Чтобы запустить установку, выполните команду:

servermanagercmd -install nlb

Шаг 4. Создание кластера NLB

После того как служба NLB будет установлена на все узлы, вы можете использовать один из серверов для создания кластера. Запустите средство Network Load Balancing Manager из меню Administrative Tools или выполните команду Nlbmgr.

Окно NLB Manager состоит из трех частей. В левой панели вы увидите список всех кластеров NLB, к которым существует подключение. Правая панель содержит информацию о выбранном кластере или узле. Нижняя часть окна содержит журнал, отображающий последние выполненные операции.

Запустите мастер New Cluster, выбрав пункт New в меню Cluster. Для начала необходимо подключиться к первому добавляемому в кластер серверу LDS.

Диалоговое окно Host Parameters, показанное на экране 1, регулирует индивидуальные параметры добавляемого узла. Параметр Priority позволяет задать для каждого узла уникальный идентификатор; узел с самым низким приоритетом будет обрабатывать все пакеты, для которых не определены правила для портов (мы обсудим их позже). Если у вас установлено несколько сетевых карт, вы должны убедиться что IP-адрес, указанный в данном окне, не совпадает с IP-адресом, используемым кластером. Если установлен один сетевой адаптер, вы увидите, что IP-адреса, присвоенные этой карте, будут отображаться в данном окне под заголовком dedicated IP addresses.

 

Экран 1. Добавление сервера в кластер

В диалоговых окнах Cluster IP Addresses и Cluster Parameters (экран 2), необходимо указать IP-адрес и имя, определенные на шаге 1. Здесь можно выбрать режим работы кластера. При выборе режима multicast вы увидите, что МАС-адрес изменится с адреса одноадресной рассылки на адрес многоадресной рассылки. На экране 2 видно, что МАС-адрес изменился с 02 bf-0a-00-00-92 на 03 bf-0a-00-00-92.

 

Экран 2. Указание параметров кластера

И наконец, необходимо задать правила для портов, используемые службой кластерного каталога. Правила для портов указывают кластеру NLB, какие порты необходимо «прослушивать». По умолчанию все порты являются кластерными, но вы можете создать более жесткие правила, ограничив «область прослушивания» лишь TCP-портами для клиентского доступа (экран 3). Необходимо создать отдельное TCP-правило для каждого порта LDAP. По умолчанию служба LDS использует порт 389 для незашифрованных запросов LDAP и порт 636 для запросов с SSL-шифрованием, при условии что данные порты уже не задействованы службой каталогов. В противном случае при установке экземпляра каталога вам будет предложено задействовать другие порты. Так как правила для портов распространяются только на обмен с узлом, имеющим МАС-адрес кластера, использование конфигурации по умолчанию (все порты — кластерные) никак не повлияет на процессы репликации службы LDS и соединения между серверами. Но помните, что все порты, для которых не применяется ни одно правило, управляются узлом, имеющим самый низкий приоритет.

 

Экран 3. Правила для портов

Шаг 5. Установка сертификата SSL

Отладка механизма шифрования SSL в реплицируемом экземпляре LDS, для балансировки загрузки в котором используется служба NLB, — процесс достаточно сложный. При установке сертификатов необходимо учитывать три фактора. Во первых, как упоминалось ранее, в сертификате проверки подлинности сервера должно быть указано имя кластера, а не имя сервера. Если для подключения к отдельным узлам планируется использовать их собственные имена, то вы можете применить дополнительное имя субъекта (SAN) для обращения к узлу или групповые сертификаты. Во вторых, сертификат должен быть установлен в хранилище личного сертификата той учетной записи, от имени которой работает служба LDS. Важно убедиться в том, что хранилище личного сертификата для данной учетной записи на каждом сервере LDS содержит только сертификат проверки подлинности сервера и ничего более. Для добавления сертификата в нужное хранилище можно использовать следующий подход.

  1. Запустите оснастку Certificates консоли Microsoft Management Console (MMC). При загрузке оснастки выберите вариант «Управление сертификатами учетной записи службы» (Service Account).
  2. В появившемся списке служб выберите службу, соответствующую тому экземпляру LDS, для которого настраивается балансировка загрузки.
  3. Щелкните правой кнопкой мыши на узле Personal для учетной записи службы и в контекстном меню выберите пункт All Tasks->Import.

В конце вам необходимо предоставить службе LDS право на чтение сертификата в хранилище. Например, если для управления службой LDS в системе Windows Server 2008 используется учетная запись Network Service, необходимо предоставить ей право на чтение папки \%PROGRAMDATA%\Microsoft\Crypto\RSA\MachineKey (экран 4).

 

Экран 4. Разрешения для учетной записи Network Service.

Шаг 6. Добавление узлов в кластер

После завершения настройки кластера NLB, состоящего из одного узла, вы должны иметь возможность свободно обращаться к службе каталогов, используя имя кластера и IP-адрес. Осталось только добавить остальные серверы LDS в состав кластера NLB. Если вы используете шифрование SSL, не забудьте импортировать сертификат в нужное хранилище и настроить разрешения для папки на всех добавляемых в кластер узлах.

Надежность и отказоустойчивость

Итак, мы получили функционирующий кластер NLB. Теперь можно использовать различные инструменты для тестирования подключений LDAP к службе каталогов со стороны клиентов. Внедрив механизмы кластеризации NLB в реплицируемый экземпляр LDS, вы повысите надежность каталога LDS и добавите дополнительный уровень отказоустойчивости в практически безупречную службу каталогов.

Кен Сен-Сир (ken.stcyr@microsoft.com) — архитектор решений компании Microsoft с более чем 10 летним опытом работы. Имеет сертификат Microsoft Certified Master in Directory Services