Поделиться через


Создание раздела каталога приложений

Раздел каталога приложений представлен объектом domainDNS со значением атрибута instanceType DS_INSTANCETYPE_IS_NC_HEAD в сочетании с DS_INSTANCETYPE_NC_IS_WRITEABLE. Этот объект domainDNS представляет корневой каталог каталога приложения (головка NC) и называется как обычный раздел домена, например "DC=dynamicdata,DC=fabrikam,DC=com", который соответствует DNS-имени "dynamicdata.fabrikam.com". Таким образом, можно создать экземпляр секции каталога приложений в любом месте, где можно создать экземпляр секции домена. Нет имени NetBIOS, связанного с разделом каталога приложений.

Можно вложить разделы каталогов приложений, т. е. секции каталога приложений могут иметь дочерние секции каталогов приложений. Поиск по поддереву область, корневым в голове секции каталога приложения, создаст ссылки на продолжение секций каталога дочерних приложений.

Секцию каталога приложений реплика можно создать только на контроллере домена, работающем в Windows Server 2003 и более поздних версиях, и только в то время как роль FSMO именования домена хранится контроллером домена Windows Server 2003 и более поздних версий. В смешанном лесу с контроллерами домена Windows Server 2003 и контроллерами домена нижнего уровня (контроллеры домена Windows 2000 или контроллеры основного домена Windows NT 4.0) попытка создать секцию каталога приложений, реплика на контроллере домена нижнего уровня завершится ошибкой.

Раздел каталога приложений также содержит соответствующий объект crossRef в контейнере Partitions секции конфигурации. Перед созданием объекта domainDNS можно предварительно создать crossRef вручную. Предварительно созданный объект crossRef должен иметь значения атрибутов, отображаемые в следующей таблице, или создание секции завершится ошибкой. Если объект crossRef не существует, сервер Active Directory создаст его при создании раздела каталога приложения.

Атрибут Description
dnsRoot Содержит путь DNS контроллера домена, на котором будет создан раздел каталога приложений.
Включено Содержит FALSE.
nCName Содержит различающееся имя секции. В приведенном выше примере этот атрибут будет содержать "DC=dynamicdata,DC=mydomain,DC=com".

 

Чтобы создать новый раздел каталога приложений с его первой реплика, выполните следующие действия.

  1. Привязка к пространству имен для новой секции, указывая контроллер домена, в котором будет размещаться раздел каталога приложения в ADsPath. Например, чтобы создать секцию с ADsPath "DC=dynamicdata,DC=mydomain,DC=com", привязка ADsPath будет "LDAP://< домен контроллер>/DC=mydomain,DC=com", где "<контроллер> домена" — DNS-имя контроллера домена, на котором будет размещена секция.

    Операция привязки должна указывать параметры быстрого и делегирования. Быстрый параметр позволяет выполнить привязку, даже если пространство имен не существует. Параметр делегирования необходим, чтобы разрешить контроллеру домена связаться с владельцем роли FSMO доменного именования, используя те же учетные данные.

    Системная версия контроллера домена должна быть операционной системой Windows Server 2003 и более поздними версиями.

  2. Создайте объект domainDNS с соответствующим именем секции, например "DC=dynamicdata", чтобы представить область контекста именования для новой секции. Объект domainDNS должен иметь атрибут instanceType со значением 5 (DS_INSTANCETYPE_IS_NC_HEAD DS_INSTANCETYPE_NC_IS_WRITEABLE). | Атрибут instanceType можно задать только во время создания, так как это атрибут только для системы.

При создании объекта domainDNS сервер Active Directory выполнит следующие действия:

  1. Выполняет поиск объекта crossRef в контейнере Partitions с значением атрибута nCName, которое соответствует различающееся имя секции и, если совпадение найдено, изменяет объект crossRef для представления секции каталога приложения. Если соответствующий объект crossRef не найден, сервер Active Directory создает новый объект crossRef для представления секции каталога приложения.

    В следующей таблице перечислены важные атрибуты объекта crossRef .

    Атрибут Description
    nCName Содержит различающееся имя секции.
    dnsRoot Содержит DNS-имя секции.
    msDS-NC-Replica-Locations В этот атрибут добавляется различающееся имя объекта nTDSDSA контроллера домена для первого реплика.

     

  2. Инициируйте синхронизацию секции конфигурации и дождитесь завершения. Это позволяет клиентскому приложению изменять параметры конфигурации для только что созданного раздела каталога приложений при привязке к одному контроллеру домена, используемому для создания секции каталога приложения.

  3. Создайте объект domainDNS с флагами DS_INSTANCETYPE_IS_NC_HEAD и DS_INSTANCETYPE_NC_IS_WRITEABLE, заданными в свойстве instanceType. Свойство instanceType также может содержать другие закрытые флаги.

  4. Заполните атрибут ms-DS-Has-Master-NCs объекта nTDSDSA для целевого контроллера домена с отличительным именем только что созданного раздела каталога приложений.

При создании секции каталога приложений или при добавлении и полной синхронизации нового реплика раздела каталога приложения сервер Active Directory правильно регистрирует реплика в NetLogon и DNS. Дополнительные сведения и список зарегистрированных записей SRV см. в разделе "Поиск сервера узла секции каталога приложений".

Дополнительные сведения о создании секции каталога приложений см. в примере кода для создания секции каталога приложений.

Поиск контейнера секций

Различающееся имя контейнера Partitions можно найти одним из двух способов. Первый является более сложным для выполнения, но всегда обеспечит точный результат:

  1. Привязка к RootDSE и получение атрибута configurationNamingContext .
  2. Используйте атрибут configurationNamingContext для привязки к контейнеру конфигурации.
  3. Выполните поиск в контейнере конфигурации для объекта, который имеет тип crossRefContainer.
  4. Получите значение атрибута различающегося имени объекта crossRefContainer. Это будет различающееся имя контейнера Partitions.

Дополнительные сведения и пример кода, показывающий этот метод для поиска контейнера Partitions, см . в функции GetPartitionsDNSearch в примере кода для поиска контейнера секций.

Второй метод проще реализовать, но использует контейнер Partitions с определенным относительным различающееся имя. В настоящее время невозможно изменить имя контейнера Partitions, но если эта возможность добавлена в будущем, процедура ниже не будет работать правильно, если контейнер Partitions был переименован.

  1. Привязка к RootDSE и получение атрибута configurationNamingContext .
  2. Объедините строку CN=Partitions, за которой следует атрибут configurationNamingContext , чтобы сформировать различающееся имя контейнера Partitions. Различающееся имя будет иметь форму CN=Partitions,configuration< DN>.

Дополнительные сведения и пример кода, показывающий этот метод для поиска контейнера Partitions, см . в функции GetPartitionsDNManual в примере кода для поиска контейнера секций.