Настройка обработки связанных атрибутов

Начиная с версии 1.10.0 в Эллес реализована процедура обработки связанных атрибутов (сервис lacheck).

Общие сведения

Объекты в службе каталогов могут быть связаны между собой. Например, группы связаны с объектами, являющимися их участниками. Такие связи реализуются в виде пары атрибутов (связанные атрибуты, linked attributes), содержащих перекрестные ссылки на связанные объекты. Первый атрибут (прямая ссылка, forward link) ссылается на другой объект, создавая связь, а второй (обратная ссылка, back link) — автоматически поддерживает связь на основе значения первого атрибута. Например, атрибут member группы ссылается на включенные в нее объекты, а атрибут memberOf объекта указывает, в каких группах он состоит.

При изменении связи между объектами обновляется значение прямой ссылки; при этом значение обратной ссылки пересчитывается службой каталогов автоматически.

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

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

Выделение аппаратных ресурсов

При планировании развертывания Эллес рекомендуется выделить ресурсы для процесса lacheck — одно ядро CPU и определенный объем оперативной памяти.

Планирование запусков процедуры обработки связанных атрибутов

Процедура обработки связанных линков запускается:

  • безусловно в конце операции ввода контроллера в домен (join);

  • периодически через временной интервал в минутах, заданный в конфигурационном параметре lacheck:periodic_interval:

    • первый запуск планируется при старте сервиса на время через lacheck:periodic_interval минут от текущего времени;

    • каждый последующий запуск планируется после окончания работы текущего запуска на время через lacheck:periodic_interval от текущего времени.

Такой подход к планированию запусков исключает риск возникновения конфликта из-за наличия двух параллельно работающих процессов lacheck.

Настройка периодичности запусков процедуры обработки связанных атрибутов

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

Изменять значение по умолчанию не рекомендуется.

Оно обеспечивает восстановление консистентности данных в соответствии со спецификациями Microsoft для Active Directory. Например, согласно [MS-ADTS]: Active Directory Technical Specification, 3.1.1.6.2 Reference Update максимальная допустимая задержка актуализации кросс-доменной ссылки составляет 2880 минут (двое суток). При этом, как показывают результаты тестирования, время работы сервиса lacheck, например, при обслуживании 150 тысяч пользователей, 35 тысяч групп с 1,17 млн вхождений пользователей в группы, 10 группами на пользователя в среднем и 32 членами в группе в среднем составляет 8 минут. Таким образом, интервал между окончанием работы сервиса и следующим его запуском может быть 2872 минуты, что заведомо больше рекомендованного значения по умолчанию.

Если по какой-либо причине возникает необходимость в изменении рекомендованного интервала запуска, укажите требуемое значение в минутах с помощью параметра lacheck:periodic_interval в разделе [global] файла /app/inno-samba/etc/smb.conf.

Например:

[global]
    ...
    lacheck:periodic_interval = 30
    ...

Если указанное значение меньше 20 минут, оно игнорируется — вместо него используется значение по умолчанию.

Принудительный запуск процедуры обработки связанных атрибутов

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

Чтобы запустить процедуру принудительно, достаточно создать специальный атрибут runLACheck в корне дерева данных каталога (объект rootDSE).

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

  1. Сформируйте ldif-файл для создания атрибута runLACheck с любым значением в корне дерева.
    Например:

    cat /tmp/run_lacheck.ldif
    dn:
    changetype: modify
    add: runLACheck
    runLACheck: true
  2. Внесите изменения, например, с помощью утилиты ldbmodify (полный путь к утилите после установки пакета inno-samba — /app/inno-samba/bin/ldbmodify):

    ldbmodify -H ldap://dc1 -U Administrator /tmp/run_lacheck.ldif
    Password for [ELLES\Administrator]:
    Modified 1 records successfully

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

Записи о принудительном запуске процедуры фиксируются в логах при установке уровня логирования 5 или выше для класса отладки lacheck.

Влияние сервиса lacheck на работу команды samba-tool dbcheck

Полную проверку базы данных Эллес для исправления ошибок с помощью команды samba-tool dbcheck рекомендуется выполнять на остановленном контроллере домена. Таким образом, влияние сервиса lacheck в этом случае на работу команды исключено.

При регулярных проверках базы данных Эллес с использованием фильтров без опции --fix влияние работы сервиса lacheck аналогично изменению объектов каталога любым другим процессом. Оно может быть исключено повторным запуском проверки (см. подробнее в разделе «Проверка базы данных каталога»).

Настройка размера кэша

Для управления объемом памяти, используемой сервисом lacheck при обработке связанных атрибутов, может использоваться параметр lacheck:cache size.

Он ограничивает количество объектов, кэшируемых в памяти во время проверки ссылок (например, членов групп или обратных зависимостей). Кэширование снижает нагрузку на базу данных, позволяя избежать повторных запросов к одним и тем же объектам.

Сервис обрабатывает объекты пачками по 2000 новых или измененных записей в порядке их создания или последнего обновления. Размер кэша должен быть достаточным, чтобы эффективно обслуживать запросы внутри одной пачки. Если кэш слишком мал, сервис будет часто перезагружать одни и те же данные. Если кэш слишком велик, он может потреблять избыточную память без прироста производительности.

Установка значения 0 отключает кэширование. Не рекомендуется в условиях штатной эксплуатации.

Параметр задается в разделе [global] файла /app/inno-samba/etc/smb.conf. Значение по умолчанию — 1000.

Пример конфигурации:

[global]
    ...
    lacheck:cache size = 2000
    ...

Для контроля того, когда ссылка на удаленный или недоступный объект считается устаревшей и подлежит удалению, может использоваться конфигурационный параметр lacheck:dead link lifetime.

Он задает временной порог (в минутах), после которого сервис lacheck считает такую ссылку «устаревшей» и удаляет ее, если объект не найден ни локально, ни через глобальный каталог (GC).

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

Время жизни ссылки определяется на основе метки времени — даты последнего изменения ссылки. Если текущее время превышает эту метку на значение параметра, ссылка удаляется.

Установка значения 0 приведет к немедленному удалению всех не найденных ссылок. Не рекомендуется в условиях штатной эксплуатации.

Параметр задается в разделе [global] файла /app/inno-samba/etc/smb.conf. Значение по умолчанию — 180 минут.

Пример конфигурации:

[global]
    ...
    lacheck:dead link lifetime = 200
    ...