Replikering af Open Directory virker muligvis ikke: "Size Limit exceeded" vises i slapd.log

Replikering af Open Directory virker muligvis ikke: I dette tilfælde vises poster som følgende i /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

Det kan ske, hvis en Open Directory-server har været nede i længere tid, eller hvis der oprettes en replika, hvor der er mere end 11.000 objekter i LDAP-datalageret. 11.000 er som standard det maksimale antal objekter, der kan returneres i en søgning.

Tillad, at brugeren af _ldap_replicator overskrider søgegrænsen. Det gør du ved at ændre LDAP-serverkonfigurationen på alle Open Directory-servere. Det omfatter godkendelse som biblioteksadministrator og kørsel af nogle LDAP-modificeringskommandoer i Terminal. Du skal kende søgebasen (der også kaldes navngivningskontekst) for LDAP-serveren.

Det gør du med følgende fremgangsmåde.

Find først søgebasen for LDAP-serveren

Find søgebasen for LDAP-serveren. Det er normalt det fuldt kvalificerede domænenavn for serveren med dc= sat foran hver mærkat og punktummer ændret til kommaer.

Eksempel: En server med værtsnavnet server.eksempel.com har standardsøgebasen dc=server,dc=eksempel,dc=com. Søgebasen kan godkendes ved at sende en anmodning til LDAP-serveren med følgende Terminal-kommando:

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

Se efter linjen med "namingContexts": Søgebasen kommer efter kolon som i eksemplet nedenfor.

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

Indhent dernæst kerberos-adgangsoplysningerne for biblioteksadministratoren

Standardnavnet på denne bruger er diradmin, men navnet kan være blevet ændret, da Open Directory-masteren blev oprettet. Det gør du ved at bruge kommandoen kinit i Terminal. Kør følgende kommando, hvor du erstatter det korrekte navn for biblioteksadministratoren med diradmin (hvis det er nødvendigt). Indtast adgangskoden, når du bliver bedt om det. Der er intet output.

kinit diradmin

Brug derefter ldapmodify i den interaktive funktion i Terminal for at foretage ændringerne. Udfør følgende i Terminal=:

ldapmodify

Bemærk: Med denne handling sendes nogle SASL-meddelelser, og der ventes på input. Hvis det lykkedes, skal SASL-outputtet se nogenlunde sådan ud:

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

Foretag ændringer af konfigurationen

Til sidst skal du foretage ændringer af konfigurationen. Denne handling kræver, at al tekst nedenfor skal indtastes i Terminal-vinduet som input til kommandoen ldapmodify. Søgebasen skal udskiftes med [søgebase] nedenfor. Parenteserne skal også fjernes.

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

Tryk på Kontrol-D.

Hvis det lykkedes, vises der meddelelser som f.eks. følgende.

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

Yderligere oplysninger

   

Alternativ shell-instruks

Nedenfor kan du se teksten i en shell-instruks, der kan bruges til at automatisere denne proces. Brug kommandoen kinit til biblioteksadministratoren som ovenfor, og kør dette script. Se denne artikel for at få forslag i tekstredigeringsprogrammet.

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