V této příručce nakonfigurujeme replikaci multimaster serveru OpenLDAP na CentOS 7 / RHEL 7 . Toto nastavení replikace Multi-Master má překonat omezení typické replikace Master-Slave, kde změny v adresáři LDAP provádí pouze hlavní server. .
ČTĚTE:Jak nakonfigurovat replikaci OpenLDAP Master-Slave
V replikaci Multi-Master fungují dva nebo více serverů jako hlavní a všechny tyto jsou autoritativní pro jakoukoli změnu v adresáři LDAP. Dotazy od klientů jsou distribuovány na více serverů pomocí replikace.
Životní prostředí
Pro replikaci Multi-Master použijeme tři OpenLDAP servery. Podrobnosti jsou uvedeny níže.
ldpsrv1.itzgeek.local (192.168.12.10) ldpsrv2.itzgeek.local (192.168.12.20) ldpsrv3.itzgeek.local (192.168.12.30)
Nainstalovat LDAP
Nainstalujte balíčky LDAP na všechny své servery.yum -y install openldap compat-openldap openldap-clients openldap-servers openldap-servers-sql openldap-devel
Spusťte službu LDAP a povolte ji pro automatické spouštění při spouštění systému.
systemctl start slapd.service systemctl enable slapd.service
Konfigurace protokolování LDAP
Nakonfigurujte syslog pro povolení protokolování LDAP.
echo "local4.* /var/log/ldap.log" >> /etc/rsyslog.conf systemctl restart rsyslog
Konfigurace replikace OpenLDAP Multi-Master Replication
Zkopírujte konfigurační soubor ukázkové databáze do /var/lib/ldap adresář a aktualizujte oprávnění k souboru. Pokud není uvedeno jinak, budete muset provést níže uvedené kroky na všech vašich serverech OpenLDAP.
cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG chown ldap:ldap /var/lib/ldap/*
Povolíme modul syncprov.
vi syncprov_mod.ldif
Zkopírujte a vložte níže uvedené řádky do výše uvedeného syncprov_mod.ldif soubor.
dn: cn=module,cn=config objectClass: olcModuleList cn: module olcModulePath: /usr/lib64/openldap olcModuleLoad: syncprov.la
Nyní odešlete konfiguraci na server LDAP.
ldapadd -Y EXTERNAL -H ldapi:/// -f syncprov_mod.ldif
Výstup:
SASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 adding new entry "cn=module,cn=config"
Povolit replikaci konfigurace
Změňte olcServerID na všech serverech . Například pro ldpsrv1 nastavte olcServerID na 1, pro ldpsrv2 nastavte olcServerID na 2 a pro ldpsrv3 nastavte na 3.
vi olcserverid.ldif
Zkopírujte a vložte níže uvedený text do výše uvedeného souboru.
dn: cn=config changetype: modify add: olcServerID olcServerID: 1
Aktualizujte konfiguraci na serveru LDAP.
ldapmodify -Y EXTERNAL -H ldapi:/// -f olcserverid.ldif
Výstup:
SASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 modifying entry "cn=config"
Potřebujeme vygenerovat heslo pro replikaci konfigurace LDAP.
slappasswd
Výstup:
New password: Re-enter new password: {SSHA}MAfw/QNizKx4NxueW7CpCSN6jeDB5Z+C
Na každém serveru byste měli vygenerovat heslo spuštěním příkazu slappasswd.
Nastavte heslo pro konfigurační databázi.
vi olcdatabase.ldif
Zkopírujte a vložte níže uvedený text do výše uvedeného souboru. Do tohoto souboru musíte vložit heslo, které jste vygenerovali v předchozím kroku.
dn: olcDatabase={0}config,cn=config add: olcRootPW olcRootPW: {SSHA}MAfw/QNizKx4NxueW7CpCSN6jeDB5Z+C
Aktualizujte konfiguraci na serveru LDAP.
ldapmodify -Y EXTERNAL -H ldapi:/// -f olcdatabase.ldif
Výstup:
SASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 modifying entry "olcDatabase={0}config,cn=config"
Nyní nastavíme replikaci konfigurace na všech serverech.
vi configrep.ldif
Zkopírujte a vložte níže uvedený text do výše uvedeného souboru.
### Update Server ID with LDAP URL ### dn: cn=config changetype: modify replace: olcServerID olcServerID: 1 ldap://ldpsrv1.itzgeek.local olcServerID: 2 ldap://ldpsrv2.itzgeek.local olcServerID: 3 ldap://ldpsrv3.itzgeek.local ### Enable Config Replication### dn: olcOverlay=syncprov,olcDatabase={0}config,cn=config changetype: add objectClass: olcOverlayConfig objectClass: olcSyncProvConfig olcOverlay: syncprov ### Adding config details for confDB replication ### dn: olcDatabase={0}config,cn=config changetype: modify add: olcSyncRepl olcSyncRepl: rid=001 provider=ldap://ldpsrv1.itzgeek.local binddn="cn=config" bindmethod=simple credentials=x searchbase="cn=config" type=refreshAndPersist retry="5 5 300 5" timeout=1 olcSyncRepl: rid=002 provider=ldap://ldpsrv2.itzgeek.local binddn="cn=config" bindmethod=simple credentials=x searchbase="cn=config" type=refreshAndPersist retry="5 5 300 5" timeout=1 olcSyncRepl: rid=003 provider=ldap://ldpsrv3.itzgeek.local binddn="cn=config" bindmethod=simple credentials=x searchbase="cn=config" type=refreshAndPersist retry="5 5 300 5" timeout=1 - add: olcMirrorMode olcMirrorMode: TRUE
Nyní odešlete konfiguraci na server LDAP.
ldapmodify -Y EXTERNAL -H ldapi:/// -f configrep.ldif
Výstup:
SASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 modifying entry "cn=config" adding new entry "olcOverlay=syncprov,olcDatabase={0}config,cn=config" modifying entry "olcDatabase={0}config,cn=config"
Povolit replikaci databáze
Do této doby jsou všechny vaše konfigurace LDAP replikovány. Nyní povolíme replikaci skutečných dat, tedy databáze uživatelů. Proveďte níže uvedené kroky na kterémkoli z uzlů, protože ostatní uzly jsou v replikaci.
Potřebovali bychom povolit syncprov pro databázi hdb.
vi syncprov.ldif
Zkopírujte a vložte níže uvedený text do výše uvedeného souboru.
dn: olcOverlay=syncprov,olcDatabase={2}hdb,cn=config changetype: add objectClass: olcOverlayConfig objectClass: olcSyncProvConfig olcOverlay: syncprov
Aktualizujte konfiguraci na serveru LDAP.
ldapmodify -Y EXTERNAL -H ldapi:/// -f syncprov.ldif
Výstup:
SASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 adding new entry "olcOverlay=syncprov,olcDatabase={2}hdb,cn=config"
Nastavení replikace pro databázi hdb.
vi olcdatabasehdb.ldif
Zkopírujte a vložte níže uvedený obsah do výše uvedeného souboru. Pokud je již v konfiguraci máte, může se zobrazit chyba pro olcSuffix, olcRootDN a olcRootPW. Odeberte položky, pokud nejsou vyžadovány.
dn: olcDatabase={2}hdb,cn=config changetype: modify replace: olcSuffix olcSuffix: dc=itzgeek,dc=local - replace: olcRootDN olcRootDN: cn=ldapadm,dc=itzgeek,dc=local - replace: olcRootPW olcRootPW: {SSHA}xtbbtC/1pJclCPzo1n3Szac9jqavSphk - add: olcSyncRepl olcSyncRepl: rid=004 provider=ldap://ldpsrv1.itzgeek.local binddn="cn=ldapadm,dc=itzgeek,dc=local" bindmethod=simple credentials=x searchbase="dc=itzgeek,dc=local" type=refreshOnly interval=00:00:00:10 retry="5 5 300 5" timeout=1 olcSyncRepl: rid=005 provider=ldap://ldpsrv2.itzgeek.local binddn="cn=ldapadm,dc=itzgeek,dc=local" bindmethod=simple credentials=x searchbase="dc=itzgeek,dc=local" type=refreshOnly interval=00:00:00:10 retry="5 5 300 5" timeout=1 olcSyncRepl: rid=006 provider=ldap://ldpsrv3.itzgeek.local binddn="cn=ldapadm,dc=itzgeek,dc=local" bindmethod=simple credentials=x searchbase="dc=itzgeek,dc=local" type=refreshOnly interval=00:00:00:10 retry="5 5 300 5" timeout=1 - add: olcDbIndex olcDbIndex: entryUUID eq - add: olcDbIndex olcDbIndex: entryCSN eq - add: olcMirrorMode olcMirrorMode: TRUE
Po aktualizaci souboru odešlete konfiguraci na server LDAP.
ldapmodify -Y EXTERNAL -H ldapi:/// -f olcdatabasehdb.ldif
Výstup:
SASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 modifying entry "olcDatabase={2}hdb,cn=config"
Proveďte změny v souboru olcDatabase={1}monitor.ldif k omezení přístupu k monitoru pouze na kořenový adresář LDAP (ldapadm ) uživateli, nikoli ostatním.
# vi monitor.ldif dn: olcDatabase={1}monitor,cn=config changetype: modify replace: olcAccess olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external, cn=auth" read by dn.base="cn=ldapadm,dc=itzgeek,dc=local" read by * none
Po aktualizaci souboru odešlete konfiguraci na server LDAP.
ldapmodify -Y EXTERNAL -H ldapi:/// -f monitor.ldif
Přidejte schémata LDAP.
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif
Vygenerujte base.ldif soubor pro vaši doménu.
# vi base.ldiff dn: dc=itzgeek,dc=local dc: itzgeek objectClass: top objectClass: domain dn: cn=ldapadm ,dc=itzgeek,dc=local objectClass: organizationalRole cn: ldapadm description: LDAP Manager dn: ou=People,dc=itzgeek,dc=local objectClass: organizationalUnit ou: People dn: ou=Group,dc=itzgeek,dc=local objectClass: organizationalUnit ou: Group
Vytvořte adresářovou strukturu.
ldapadd -x -W -D "cn=ldapadm,dc=itzgeek,dc=local" -f base.ldif
Výstup:
Enter LDAP Password: adding new entry "dc=itzgeek,dc=local" adding new entry "cn=ldapadm ,dc=itzgeek,dc=local" adding new entry "ou=People,dc=itzgeek,dc=local" adding new entry "ou=Group,dc=itzgeek,dc=local"
Otestujte replikaci LDAP
Pojďme vytvořit uživatelský LDAP s názvem „ldaptest “ na kterémkoli z vašich hlavních serverů vytvořte soubor .ldif soubor na ldpsrv1.itzgeek.local (v mém případě).
[root@ldpsrv1 ~]# vi ldaptest.ldif
Aktualizujte výše uvedený soubor obsahem níže.
dn: uid=ldaptest,ou=People,dc=itzgeek,dc=local objectClass: top objectClass: account objectClass: posixAccount objectClass: shadowAccount cn: ldaptest uid: ldaptest uidNumber: 9988 gidNumber: 100 homeDirectory: /home/ldaptest loginShell: /bin/bash gecos: LDAP Replication Test User userPassword: {crypt}x shadowLastChange: 17058 shadowMin: 0 shadowMax: 99999 shadowWarning: 7
Přidejte uživatele na server LDAP pomocí ldapadd příkaz.
[root@ldpsrv1 ~]# ldapadd -x -W -D "cn=ldapadm,dc=itzgeek,dc=local" -f ldaptest.ldif
Výstup:
Enter LDAP Password: adding new entry "uid=ldaptest,ou=People,dc=itzgeek,dc=local"
Vyhledejte „ldaptest ” na jiném hlavním serveru (ldpsrv2.itzgeek.local ).
[root@ldpsrv2 ~]# ldapsearch -x cn=ldaptest -b dc=itzgeek,dc=local
Výstup:
# extended LDIF # # LDAPv3 # base <dc=itzgeek,dc=local> with scope subtree # filter: cn=ldaptest # requesting: ALL # # ldaptest, People, itzgeek.local dn: uid=ldaptest,ou=People,dc=itzgeek,dc=local objectClass: top objectClass: account objectClass: posixAccount objectClass: shadowAccount cn: ldaptest uid: ldaptest uidNumber: 9988 gidNumber: 100 homeDirectory: /home/ldaptest loginShell: /bin/bash gecos: LDAP Replication Test User userPassword:: e2NyeXB0fXg= shadowLastChange: 17058 shadowMin: 0 shadowMax: 99999 shadowWarning: 7 # search result search: 2 result: 0 Success # numResponses: 2 # numEntries: 1
Nyní nastavte heslo pro uživatele vytvořené na ldpsrv1.itzgeek.local přechodem na ldpsrv2.itzgeek.local . Pokud můžete nastavit heslo, znamená to, že replikace funguje podle očekávání.
[root@ldpsrv2 ~]# ldappasswd -s password123 -W -D "cn=ldapadm,dc=itzgeek,dc=local" -x "uid=ldaptest,ou=People,dc=itzgeek,dc=local"
Kde,
-s zadejte heslo pro uživatelské jméno
-x uživatelské jméno, pro které je změněno heslo
-D Rozlišovací název pro ověření na serveru LDAP.
V topologii replikace Master-Slave nemůžete nastavit heslo pro uživatele LDAP na podřízeném serveru.Doplňky
Nakonfigurujte klienta LDAP, aby se také vázal na nový hlavní server.
authconfig --enableldap --enableldapauth --ldapserver=ldpsrv1.itzgeek.local,ldpsrv2.itzgeek.local,ldpsrv3.itzgeek.local --ldapbasedn="dc=itzgeek,dc=local" --enablemkhomedir --update
To je vše.