Openldap 2.3 slurpd Replication

mmlb

New Member
Hallo,

ich habe OpenLDAP 2.3 auf 2 Servern laufen (die Server sind leider alt, sodass V. 2.4 nicht läuft). Nun habe ich 2 Datenbanken erstellt, eine Haupt-DB und eine "Sub"-DB, die einen Unterzweig des Hauptbaums darstellt.

Nun möchte ich beide Datenbanken Replizieren mit Slurp (kein Syncrepl).
Wenn ich die Replikation für nur eine Datenbank konfiguriere, funktioniert das ganze reibungslos. Mein Problem ist, dass jedoch der replikationsmechanismus nicht für beide Datenbanken parallel funktioniert.

Lediglich von einem Server werden die Änderung in das Verzeichnis /var/lib/ldap/replica/ geschrieben, von dem aus slurp die Daten rüberschiebt, die Änderungen der anderen Datenbank werden immerhin mitgeloggt im Verzeichnis wie es in der Hauptkonfiguration angegeben ist.

Ist es überhaupt möglich 2 Datenbanken parallel mit Slurp zu replizieren? Kann mir da jemand weiterhelfen?

Hier meine Grundkonfiguration (slurp.conf):

Code:
include		/etc/openldap/schema/core.schema
include		/etc/openldap/schema/cosine.schema
include		/etc/openldap/schema/inetorgperson.schema
include		/etc/openldap/schema/nis.schema
include		/etc/openldap/schema/samba.schema
include		/etc/openldap/schema/openssh-lpk.schema

# Allow LDAPv2 client connections.  This is NOT the default.
allow bind_v2

pidfile		/var/run/openldap/slapd.pid
argsfile	/var/run/openldap/slapd.args

# access to *
#        by users="cn=repladmin,dc=domain,dc=de" write

access to *
	by group/groupOfUniqueNames/uniqueMember="cn=ldap admins,dc=domain,dc=de" write
	by users="cn=repladmin,dc=domain,dc=de" write
	by dn.base="cn=repladmin,dc=domain,dc=de" write
	by dn.base="cn=repladmin,ou=auth,ou=Mandanten,dc=domain,dc=de" write
	by dn.base="cn=repladmin,ou=masy,ou=Mandanten,dc=domain,dc=de" write
	by dn.base="cn=repladmin,ou=platform,ou=Mandanten,dc=domain,dc=de" write
	by * read
	by self write

# if no access controls are present, the default policy
# allows anyone and everyone to read anything but restricts
# updates to rootdn.  (e.g., "access to * by * read")
# rootdn can always read and write EVERYTHING!

password-hash   {ssha} {sha}


# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ## 
 # # # # # # # # # # # # # # #  new LDAP # # # # # # # # # # # # # ##
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ##

##################################################################
# Sub-DB auth
##################################################################
database        bdb
cachesize       10000
suffix          "ou=auth,ou=Mandanten,dc=domain,dc=de"
rootdn          "cn=Manager,dc=domain,dc=de"
directory       /var/lib/ldap/auth
subordinate
#subordinate advertise

# Indices to maintain for this database
index objectClass                       eq,pres
index ou,cn,mail,surname,givenname      eq,pres,sub
index uidNumber,gidNumber,loginShell    eq,pres
index uid,memberUid                     eq,pres,sub
index nisMapName,nisMapEntry            eq,pres,sub

##Replicas of this database
replicationinterval 1
replogfile /var/lib/ldap/auth/rep/replication.log

replica
 uri=ldap://ldap2.domain.de:389
 binddn="cn=repladmin,ou=auth,ou=Mandanten,dc=domain,dc=de"
 bindmethod=simple
 credentials=secret


##################################################################
# Main-DB
##################################################################
database        bdb
suffix          "dc=domain,dc=de"
rootdn          "cn=Manager,dc=domain,dc=de"
# Cleartext passwords, especially for the rootdn, should
# be avoided.  See slappasswd(8) and slapd.conf(5) for details.
# Use of strong authentication encouraged.
rootpw          {SSHA}PwB5+BIbI6...

# The database directory MUST exist prior to running slapd AND
# should only be accessible by the slapd and slap tools.
# Mode 700 recommended.
directory       /var/lib/ldap/main/

# Indices to maintain for this database
index objectClass                       eq,pres
index ou,cn,mail,surname,givenname      eq,pres,sub
index uidNumber,gidNumber,loginShell    eq,pres
index uid,memberUid                     eq,pres,sub
index nisMapName,nisMapEntry            eq,pres,sub

##Replicas of this database
replicationinterval 2
replogfile /var/lib/ldap/main/rep/replication.log

replica
 uri=ldap://ldap2.domain.de:389
 binddn="cn=repladmin,dc=domain,dc=de"
 bindmethod=simple
 credentials=secret
 
Hi,

ist deine Datenbank hinter dem LDAP so groß, dass der syncrepl an seine Grenzen kommt? :)

Wie sieht die slapd-Config aus und mit welchen Parametern startest du den LDAP-Server? Meine wage Vermutung ist, dass slurpd nur die Master-DB vom slapd bedienen kann.
 
Danke für die Antwort!

Nein, ist denn das Szenario denn generell mit Syncrepl realisierbar, dass man mehrere Datenbanken unabhängig voneinander replizieren kann, auch wenn sie auf dem selben Server liegen?

Die slapd config habe ich gepostet, LDAP starte ich ganz normal mit "/etc/init.d/ldap start".
Versuche ich slurp einzelnd für mehrere Logdateien zu starten, dauert dies sehr lange (über 10 Minuten) und trotzdem wird nur eine DB gleichzeitig repliziert.

Ein eher nicht so guter Weg den ich ausprobiert habe ist, für alle Datenbanken die selbe Logdatei zu definieren. Dann wird zwar alles korrekt repliziert, aber alle Daten werden an alle Datenbanken gesendet und von den ungewollten empfängern auch (glücklicherweise) zurückgewiesen. Dennoch entstehen rejection Files ... halt nicht so gut und keine praktikable Lösung.
 
Back
Top