Open Directory-replikering kanske inte fungerar. Size Limit exceeded visas i slapd.log
Open Directory-replikering kanske inte fungerar. När detta händer visas poster som följande 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
Detta kan inträffa om en Open Directory-server har varit inaktiv under en längre tid, eller om en replika skapas när det finns fler än 11 000 objekt i LDAP-dataarkivet. 11 000 är det förinställda högsta antalet objekt som kan returneras i en sökning.
Tillåt användaren av _ldap_replicator att åsidosätta sökgränsen. Detta görs genom att ändra LDAP-serverkonfigurationen på varje Open Directory-server. Detta omfattar autentisering som katalogadministratör och körning av LDAP-modifieringskommandon i Terminal. Sökbasen, även känd som namngivningskontexten, för LDAP-servern måste också vara känd.
Följande steg kan användas för att göra detta.
Hitta först sökbasen för LDAP-servern
Hitta sökbasen för LDAP-servern. Detta är vanligtvis det fullständigt kvalificerade domännamnet för servern med dc= i början av varje etikett och punkterna ändrade till kommatecken.
Till exempel skulle en server med värdnamnet server.example.com ha standardsökbasen dc=server,dc=example,dc=com. Sökbasen kan verifieras genom att fråga på LDAP-servern med följande Terminal-kommando:
ldapsearch -x -LLL -b “” -s base namingContexts
Leta efter raden som innehåller namingContexts och sökbasen kommer att finnas efter kolon som i exemplet nedan.
dn: namingContexts: dc=server,dc=example,dc=com
För det andra, hämta kerberos-inloggningsuppgifterna för katalogadministratören
Standardnamnet för denna användare är diradmin men namnet kan ha ändrats när Open Directory-huvudservern skapades. Detta görs med kommandot kinit i Terminal. Kör följande kommando och ersätt diradmin med det korrekta namnet för katalogadministratören vid behov, och ange lösenordet när du uppmanas att göra det. Det finns ingen utdata.
kinit diradmin
Använd sedan ldapmodify i interaktivt läge i Terminal för att genomföra ändringarna. Kör följande i Terminal=:
ldapmodify
Obs: Detta kommer att producera några SASL-meddelanden och vänta på indata. Korrekt SASL-utdata se ut ungefär så här:
SASL-användarnamn startat av SASL/GSSAPI-autentisering: diradmin@REALM SASL SSF: 56 SASL data security layer installed.
Ändra konfigurationen
Slutligen, gör ändringarna i konfigurationen. Detta kräver att all text nedan skrivs in i Terminal-rutan som indata till kommandot ldapmodify. Sökbasen måste ersättas med [search base] nedan. Parenteserna måste också tas bort.
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
Tryck nu på Ctrl+D.
Om allt lyckats kommer meddelanden som följande att visas.
modifying entry "olcDatabase={1}bdb,cn=config" modifying entry "olcDatabase={2}bdb,cn=config"
Läs mer
Alternativ för kommandoskript
Nedan är texten till ett kommandoskrift som kan användas för att automatisera denna process. Använd kinit med katalogadministratören enligt ovan och kör det här skriptet. Du kan se förslag för textredigeraren i den här artikeln.
#!/bin/sh nc=`ldapsearch -x -LLL -b "" -s base namingContexts | awk '/namingContexts/ {print $2}'` ldapmodify <
Det här dokumentet kommer att uppdateras efterhand som ytterligare information blir tillgänglig.