Принудительная синхронизация контроллеров домена Active Directory

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

Проблема


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

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

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

Дополнительные примеры вспомните сами из своей практики.

Теория


Синхронизация Active Directory – процесс полностью автоматический. Каждый контроллер домена с некоторой периодичностью “тянет” на себя изменения, произошедшие на его партнерах по репликации . Значит, чтобы изменения, внесенные на контроллере dc01, попали на dc02, требуется, чтобы dc02 был партнером по репликации с dc01 и затем запросил эти изменения у dc01.

Для принудительной синхронизации мы должны заставить dc02 запросить изменения с dc01, не дожидаясь очередного цикла репликации. А если контроллеров домена много, топология репликации неизвестна, да еще и мы не знаем, на каком именно контроллере произошли эти самые изменения? Очевидно, нужно принудительно заставить каждый контроллер домена запросить изменения у всех своих партнеров по репликации. И желательно выполнить эту процедуру дважды.

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

Практика

Решение автоматизации процедуры принудительной синхронизации достаточно простое.

Необходимо создать пакетный файл (например, ForceSync.bat) следующего содержания:

repadmin /syncall dc01.gorbunov.pro
repadmin /syncall dc02.gorbunov.pro
repadmin /syncall dc03.gorbunov.pro

В файле должны быть перечислены все контроллеры вашего домена (поставьте свои названия вместо dc01.gorbunov.pro , dc02.gorbunov.pro и т.д.)

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

Утилита repadmin.exe есть на всех контроллерах домена. На клиента ее можно добавить вручную, скопировав с сервера или установив на клиента пакет RSAT.


В бытность мою администратором Active Directory ярлык на файл ForceSync.bat на моем рабочем столе был одним из основных Улыбка.


5 комментариев:

  1. а как же синк олл /a E ? ,а Алексей?

    ОтветитьУдалить
  2. Да, Да, Алексей. Анонимный прав, а если
    Функция SyncAll сообщает о следующих ошибках:
    Ошибка выдачи репликации: 8606 (0x219e):

    ОтветитьУдалить
    Ответы
    1. SyncAll нужно в elevated (Run as administrator) командной строке запускать, иначе прав не хватает на запуск репликации.

      Удалить
  3. А что делать с ошибкой "The target principal name is incorrect."?

    ОтветитьУдалить
    Ответы
    1. Скорее всего, ошибка DNS или просто опечатка в имени сервера.

      Удалить