LDAP-Replikation
LDAP Replikation mit slurpd: Einführung und Implementation
Inhalt
- Übersicht
- Was ist slurpd?
- Wie funktioniert slurpd?
- ein Beispiel für eine Veränderung und Replikation
o 1 das Replication-Log - Implementierung von slurpd
- Glossar
- Anhang
o 1 Replication-Log
o 2 replica-directive
Übersicht
Dieses Dokument gibt eine Übersicht über die Replikation eines LDAP-Verzeichnisses auf einen slave-slapd mit slurpd. Sichere LDAP-Verzeichnisse haben mindestens einen Slave-slapd, um Sicherheit, Availability und Redundanz zu gewährleisten.
Was ist slurpd?
slurpd ist ein Daemon aus dem Open-LDAP-Packet und stellt Replikationsdienste für LDAP-Verzeichnisse zur Verfügung.
Wie funktioniert slurpd?
Um slurpd zu bedienen, muss ein Änderungslogfile vom slapd geschrieben werden. Dieses Logfile beinhaltet alle Veränderungen, sobald sie von slapd in die LDAP-Datenbank (das Verzeichnis) eingetragen wurden. Slurpd erwacht in regelmässigen Abständen, und überprüft das Logfile auf Veränderungen. Sollten sich Änderungen ergeben haben, werden diese mit dem LDAP-Protokoll an den/die slapd-slaves übertragen.
ein Beispiel für eine Veränderung und Replikation
In diesem Beispiel haben wir einen slapd-master und einen slapd-slave. der slapd-slave kann nur Anfragen beantworten, aber keine Veränderungen durchführen. Es würden Inkonsistenzen in den Datenbanken auftreten, da auf dem slapd-slave kein slurpd über Veränderungen wacht.
- ein LDAP-Client verbindet sich zum slapd-slave, um eine Veränderung seines Eintrages vorzunehmen.
- Der slapd-slave verweist den Client an den slapd-master, um Veränderungen durchzuführen.
- der slapd-master vollzieht die Änderung des Eintrages, und schreibt in sein Logfile die Veränderung die er gerade bearbeitet hat
- slurpd erwacht, findet die Änderung im Logfile und überträgt die Veränderungen per LDAP-Protokoll an den slapd-slave
- der slapd-slave verändert den passenden Eintrag in seiner Datenbank und liefert dem slurpd eine Erfolgsmeldung zurück.
das Replication-Log
Das vom slapd-master produzierte Logfile nennt man Replication log. Das Format ist eine Variante des LDIF-Formates, es wird für jede Änderung folgendes notiert:
- Adresse des slapd-slaves
- Zeitstempel
- DN des Eintrages
- die Serie von Zeilen, die modifiziert werden sollen
Ein Beispiel für das Replication-Log entnehmen Sie bitte dem Anhang.
Implementierung von slurpd
Um slurpd zu implementieren, müssen Master und Slave konfiguriert werden. Um die Datenbank auf den Slave zu überspielen, muss der slapd-master heruntergefahren werden und die Datenbank auf den slapd-slave übertragen werden. Alternativ kann auch die Datenbank währenddessen im 'read-only' Modus gemountet werde, um den kontinuierlichen Betrieb (nur Abfrage, bei Schreibversuchen wird eine Fehlermeldung produziert) des slapd-masters während der Replikations-Einrichtung zu gewährleisten.
Danach werden folgende Schritte auf dem slapd-master ausgeführt:
- ein 'replica'-Directive muss der slapd.conf hinzugefügt werden, siehe Anhang
- ein 'replogfile'-Directive muss in die slapd.conf eingetragen werden
auf dem slapd-slave:
- ein 'updatedn'-Directive wird der slapd.conf hinzugefügt, der DN des Eintrags muss dem binddn- Eintrag der 'replica'-Directive des slapd-masters entsprechen.
- der DN des updatedn-Eintrages muss Schreibzugriff auf die Datenbank haben (und nur der!)
Jetzt wird der slapd-master heruntergefahren, und die Datenbank auf den slapd-slave kopiert. Ebenso müssen alle Index-Dateien kopiert werden, und auch die 'NEXTID'-Datei. In der slapd.conf sind die Index-Dateien eingetragen, diese müssen auf jeden Fall kopiert werden.
Die slapd's können jetzt wieder gestartet werden. Der slapd-master sollte jetzt ein Replication-Log schreiben, das kann man überprüfen, indem man einen Eintrag verändert und sich danach das Replication-Log anschaut.
Slurpd wird nun gestartet, dieser sollte die Veränderung augenblicklich an den slapd-slave senden. Überprüfen Sie das im slurpd logfile, bzw. fragen Sie den slapd-slave mit einem LDAP-Client ab.
Mini-Glossar
slapd: der unter Unix verwendete Dämon für LDAP-Verzeichnisse
slave-slapd: zur Replikation benutzter zweiter LDAP-Server/Verzeichnis
slurpd: Replikationsdienst des slapd
DN: distinguished name
Anhang
- Replication-Log
<>replica: FQDN_des_slapd-slave:389
time: 1234567890
<>dn: cn=Malte Eismann, ou=People, o=WG Fuldastrasse, c=de
changetype: modify <>
delete: multiLineDescription
miltiLineDescription: Ich lese gerne <>
-
add: multiLineDescription
<>multiLineDescription: Ich nähe gerne Drachen
- <>
delete:lastModifiedBy
- <>
add:lastModifiedBy
lastModifiedBy: cn=Malte Eismann, ou=People, o=WG Fuldastrasse, c=de <>
-
delete:lastModifiedTime <>
-
add: lastModifiedTime <>
lastModifiedTime:2345678901
-
- replica-directive
<>replica host=FQDN_des_slapd-slave
binddn="cn=Replikator, o=fuldastrasse.de, c=de"
bindmethod=simple credentials=passwort
Malte Eismann 2004-03-02 malte@fuldastrasse.de
