Настройка обработки застарелых объектов (lingering objects)

«Эллес» предоставляет механизм обеспечения строгой согласованности репликации (Strict Replication Consistency), позволяющий контролировать поведение контроллера домена при обнаружении застарелых объектов (lingering objects).

Застарелые объекты и репликация в «Эллес»

Застарелые объекты — это объекты каталога, которые остаются на контроллере домена после их удаления во всем лесу. Такое состояние возникает, когда контроллер домена длительное время не участвует в репликации, а затем вновь подключается к инфраструктуре. Если в этот период объект был полностью удален на других контроллерах и это изменение не было реплицировано на отключенный узел, то локальная копия объекта становится «застарелой».

См. подробнее о застарелых объектах, а также доступных инструментах для их выявления и очистки в разделе «Управление застарелыми объектами репликации (lingering objects)».

При получении застарелого объекта по репликации контроллер домена «Эллес» обрабатывает его следующим образом:

  • если репликация работает в режиме обеспечения строгой согласованности:

    • застарелый объект не реплицируется;

    • в логе фиксируется событие с кодом 1988, указывающее на наличие застарелого объекта;

    • репликация остальных объектов продолжается в штатном режиме;

  • если режим обеспечения строгой согласованности репликации выключен:

    • застарелый объект запрашивается целиком и пересоздается;

    • в логе фиксируется событие с кодом 1388, информирующее о попытке восстановить объект, который отсутствует в локальной базе.

Режим работы репликации в этом случае определяется конфигурационным параметром drsuapi:strict_mode и наличием объекта CN=94fdebc6-8eeb-4640-80de-ec52b9ca17fa в конфигурационном разделе леса (добавляется автоматически при создании нового домена на базе «Эллес»):

  • если drsuapi:strict_mode = yes или параметр явно не задан в конфигурации и объект CN=94fdebc6-8eeb-4640-80de-ec52b9ca17fa существует, режим обеспечения строгой согласованности репликации включается автоматически для новых контроллеров домена;

  • если drsuapi:strict_mode = no или параметр явно не задан в конфигурации и объект CN=94fdebc6-8eeb-4640-80de-ec52b9ca17fa не существует, режим обеспечения строгой согласованности репликации выключен.

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

Настройка параметра drsuapi:strict_mode

Параметр drsuapi:strict_mode задается в файле smb.conf в секции [global]. Он определяет, как контроллер домена должен обрабатывать застарелые объекты при входящей репликации:

  • drsuapi:strict_mode = yes — застарелые объекты не реплицируются;

  • drsuapi:strict_mode = no — застарелые объекты реплицируются;

  • если параметр не указан, поведение определяется наличием объекта CN=94fdebc6-8eeb-4640-80de-ec52b9ca17fa в конфигурации леса:

    • если объект существует, застарелые объекты не реплицируются;

    • если объект отсутствует, застарелые объекты реплицируются.

Пример настройки в smb.conf:

[global]
    ...
    drsuapi:strict_mode = yes
    ...

Изменения вступают в силу после перезапуска службы «Эллес»:

sudo systemctl restart inno-samba
Параметр drsuapi:strict_mode имеет приоритет над автоматическим включением через объект CN=94fdebc6-8eeb-4640-80de-ec52b9ca17fa. Если параметр задан явно, он переопределяет автоматическое поведение.

Автоматическое включение режима Strict Replication Consistency на новых контроллерах домена

При создании нового домена в «Эллес» автоматически создается объект CN=94fdebc6-8eeb-4640-80de-ec52b9ca17fa,CN=Operations,CN=ForestUpdates,CN=Configuration,DC=<ForestRootDomain>.

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

Для проверки наличия объекта выполните, указав корректный DN для корневого домена леса вместо ForestRootDomain:

ldbsearch -H ldap://localhost -s base -b 'CN=94fdebc6-8eeb-4640-80de-ec52b9ca17fa,CN=Operations,CN=ForestUpdates,CN=Configuration,DC=<ForestRootDomain>' -U Administrator
...
# record 1
dn: CN=94fdebc6-8eeb-4640-80de-ec52b9ca17fa,CN=Operations,CN=ForestUpdates,CN=Configuration,DC=elles,DC=inno,DC=tech
objectClass: top
objectClass: container
cn: 94fdebc6-8eeb-4640-80de-ec52b9ca17fa
instanceType: 4
whenCreated: 20260526123853.0Z
whenChanged: 20260526123853.0Z
uSNCreated: 1790
objectVersion: 3
uSNChanged: 1790
showInAdvancedViewOnly: TRUE
name: 94fdebc6-8eeb-4640-80de-ec52b9ca17fa
objectGUID: 254f7606-a893-444f-8395-998bb0f997ad
objectCategory: CN=Container,CN=Schema,CN=Configuration,DC=elles,DC=inno,DC=tech
distinguishedName: CN=94fdebc6-8eeb-4640-80de-ec52b9ca17fa,CN=Operations,CN=ForestUpdates,CN=Configuration,DC=elles,DC=inno,DC=tech

# returned 1 records
# 1 entries
# 0 referrals

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

Для этого выполните следующие действия от имени учетной записи с правами на внесение изменений в БД LDAP корневого домена леса:

  1. Сформируйте LDIF-файл для создания объекта, указав корректный DN для корневого домена леса вместо ForestRootDomain.
    Например:

    cat /tmp/lingering-object-indicator.ldif
    dn: CN=94fdebc6-8eeb-4640-80de-ec52b9ca17fa,CN=Operations,CN=ForestUpdates,CN=Configuration,DC=elles,DC=inno,DC=tech
    objectClass: container
    showInAdvancedViewOnly: TRUE
    name: 94fdebc6-8eeb-4640-80de-ec52b9ca17fa
    objectCategory: CN=Container,CN=Schema,CN=Configuration,DC=elles,DC=inno,DC=tech
  2. Примените изменение:

    ldbmodify -H ldap://localhost /tmp/lingering-object-indicator.ldif -U Administrator
    ...
    Modified 1 records successfully

Логирование событий

События 1988 и 1388 регистрируются в логах «Эллес» в рамках класса отладки drs_repl с уровнем логирования 0 и 3 соответственно.

Пример настройки логирования в smb.conf:

log level = 1 drs_repl:3

События сопровождаются сообщениями:

  • событие 1988 (режим обеспечения строгой согласованности репликации включен):

    • исходный текст:

      EventId 1988: Active Directory Domain Services Replication encountered the existence of object <object DN> [<object GUID>] in the following partition that have been deleted from the local domain controllers (DCs) Active Directory Domain Services database. Not all direct or transitive replication partners replicated in the deletion before the tombstone lifetime number of days passed. Objects that have been deleted and garbage collected from an Active Directory Domain Services partition but still exist in the writable partitions of other DCs in the same domain, or read-only partitions of global catalog servers in other domains in the forest are known as "lingering objects".
    • перевод:

      EventId 1988: В процессе репликации в указанном разделе каталога было обнаружено существование объекта <DN объекта> [<GUID объекта>], который уже был удален из базы данных Active Directory Domain Services на локальном контроллере домена (КД). Не все прямые или транзитивные партнеры по репликации успели реплицировать удаление до истечения времени жизни tombstone-объектов (в днях). Объекты, которые были окончательно удалены сборщиком мусора из какого-либо раздела каталога в Active Directory Domain Services, но все еще существуют в доступных для записи разделах других КД в том же домене или в разделах только для чтения серверов глобального каталога в других доменах леса, называются «застарелыми объектами» (lingering objects).
  • событие 1388 (режим обеспечения строгой согласованности репликации выключен):

    • исходный текст:

      EventId 1388: Another domain controller (DC) has attempted to replicate into this DC an object <object DN> [<object GUID>] which is not present in the local Active Directory Domain Services database. The object may have been deleted and already garbage collected (a tombstone lifetime or more has passed since the object was deleted) on this DC. The attribute set included in the update request is not sufficient to create the object. The object will be re-requested with a full attribute set and re-created on this DC.
    • перевод:

      EventId 1388: Другой контроллер домена (КД) попытался реплицировать на данный контроллер домена объект <DN объекта> [<GUID объекта>], который отсутствует в локальной базе данных Active Directory Domain Services. Возможно, этот объект был окончательно удален сборщиком мусора на данном КД (с момента удаления объекта прошло больше времени, чем составляет время жизни tombstone-объектов). Набора атрибутов, включенного в запрос на изменение, недостаточно для создания объекта. Объект будет запрошен повторно с полным набором атрибутов и заново создан на данном КД.

Обновлено: