Тиражирование Active Directory

Active Directory использует тиражирование типа мульти-мастер. Как уже упоминалось, в этой службе каталогов более не существует различий между контроллерами доменов — они все равноправны. Изменения, внесенные в каталог на одном контроллере, тиражируются на остальные.

Но хотя концептуально такой подход проще существовавшей в предыдущих версиях модели с одним главным и несколькими резервными контроллерами домена, он требует принятия специальных мер по синхронизации тиражируемой информации. Тиражирование Active Directory основано не на временных интервалах, а на последовательных номерах обновлений USN (Update Sequence Numbers). В каждом контроллере домена имеется таблица, где записаны как свой собственный номер USN, так и USN партнеров по тиражированию. При тиражировании происходит сравнение последнего известного USN партнера с тем, который сообщается. И если сообщенный номер больше записанного, запрашиваются все изменения у партнера по тиражированию (такой тип тиражирования носит название запрашиваемого). После обновления данных USN на контроллере домена становится равным значению, полученному от партнера.

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

• По номеру версии. У каждого свойства свой номер версии. С помощью этого номера определяется «наиболее актуальное», то есть имеющее наибольший номер версии, свойство. Это не всегда верное решение, однако оно позволяет согласовывать версии без дополнительных переговоров с партнером по тиражированию и гарантирует идентичность данных на всех контроллерах доменов.

• По временной отметке. Если свойства имеют одинаковый номер версии, то проверяется временная отметка, создаваемая вместе с номером версии при модификации свойств. При этом предполагается, что все контроллеры домена синхронизованы по времени. Предпочтение отдается версии, созданной позднее. И опять же, это не всегда верно, но лучше обслуживать пользователей, чем заниматься длительными переговорами относительно того, кто «главнее».

• По размеру буфера. Если и номер версии, и временные отметки совпадают, то выполняется сравнение в двоичном виде, причем предпочтение получает то свойство, которое в двоичном виде занимает больший объем. Если размеры одинаковы, то считается, что обе версии идентичны и в расчет не принимается ни одна из них.
Давайте проиллюстрируем все сказанное на примере. Допустим, что два администратора на разных контроллерах домена вносят изменения в свойства группы AcctUsers. Один из них предоставил право модификации каталога FinRus, а второй — право модификации каталога FinAdmin, но сделал это на минуту позже первого. При согласовании версий на третьем контроллере домена будет обнаружено, что номера версий совпадают, а время модификации на втором контроллере — более позднее. Поэтому в расчет будет принято только изменение, сделанное вторым администратором.

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