Репликация Open Directory может не работать. В журнале slapd.log появляется запись Size Limit exceeded (Превышено ограничение размера).

Репликация Open Directory может не работать. Когда это происходит, в журнале/var/log/slapd.log появляются записи, подобные перечисленным ниже

slapd[209]: do_syncrep2: rid=001 LDAP_RES_SEARCH_RESULT (4) Size limit exceeded
slapd[209]: do_syncrep2: rid=001 (4) Size limit exceeded

Это может происходить, если сервер Open Directory не работал в течение долгого времени или создается реплика, когда имеется более 11 000 объектов в хранилище данных LDAP.  11 000 — это максимальное количество объектов по умолчанию, которое может быть возвращено в списке результатов поиска.

Разрешите пользователю _ldap_replicator переопределить ограничение поиска.  Для этого измените конфигурацию сервера LDAP на каждом сервере Open Directory. Это включает идентификацию администратора каталога и выполнение нескольких команд для изменения LDAP в программе «Терминал». Также должна быть известная база поиска, или контекст именования, для сервера LDAP.

С этой целью можно выполнить следующие действия.

Во-первых, найдите базу поиска для сервера LDAP

Найдите базу поиска для сервера LDAP.  Обычно это полное имя домена для сервера с префиксом dc= перед каждой меткой, а точки меняются на запятые.

Например, сервер с именем узла server.example.com будет иметь базу поиска по умолчанию dc=server,dc=example,dc=com.  Базу поиска можно проверить, отправив запрос самому серверу LDAP, используя следующую команду в программе «Терминал»:

ldapsearch -x -LLL -b “” -s base namingContexts

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

dn:
namingContexts: dc=server,dc=example,dc=com

Во-вторых, получите учетные данные kerberos для администратора каталога

Имя по умолчанию для этого пользователя diradmin, но, возможно, оно было изменено при создании главного сервера Open Directory. Это делается с помощью команды kinit в программе «Терминал». Выполните следующую команду, при необходимости подставляя правильное имя администратора каталога вместо diradmin, и введите пароль, когда появится запрос. Вывода не будет.

kinit diradmin

Затем используйте ldapmodify в интерактивном режиме программы «Терминал» для внесения изменений. Просто выполните следующее в программе «Терминал»:

ldapmodify

Примечание. При этом будет выведено несколько сообщений SASL с ожиданием ввода.  В случае успешного выполнения вывод SASL должен выглядеть подобным образом:

SASL/GSSAPI authentication started
SASL username: diradmin@REALM
SASL SSF: 56
SASL data security layer installed.

Изменение конфигурации

В-третьих, внесите изменения в конфигурацию. Для этого требуется ввести весь приведенный ниже фрагмент текста в окно программы «Терминал» в качестве ввода для команды ldapmodify. Необходимо указать базу поиска вместо [search base] ниже. Квадратные скобки нужно убрать.

dn: olcDatabase={1}bdb,cn=config
changetype: modify
add: olcLimits
olcLimits: dn.exact="uid=_ldap_replicator,cn=users,[search base]" time.soft=unlimited time.hard=unlimited size.soft=unlimited size.hard=unlimited

dn: olcDatabase={2}bdb,cn=config
changetype: modify
add: olcLimits
olcLimits: dn.exact="uid=_ldap_replicator,cn=users,[search base]" time.soft=unlimited time.hard=unlimited size.soft=unlimited size.hard=unlimited

Теперь нажмите клавиши Control-D.

Если команда выполнена успешно, вы увидите сообщения, подобные приведенным ниже.

modifying entry "olcDatabase={1}bdb,cn=config"
modifying entry "olcDatabase={2}bdb,cn=config"

Дополнительная информация

   

Альтернативное использование сценария оболочки

Ниже приводится текст сценария оболочки, который можно использовать для автоматизации этого процесса. Просто выполните команду kinit для администратора каталога, как описано выше, и выполните этот сценарий. Предложения по использованию текстового редактора см. в этой статье.

#!/bin/sh
nc=`ldapsearch -x -LLL -b "" -s base namingContexts | awk '/namingContexts/ {print $2}'`
ldapmodify  <<EOF
dn: olcDatabase={1}bdb,cn=config
changetype: modify
add: olcLimits
olcLimits: dn.exact="uid=_ldap_replicator,cn=users,$nc" time.soft=unlimited time.hard=unlimited size.soft=unlimited size.hard=unlimited

dn: olcDatabase={2}bdb,cn=config
changetype: modify
add: olcLimits
olcLimits: dn.exact="uid=_ldap_replicator,cn=users,$nc" time.soft=unlimited time.hard=unlimited size.soft=unlimited size.hard=unlimited

EOF
#end of script
Дата публикации: