Open Directory-replikering fungerer kanskje ikke, «Størrelsesbegrensning overskredet» vises i slapd.log

Open Directory-replikering fungerer kanskje ikke. Når det skjer, vises oppføringer som de 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

Dette kan skje hvis en Open Directory-tjener har vært nede i lengre tid, eller hvis det opprettes en replika og det er mer enn 11 000 objekter i LDAP-datalageret. 11 000 er standardverdien for maksimalt antall objekter som kan returneres i et søk.

Tillat _ldap_replicator-brukeren å overstyre søkegrensen. Det gjøres ved å endre LDAP-tjenerkonfigurasjonen på alle Open Directory-tjenere. Dette innebærer godkjenning som katalogadministrator og utføring av enkelte LDAP-modifiseringskommandoer i Terminal. Søkebasen, som også kalles navngivingskonteksten, til LDAP-tjeneren må også være kjent.

Følgende framgangsmåte kan benyttes for å få gjort dette.

Først må søkebasen til LDAP-tjeneren finnes

Finn søkebasen til LDAP-tjeneren. Dette er vanligvis det fullt kvalifiserte domenenavnet til tjeneren med dc= foran hver etikett og punktum endret til komma.

For eksempel vil en tjener med vertsnavnet tjener.eksempel.no ha standardsøkebasen «dc=tjener,dc=eksempel,dc=no». Søkebasen kan kontrolleres ved å spørre LDAP-tjeneren selv med denne Terminal-kommandoen:

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

Se etter linjen som inneholder namingContexts, og søkebasen vil stå etter kolonet, som i utdataeksemplet nedenfor.

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

Deretter må du få tak i kerberos-akkreditivene til katalogadministratoren

Standardnavnet til denne brukeren er diradmin, men navnet kan ha blitt endret da Open Directory-masteren ble opprettet. Dette gjøres ved å bruke kinit-kommandoen i Terminal. Utfør følgende kommando, der du setter inn det riktige navnet på katalogadministratoren i stedet for diradmin, om nødvendig, og oppgir passordet når du blir bedt om det. Det er ingen utdata.

kinit diradmin

Deretter bruker du ldapmodify i interaktiv modus i Terminal til å gjøre endringene. Du utfører bare følgende i Terminal=:

ldapmodify

Merk: Da får du noen få SASL-meldinger som krever inndata. Hvis alt går som det skal, skal utdataene fra SASL se omtrent slik ut:

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

Endre konfigurasjonen

Til slutt gjør du endringene i konfigurasjonen. Dette krever at all teksten nedenfor blir skrevet inn i Terminal-vinduet som inndata til ldapmodify-kommandoen. Søkebasen må settes inn i stedet for [search base] nedenfor. Hakeparentesen må 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

Deretter trykker du på Kontroll-D.

Hvis alt går som det skal, vil du få meldinger som disse.

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

Les mer

   

Alternativ med shellprosedyre

Nedenfor finner du teksten til en shellprosedyre som kan brukes til å automatisere denne prosessen. Bare kinit katalogadministratoren som ovenfor, og utfør prosedyren. Se denne artikkelen for å få forslag til tekstredigeringsprogram.

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