Open Directory-replicatie werkt mogelijk niet; ‘grootte van volume is overschreden’ verschijnt in slapd.log

Open Directory-replicatie werkt mogelijk niet; wanneer dit gebeurt, verschijnen vermeldingen zoals de volgende in /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

Dit kan gebeuren als een Open Directory-server gedurende een lange periode niet beschikbaar is geweest of als een replica is gemaakt wanneer de LDAP-datastore meer dan 11.000 objecten bevat.  11.000 objecten is standaard het maximale aantal dat een zoekactie kan opleveren.

Sta toe dat de gebruiker _ldap_replicator de limiet van de zoekactie negeert.  Dit doet u door de configuratie van de LDAP-server op elke Open Directory-server te wijzigen. Hiervoor moet als beheerder van de directory worden ingelogd en moeten enkele commando’s in Terminal worden uitgevoerd om de LDAP te wijzigen. De zoekbasis, ook gekend als naamgevingscontext, voor de LDAP-server moet ook gekend zijn.

Om dit te verwezenlijken kunnen de volgende stappen worden uitgevoerd.

Zoek eerst de zoekbasis voor de LDAP-server

Zoek de zoekbasis voor de LDAP-server.  Dit is doorgaans de volledig gekwalificeerde domeinnaam van de server met dc= vóór elke label en komma’s in plaats van punten.

Bijvoorbeeld: een server met de hostnaam server.voorbeeld.com heeft als standaard zoekbasis ‘dc=server,dc=voorbeeld,dc=com’.  De zoekbasis kan worden gecontroleerd door de LDAP-server zelf met het volgende commando in Terminal te zoeken:

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

Zoek de regel met namingContexts en u ziet de zoekbasis na de dubbelepunt zoals in het onderstaande voorbeeld.

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

Verkrijg vervolgens de Kerberos-inloggegevens voor de beheerder van de directory

De standaardnaam van deze gebruiker is diradmin maar de naam is bij het aanmaken van de Open Directory-hoofdserver mogelijk gewijzigd. Dit wordt gedaan met het commando kinit in Terminal.  Voer het volgende commando uit en vervang hierbij indien nodig de juiste naam van de beheerder van de directory door diradmin. Voer het wachtwoord in wanneer u hierom wordt gevraagd. Er is geen uitvoer.

kinit diradmin

Gebruik vervolgens ldapmodify in de interactieve modus in Terminal om wijzigingen aan te brengen. Voer gewoon het volgende uit in Terminal=:

ldapmodify

Opmerking: hierdoor worden enkele SASL-berichten weergegeven en wordt gewacht op invoer.  Indien geslaagd ziet het SASL-resultaat er als volgt uit:

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

Wijzig de configuratie

Breng tot slot de wijzigingen aan de configuratie aan. Hiervoor moet alle onderstaande tekst in het Terminal-venster worden ingevoerd als invoer voor het commando ldapmodify. De zoekbasis moet worden vervangen door de onderstaande [zoekbasis]. De haken moeten ook worden verwijderd.

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

Druk nu op Control-D.

Als alles succesvol is, worden berichten zoals de volgende weergegeven.

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

Meer informatie

   

Shellscript-alternatief

Hieronder vindt u de tekst van een shellscript dat kan worden gebruikt om dit proces te automatiseren. Voer gewoon kinit als de beheerder van de directory uit zoals hierboven wordt beschreven en voer dit script uit. Raadpleeg dit artikel voor suggesties voor een programma voor tekstbewerking.

#!/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
Publicatiedatum: