Debian Multi-Master Replikation: Unterschied zwischen den Versionen

Aus Wiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
(2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 11: Zeile 11:
LDAP-Server auf mindestens zwei Servern installiert. Im folgenden sollen diese ldap1 und ldap2 heißen.
LDAP-Server auf mindestens zwei Servern installiert. Im folgenden sollen diese ldap1 und ldap2 heißen.
Als Domain wird test.lan verwendet.
Als Domain wird test.lan verwendet.
Die LDAP BaseDN wurde mit '''dc=test,dc=homelinux,dc=lan''' gewählt.
Die LDAP BaseDN wurde mit '''dc=test,dc=lan''' gewählt.


{{Achtung|Im Folgenden unbedingt ldap1 und ldap2 mit den Hostnamen (ermitteln mit Befehl hostname) der beiden Server ersetzen. IP-Adressen bzw. DNS-Aliase funktionieren hier definitiv nicht.}}
{{Achtung|Im Folgenden unbedingt ldap1 und ldap2 mit den Hostnamen (ermitteln mit Befehl hostname) der beiden Server ersetzen. IP-Adressen bzw. DNS-Aliase funktionieren hier definitiv nicht.}}
Zeile 70: Zeile 70:
  changetype: modify
  changetype: modify
  replace: olcSyncRepl
  replace: olcSyncRepl
  olcSyncRepl: rid=003 provider=ldap://ldpa1.test.lan binddn="cn=admin,'''dc=test,dc=homelinux,dc=lan'''" bindmethod=simple credentials='''LDAP_PWD''' searchbase="'''dc=test,dc=homelinux,dc=lan'''" type=refreshOnly interval=00:00:00:10 retry="5 5 300 5" timeout=1
  olcSyncRepl: rid=003 provider=ldap://ldpa1.test.lan binddn="cn=admin,'''dc=test,dc=lan'''" bindmethod=simple credentials='''LDAP_PWD''' searchbase="'''dc=test,dc=lan'''" type=refreshAndPersist interval=00:00:00:10 retry="5 5 300 5" timeout=1
  olcSyncRepl: rid=004 provider=ldap1://ldap2.test.lan binddn="cn=admin,'''dc=test,dc=homelinux,dc=lan'''" bindmethod=simple credentials='''LDAP_PWD''' searchbase="'''dc=test,dc=homelinux,dc=lan'''" type=refreshOnly interval=00:00:00:10 retry="5 5 300 5" timeout=1
  olcSyncRepl: rid=004 provider=ldap1://ldap2.test.lan binddn="cn=admin,'''dc=test,dc=lan'''" bindmethod=simple credentials='''LDAP_PWD''' searchbase="'''dc=test,dc=lan'''" type=refreshAndPersist interval=00:00:00:10 retry="5 5 300 5" timeout=1
  -
  -
  add: olcMirrorMode
  add: olcMirrorMode
Zeile 84: Zeile 84:
  ldapmodify -cxWD cn=admin,cn=config -f /root/ldap_ldif/syncrepl_hdb.ldif
  ldapmodify -cxWD cn=admin,cn=config -f /root/ldap_ldif/syncrepl_hdb.ldif


===Funktionstest===
==Funktionstest==
Auf Server ldap1:
Auf Server ldap1:
  vi /root/ldap_ldif/add_testrepl.ldif
  vi /root/ldap_ldif/add_testrepl.ldif
Folgende Zeilen einfügen und anpassen:
Folgende Zeilen einfügen und anpassen:
  dn: uid=testrepl,ou=people,'''dc=test,dc=homelinux,dc=lan'''
  dn: uid=testrepl,ou=people,'''dc=test,dc=lan'''
  uid: testrepl
  uid: testrepl
  uidNumber: 8899
  uidNumber: 8899
Zeile 102: Zeile 102:
  homeDirectory: /home/testrepl
  homeDirectory: /home/testrepl
In's Directory einfügen:
In's Directory einfügen:
  ldapadd -cxWD cn=admin,'''dc=test,dc=homelinux,dc=lan''' -f /root/ldap_ldif/add_testrepl.ldif
  ldapadd -cxWD cn=admin,'''dc=test,dc=lan''' -f /root/ldap_ldif/add_testrepl.ldif


Auf ldap1 und ldap2:
Auf ldap1 und ldap2:
  ldapsearch -xLLL uid=testrepl
  ldapsearch -xLLL uid=testrepl
Die Ausgabe sollte auf beiden Servern folgendermaßen aussehen, falls die Replikation korrekt funktioniert:
Die Ausgabe sollte auf beiden Servern folgendermaßen aussehen, falls die Replikation korrekt funktioniert:
  dn: uid=testrepl,ou=people,'''dc=test,dc=homelinux,dc=lan'''
  dn: uid=testrepl,ou=people,'''dc=test,dc=lan'''
  uid: testrepl
  uid: testrepl
  uidNumber: 8899
  uidNumber: 8899
Zeile 125: Zeile 125:
  vi /root/ldap_ldif/del_testrepl.ldif
  vi /root/ldap_ldif/del_testrepl.ldif
Folgende Zeilen einfügen und anpassen:
Folgende Zeilen einfügen und anpassen:
  dn: uid=testrepl,ou=people,'''dc=test,dc=homelinux,dc=lan'''
  dn: uid=testrepl,ou=people,'''dc=test,dc=lan'''
  changetype: delete
  changetype: delete
Test Usereintrag löschen:
Test Usereintrag löschen:
   ldapmodify -cxWD cn=admin,'''dc=test,dc=homelinux,dc=lan''' -f /root/ldap_ldif/del_testrepl.ldif
   ldapmodify -cxWD cn=admin,'''dc=test,dc=lan''' -f /root/ldap_ldif/del_testrepl.ldif


Auf ldap1 und ldap2:
Auf ldap1 und ldap2:

Aktuelle Version vom 23. Juni 2013, 12:55 Uhr

Allgemein

Das LDAP Directory kann zur Erhöhung der Ausfallsicherheit über mehrere Server hinweg repliziert (synchronisiert) werden. So sind die Daten permanent redundant auf mehreren Servern vorrätig und kann von den diversen Diensten benutzt werden. LDAP bringt bereits alle Mittel mit, um das Directory auf mehreren Servern zu replizieren. Für die Replikation wird das OpenLDAP- Modul syncrepl verwendet.

Voraussetzung:

  • LDAP Server auf mindestens zwei Servern installiert
  • DNS Server (Replikation mittels IP-Adressen funktioniert nicht)


Installation

LDAP-Server auf mindestens zwei Servern installiert. Im folgenden sollen diese ldap1 und ldap2 heißen. Als Domain wird test.lan verwendet. Die LDAP BaseDN wurde mit dc=test,dc=lan gewählt.

Warning.png Achtung:
Im Folgenden unbedingt ldap1 und ldap2 mit den Hostnamen (ermitteln mit Befehl hostname) der beiden Server ersetzen. IP-Adressen bzw. DNS-Aliase funktionieren hier definitiv nicht.


Bulbgraph.png Hinweis:
Es ist dringend angeraten ein Backup des kompletten LDAP Directories und dessen Konfiguration durchzuführen, bevor mit der Konfiguration der Replikation begonnen wird. Im Falle einer Fehlkonfiguration, die evtl. sogar dazu führt, dass OpenLDAP nicht mehr startet, kann relativ einfach wieder ein lauffähiges LDAP Directory hergestellt werden.


Konfiguration

Modul Syncrepl aktivieren

vi /root/ldap_ldif/syncrepl_load.ldif

Folgende Zeilen einfügen:

dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModuleLoad: syncprov.la

Übertragen des ldif-Files ins LDAP Directory (auf beiden LDAP-Servern ldap1 und ldap2 durchführen):

ldapadd -cxWD cn=admin,cn=config -f /root/ldap_ldif/syncrepl_load.ldif


Replikation der LDAP Konfigurations Datenbank (cn=config)

vi /root/ldap_ldif/syncrepl_config.ldif

Folgende Zeilen einfügen und evtl. anpassen (Hostnamen ldap1 und ldap2 und ldap_pwd mit LDAP-Admin Passwort ersezten):

dn: cn=config
changetype: modify
add: olcServerID
olcServerID: 1 ldap://ldap1.test.lan
olcServerID: 2 ldap://ldap2.test.lan

dn: olcOverlay=syncprov,olcDatabase={0}config,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov

dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcSyncRepl
olcSyncRepl: rid=001 provider=ldap://ldap1.test.lan binddn="cn=admin,cn=config" bindmethod=simple credentials=ldap_pwd searchbase="cn=config"  type=refreshAndPersist retry="5 5 300 5" timeout=1
olcSyncRepl: rid=002 provider=ldap://ldap2.test.lan binddn="cn=admin,cn=config" bindmethod=simple credentials=ldap_pwd searchbase="cn=config"  type=refreshAndPersist retry="5 5 300 5" timeout=1
-
add: olcMirrorMode
olcMirrorMode: TRUE

File vor unberechtigtem Zugriff schützen, da Admin Passwort im Klartext hinterlegt ist:

chmod 600 /root/ldap_ldif/syncrepl_config.ldif

Übertragen des ldif-Files ins LDAP Directory (auf beiden LDAP-Servern ldap1 und ldap2 durchführen):

ldapmodify -cxWD cn=admin,cn=config -f /root/ldap_ldif/syncrepl_config.ldif

OpenLDAP auf beiden Servern neu starten:

/etc/init.d/slapd restart


Replikation des Daten Directories

vi /root/ldap_ldif/syncrepl_hdb.ldif

Folgende Zeilen einfügen und anpassen:

dn: olcDatabase={1}hdb,cn=config
changetype: modify
replace: olcSyncRepl
olcSyncRepl: rid=003 provider=ldap://ldpa1.test.lan binddn="cn=admin,dc=test,dc=lan" bindmethod=simple credentials=LDAP_PWD searchbase="dc=test,dc=lan" type=refreshAndPersist interval=00:00:00:10 retry="5 5 300 5" timeout=1
olcSyncRepl: rid=004 provider=ldap1://ldap2.test.lan binddn="cn=admin,dc=test,dc=lan" bindmethod=simple credentials=LDAP_PWD searchbase="dc=test,dc=lan" type=refreshAndPersist interval=00:00:00:10 retry="5 5 300 5" timeout=1
-
add: olcMirrorMode
olcMirrorMode: TRUE

dn: olcOverlay=syncprov,olcDatabase={1}hdb,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov

Ins Directory übernehmen (nur auf einem Server ausführen, da die Änderung bereits auf den zweiten Server automatisch repliziert werden sollte):

ldapmodify -cxWD cn=admin,cn=config -f /root/ldap_ldif/syncrepl_hdb.ldif

Funktionstest

Auf Server ldap1:

vi /root/ldap_ldif/add_testrepl.ldif

Folgende Zeilen einfügen und anpassen:

dn: uid=testrepl,ou=people,dc=test,dc=lan
uid: testrepl
uidNumber: 8899
gidNumber: 9988
cn: Test
sn: Test
objectClass: top
objectClass: inetOrgPerson
objectClass: person
objectClass: posixAccount
objectClass: shadowAccount
loginShell: /bin/false
homeDirectory: /home/testrepl

In's Directory einfügen:

ldapadd -cxWD cn=admin,dc=test,dc=lan -f /root/ldap_ldif/add_testrepl.ldif

Auf ldap1 und ldap2:

ldapsearch -xLLL uid=testrepl

Die Ausgabe sollte auf beiden Servern folgendermaßen aussehen, falls die Replikation korrekt funktioniert:

dn: uid=testrepl,ou=people,dc=test,dc=lan
uid: testrepl
uidNumber: 8899
gidNumber: 9988
cn: Test
sn: Test
objectClass: top
objectClass: inetOrgPerson
objectClass: person
objectClass: posixAccount
objectClass: shadowAccount
loginShell: /bin/false
homeDirectory: /home/testrepl

Falls am Server ldap2 keine Ausgabe erfolgt, liegt ein Replikationsfehler vor.

Auf ldap2:

vi /root/ldap_ldif/del_testrepl.ldif

Folgende Zeilen einfügen und anpassen:

dn: uid=testrepl,ou=people,dc=test,dc=lan
changetype: delete

Test Usereintrag löschen:

 ldapmodify -cxWD cn=admin,dc=test,dc=lan -f /root/ldap_ldif/del_testrepl.ldif

Auf ldap1 und ldap2:

ldapsearch -xLLL uid=testrepl

Es sollten auf beiden Servern keinerlei Ausgaben erfolgen. Damit wurde die Replikation von ldap1=>ldap2 und von ldap2=>ldap1 erfolgreich verifiziert.