Open Directory-Replikation funktioniert möglicherweise nicht; in slapd.log wird „Size limit exceeded“ angezeigt
Die Open Directory-Replikation funktioniert möglicherweise nicht. In diesem Fall werden Einträge wie der folgende in /var/log/slapd.log angezeigt.
slapd[209]: do_syncrep2: rid=001 LDAP_RES_SEARCH_RESULT (4) Size limit exceeded slapd[209]: do_syncrep2: rid=001 (4) Size limit exceeded
Dies kann der Fall sein, wenn ein Open Directory-Server für längere Zeit ausgefallen ist oder wenn eine Replik erstellt wird, wenn sich mehr als 11.000 Objekte im LDAP-Datenspeicher befinden. 11.000 ist die standardmäßige Höchstanzahl von Objekten, die bei einer Suche zurückgegeben werden können.
Du kannst dem Benutzer _ldap_replicator erlauben, das Suchlimit zu überschreiben. Dazu änderst du die LDAP-Serverkonfiguration auf jedem Open Directory-Server. Dafür musst du dich als Verzeichnisadministrator authentifizieren und einige LDAP-Änderungsbefehle in Terminal ausführen. Der Suchbereich (auch bekannt als namingContext) für den LDAP-Server muss ebenfalls bekannt sein.
Dies kann mit den folgenden Schritten erreicht werden.
Erstens den Suchbereich für den LDAP-Server herausfinden
Finde den Suchbereich für den LDAP-Server heraus. Dies ist normalerweise der vollständig qualifizierte Domainname des Servers, wobei dc= jedem Label vorangestellt ist und die Punkte in Kommas geändert wurden.
Beispiel: Ein Server mit dem Hostnamen server.example.com hat den Standardsuchbereich „dc=server,dc=example,dc=com“. Der Suchbereich kann überprüft werden, indem der LDAP-Server selbst mit dem folgenden Terminal-Befehl abgefragt wird:
ldapsearch -x -LLL -b “” -s base namingContexts
Wenn du nach der Zeile suchst, die namingContexts enthält, wird der Suchbereich nach dem Doppelpunkt angegeben, wie in der Beispielausgabe unten.
dn: namingContexts: dc=server,dc=example,dc=com
Zweitens die Kerberos-Anmeldedaten für den Verzeichnisadministrator abrufen
Der Standardname für diesen Benutzer lautet diradmin, aber der Name kann beim Erstellen des Open Directory-Masters geändert worden sein. Dies erfolgt mit dem Befehl kinit in Terminal. Führe den folgenden Befehl aus. Ersetze dabei ggf. diradmin durch den korrekten Namen des Verzeichnisadministrators, und gib das Passwort ein, wenn du dazu aufgefordert wirst. Es erfolgt keine Ausgabe.
kinit diradmin
Als Nächstes verwendest du ldapmodify im interaktiven Modus in Terminal, um die Änderungen vorzunehmen. Führe einfach Folgendes in Terminal aus:
ldapmodify
Hinweis: Dadurch werden einige SASL-Meldungen ausgegeben und auf Eingaben gewartet. Bei Erfolg sollte die SASL-Ausgabe in etwa wie folgt aussehen:
SASL/GSSAPI authentication started SASL username: diradmin@REALM SASL SSF: 56 SASL data security layer installed.
Konfiguration ändern
Als Letztes änderst du die Konfiguration. Dazu muss der gesamte unten stehende Text im Terminal-Fenster als Eingabe für den Befehl ldapmodify eingegeben werden. Im Platzhalter [Suchbereich] unten muss der tatsächliche Suchbereich eingegeben werden. Die Klammern müssen ebenfalls entfernt werden.
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,[Suchbereich]" time.soft=unlimited time.hard=unlimited size.soft=unlimited size.hard=unlimited
Drücke nun Ctrl-D.
Wenn alles erfolgreich war, werden Meldungen wie die folgenden angezeigt.
modifying entry "olcDatabase={1}bdb,cn=config" modifying entry "olcDatabase={2}bdb,cn=config"
Weitere Informationen
Shell-Skript-Alternative
Unten findest du den Text eines Shell-Skripts, mit dem dieser Vorgang automatisiert werden kann. Führe einfach kinit für den Verzeichnisadministrator aus, wie oben beschrieben, und führe dieses Skript aus. In diesem Artikel findest du Vorschläge für einen Texteditor.
#!/bin/sh nc=`ldapsearch -x -LLL -b "" -s base namingContexts | awk '/namingContexts/ {print $2}'` ldapmodify <
Dieses Dokument wird aktualisiert, sobald neue Informationen erhältlich sind.