wg fuldastrasse.de

LDAP Replikation mit slurpd: Einführung und Implementation

Inhalt

  1. Übersicht
  2. Was ist slurpd?
  3. Wie funktioniert slurpd?
  4. ein Beispiel für eine Veränderung und Replikation
              o 1 das Replication-Log
  5. Implementierung von slurpd
  6. Glossar
  7. 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