Debian Multi-Master Replikation: Unterschied zwischen den Versionen
Erich (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Erich (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
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 | 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 | 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=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 | 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=refreshOnly interval=00:00:00:10 retry="5 5 300 5" timeout=1 | ||
- | - | ||
add: olcMirrorMode | add: olcMirrorMode | ||
Zeile 88: | Zeile 88: | ||
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 | 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 | 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 | 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 | 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 | ldapmodify -cxWD cn=admin,'''dc=test,dc=lan''' -f /root/ldap_ldif/del_testrepl.ldif | ||
Auf ldap1 und ldap2: | Auf ldap1 und ldap2: |
Version vom 8. Juni 2013, 07:13 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.
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. |
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=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=refreshOnly 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.