Replikacja Open Directory może nie działać; w pliku slapd.log pojawia się komunikat Size Limit exceeded (Przekroczono limit rozmiaru)

Replikacja Open Directory może nie działać; w takim przypadku w pliku /var/log/slapd.log pojawiają się wpisy takie jak poniższy:

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

Może się to zdarzyć, jeśli serwer Open Directory nie działa przez dłuższy czas lub jeśli replika zostanie utworzona, gdy w magazynie danych LDAP znajduje się ponad 11 000 obiektów. 11 000 to domyślna maksymalna liczba obiektów, które mogą zostać zwrócone podczas wyszukiwania.

Zezwól użytkownikowi _ldap_replicator na zastąpienie limitu wyszukiwania. Można to zrobić przez zmianę konfiguracji serwera LDAP na każdym serwerze Open Directory. Obejmuje to uwierzytelnienie się jako administrator katalogu i uruchomienie niektórych poleceń modyfikacji LDAP w programie Terminal. Należy również znać bazę wyszukiwania (znaną również jako kontekst nazewnictwa) serwera LDAP.

W tym celu można wykonać następujące kroki.

Najpierw znajdź bazę wyszukiwania serwera LDAP

Znajdź bazę wyszukiwania serwera LDAP. Zazwyczaj jest to w pełni kwalifikowana nazwa domeny serwera z prefiksem dc= dodanym do każdej etykiety i kropkami zamienionymi na przecinki.

Na przykład serwer o nazwie hosta server.example.com miałby domyślną bazę wyszukiwania “dc=server,dc=example,dc=com”. Bazę wyszukiwania można zweryfikować, wysyłając zapytanie do samego serwera LDAP za pomocą następującego polecenia programu Terminal:

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

Poszukaj wiersza zawierającego frazę namingContexts — baza wyszukiwania będzie znajdować się po dwukropku, jak w poniższym przykładzie.

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

Następnie uzyskaj poświadczenia kerberos administratora katalogu

Domyślna nazwa tego użytkownika to diradmin, ale mogła ona zostać zmieniona podczas tworzenia głównego serwera Open Directory. Można to zrobić za pomocą polecenia kinit w programie Terminal. Uruchom następujące polecenie, w razie potrzeby zastępując prawidłową nazwę administratora katalogu poleceniem diradmin, i wprowadź hasło, gdy zostanie wyświetlony monit. Nie ma danych wyjściowych.

kinit diradmin

Następnie użyj polecenia ldapmodify w trybie interaktywnym w programie Terminal, aby wprowadzić zmiany. Wystarczy wykonać następujące polecenie w programie Terminal:

ldapmodify

Uwaga: spowoduje to wyświetlenie kilku komunikatów SASL i oczekiwanie na dane wejściowe. W przypadku powodzenia dane wyjściowe SASL powinny wyglądać mniej więcej następująco:

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

Zmodyfikuj konfigurację

Na koniec dokonaj modyfikacji konfiguracji. Wymaga to wprowadzenia całego poniższego tekstu w oknie programu Terminal jako danych wejściowych do polecenia ldapmodify. Bazę wyszukiwania należy podstawić w miejsce [search base] w poniższym ciągu. Należy również usunąć nawiasy.

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

Teraz naciśnij Control-D.

Jeśli wszystko się powiedzie, wyświetlone zostaną komunikaty takie jak poniższy.

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

Więcej informacji

Alternatywa dla skryptu powłoki

Poniżej znajduje się tekst skryptu powłoki, którego można użyć do zautomatyzowania tego procesu. Wystarczy użyć polecenia kinit administratora katalogu i uruchomić ten skrypt. Zapoznaj się z tym artykułem, aby uzyskać sugestie dotyczące edytora tekstu.

#!/bin/sh nc=`ldapsearch -x -LLL -b "" -s base namingContexts | awk '/namingContexts/ {print $2}'` ldapmodify <

Ten dokument zostanie zaktualizowany, gdy dostępnych będzie więcej informacji.

Data publikacji: