Настройка сервера глобального каталога
«Эллес» реализует механизм готовности глобального (Global Catalog, GC) каталога и предоставляет конфигурационные параметры для управления им.
См. также описание доступных инструментов администрирования роли глобального каталога с помощью утилиты samba-tool в разделе
«Администрирование роли глобального каталога».
|
Механизм готовности глобального каталога
После назначения роли сервера GC контроллер домена «Эллес» не включает функциональность GC немедленно. Вместо этого применяется многоэтапный механизм, управляемый параметрами конфигурации и внутренними IRPC-вызовами, который гарантирует, что GC будет объявлен готовым к работе только после достижения достаточного уровня репликации данных или по истечении заданного времени.
Механизм работает следующим образом:
-
При запуске LDAP-сервиса проверяется, является ли локальный контроллер домена сервером GC. Если да, то инициализируется внутренний контекст, содержащий параметры готовности, включая уровень заполненности разделов, задержку объявления и флаг принудительного включения.
-
Система проверяет наличие и состояние реплицируемых разделов каталога (Partial Attribute Sets, PAS). Для этого выполняется анализ структуры доменных разделов, определяется, какие из них уже доступны локально, а какие требуют репликации с других контроллеров домена.
-
Если обнаруживаются незавершенные репликации, система инициирует внутренние вызовы (IRPC) к сервисам KCC и
drepl:-
KCC обновляет топологию репликации, создавая соединения для получения недостающих разделов;
-
dreplзапускает процесс репликации для загрузки недостающих данных; -
после завершения репликации вызывается сервис для регистрации SRV-записей в DNS.
-
-
Регулярно (каждые 30 минут) выполняется проверка состояния репликации: система анализирует, завершена ли репликация всех необходимых разделов, и обновляет внутренний уровень заполненности.
-
Готовность GC объявляется только после выполнения одного из условий:
-
достигнут уровень заполненности, заданный параметром
gc_partition_occupancy(от0до6), соответствующий степени завершенности репликации всех разделов в лесу или локальном сайте; -
истек таймаут, заданный параметром
gc_delay_advertisement, после которого GC объявляется готовым, даже если репликация не завершена; -
установлен флаг
gc_promotion_complete = yes, что немедленно активирует GC без каких-либо проверок.
-
-
При объявлении готовности:
-
атрибут
isGlobalCatalogReadyустанавливается в базе данных в значениеTRUE; -
записи SRV и A для GC регистрируются в DNS;
-
LDAP-сервис открывает прослушивание портов 3268 и 3269 для обслуживания запросов клиентов.
-
Если GC объявлен готовым до полной синхронизации (через gc_delay_advertisement или gc_promotion_complete), в логах генерируются предупреждения (сообщения с идентификаторами 1578 или 1119), указывающие на потенциальную несогласованность данных (cм.
«Логирование событий глобального каталога»).
«Эллес» также реализует механизм обнаружения доступных GC в лесу через сервис disco, который периодически опрашивает другие контроллеры домена через CLDAP и DNS, чтобы поддерживать актуальный список доступных GC для клиентских запросов (см.
«Настройка клиента глобального каталога»).
Управление уровнем заполненности разделов каталога
Для обеспечения целостности и согласованности глобального каталога «Эллес» использует параметр ldap_server:gc_partition_occupancy, который определяет минимальный уровень заполненности реплицируемых разделов каталога, необходимый для включения роли сервера глобального каталога.
Параметр принимает целочисленные значения от 0 до 6, соответствующие стадиям завершения репликации:
-
уровень
0— нет требований к заполненности, сервер глобального каталога может быть включен немедленно; -
уровень
1— хотя бы для одного частичного раздела каталога начата репликация; -
уровень
2— хотя бы один частичный раздел каталога полностью синхронизирован; -
уровень
3— для всех частичных разделов каталога, расположенных в локальном сайте, начата репликация; -
уровень
4— все частичные разделы каталога, расположенные в локальном сайте, полностью синхронизированы; -
уровень
5— для всех частичных разделов каталога в лесу начата репликация; -
уровень
6— все частичные разделы каталога в лесу полностью синхронизированы.
По умолчанию параметр установлен в 6, что гарантирует полную синхронизацию всех разделов каталога в лесу перед объявлением сервера глобальным каталогом.
Пример настройки:
[global]
...
ldap_server:gc_partition_occupancy = 4
...
При достижении уровня заполненности или принудительном включении (через gc_delay_advertisement) устанавливается атрибут isGlobalCatalogReady в базе данных и регистрируется SRV-запись в DNS.
Установка задержки перед включением роли сервера глобального каталога
По умолчанию при запуске контроллер домена «Эллес» не устанавливает атрибут isGlobalCatalogReady и не регистрирует в DNS SRV-запись для обнаружения его в качестве сервера глобального каталога до тех пор, пока не будет завершена синхронизация всех частично реплицируемых разделов каталога.
В большинстве сценариев использования такое поведение является оптимальным, поскольку обеспечивает согласованное представление каталога на сервере глобального каталога.
Однако в некоторых случаях может возникать необходимость в том, чтобы роль сервера глобального каталога включалась на контроллере домена до полной синхронизации данных.
При необходимости принудительно включить роль сервера глобального каталога через определенное время после запуска используйте конфигурационный параметр ldap_server:gc_delay_advertisement в разделе [global] файла smb.conf на контроллере домена «Эллес».
Параметр задает период в секундах, по истечении которого контроллер домена устанавливает атрибут isGlobalCatalogReady и регистрирует в DNS SRV-запись для обнаружения его в качестве сервера глобального каталога, независимо от текущего уровня заполненности разделов каталога.
По умолчанию период не установлен (ldap_server:gc_delay_advertisement = 2147483647), и роль сервера глобального каталога включается только после достижения уровня заполненности, заданного параметром ldap_server:gc_partition_occupancy (по умолчанию — уровень 6).
Параметр ldap_server:gc_delay_advertisement имеет приоритет над уровнем заполненности, но не отменяет его. Если gc_delay_advertisement истек, а уровень заполненности ниже заданного gc_partition_occupancy, сервер глобального каталога будет объявлен, но в логах появится предупреждение (EventId 1578) о несоответствии требований к репликации.
Пример изменения значения параметра:
[global]
...
ldap_server:gc_delay_advertisement = 30
...
Принудительное немедленное включение роли сервера глобального каталога
В дополнение к параметру ldap_server:gc_delay_advertisement, который управляет временем ожидания перед объявлением сервера глобальным каталогом, «Эллес» предоставляет параметр ldap_server:gc_promotion_complete, позволяющий немедленно и безусловно активировать роль сервера глобального каталога при запуске службы inno-samba, игнорируя все проверки репликации и уровень заполненности разделов.
При установке значения yes параметр ldap_server:gc_promotion_complete заставляет LDAP-сервер сразу установить атрибут isGlobalCatalogReady в базе данных и зарегистрировать SRV-запись в DNS, даже если ни один частичный раздел каталога не синхронизирован. Это эквивалентно немедленному включению роли сервера глобального каталога без ожидания завершения процессов KCC, репликации или проверок целостности.
| Использование этого параметра может привести к несогласованному представлению данных клиентами, использующими глобальный каталог, поскольку часть разделов каталога может отсутствовать или быть неполной. |
По умолчанию параметр не установлен (имеет значение no).
Пример изменения значения параметра:
[global]
...
ldap_server:gc_promotion_complete = yes
...
При включении параметра:
-
параметр
ldap_server:gc_partition_occupancyигнорируется; -
параметр
ldap_server:gc_delay_advertisementигнорируется; -
в логах появляется сообщение
EventId 1119: This domain controller is now a global catalog, указывающее на немедленное включение роли (см. раздел «Логирование событий глобального каталога»); -
сервер глобального каталога становится доступным для клиентов до завершения репликации, что может вызвать ошибки при запросах к отсутствующим разделам.
Для обеспечения согласованности рекомендуется использовать gc_promotion_complete = yes только в сочетании с предварительной ручной синхронизацией всех разделов каталога или в средах, где репликация не требуется.
|
Управление повторными IRPC-вызовами
Для управления повторными внутренними RPC-вызовами (Internal Remote Procedure Call, IRPC), совершаемыми LDAP-сервером при включении функциональности глобального каталога, используются параметры:
-
ldap_server:gc_irpc_retry_period_msec(по умолчанию —60000):-
задает интервал в миллисекундах для повторной попытки неуспешного IRPC-вызова;
-
также используется в качестве начальной задержки для первого вызова KCC;
-
-
ldap_server:gc_irpc_max_retries(по умолчанию —30) — задает максимальное количество попыток повторения IRPC-вызова.
Если в процессе включения функциональности глобального каталога обнаруживается, что не все доменные разделы доступны локально, LDAP-сервер (сервис ldap_server) совершает несколько IRPC-вызовов:
-
Вызывает сервис KCC (
kccsrv) для обновления топологии репликации. -
Вызывает сервис репликации (
dreplsrv). -
После завершения репликации — вызывает сервис обновления записей DNS (
dnsupdate). -
Опционально вызывает сам себя для нотификации рабочих процессов.
Заданные по умолчанию значения параметров позволяют обеспечить корректное совершение описанной последовательности вызовов при включении функциональности глобального каталога.
В текущей версии «Эллес» эти параметры влияют только на вызовы KCC. Изменять их не требуется.
Сохранение размера файлов базы данных для LMDB-бэкенда
Если при присоединении сервера к домену с помощью команды samba-tool domain join в качестве базы данных указывается LMDB-бэкенд (--backend-store=mdb), для корректного создания файлов частичных доменных разделов каталога также должен быть задан достаточный для этого размер файлов базы данных (--backend-store-size).
Чтобы заданное при присоединении значение --backend-store-size было доступно функциональности глобального каталога, оно сохраняется в отдельном конфигурационном параметре — ldb_backend:store size.
Этот параметр добавляется автоматически в файл конфигурации smb.conf процедурой join. Изменять его значение вручную не требуется.
Обновлено: