OPENLDAP MULTI-MASTER REPLICATIECONFIGURATIE
Voordat we beginnen met ons artikel, laten we een paar vereisten bespreken.
- Minimaal 2 virtuele machines met openLDAP geïnstalleerd. In ons artikel zullen we Debian 10 gebruiken. Het wordt sterk aanbevolen om dezelfde distributies te gebruiken.
- Alle virtuele machines die we gaan gebruiken moeten een geïnstalleerde en gesynchroniseerde NTP-server hebben.
Wat is LDAP?
Lightweight Directory Access Protocol of kortweg LDAP (* Simpel Index Toegang Protocol *) is een applicatielaagprotocol dat wordt gebruikt om indexservices te query'en en te wijzigen via TCP/IP.
Dit protocol wordt gebruikt door indexservers zoals OpenLDAP, Sun Directory Server en Microsoft Active Directory. Voor de start kunnen we zeggen dat het een database-achtige structuur heeft, maar het belangrijkste verschil met een database is dat het geen hiërarchische structuur heeft.Het LDAP-protocol is een berichtgebaseerd protocol. Dit betekent het volgende: de cliënt maakt een LDAP-bericht aan dat een verzoek bevat en stuurt het bericht naar de server. De server verwerkt dit verzoek en stuurt het resultaat terug naar de cliënt als een of meerdere LDAP-berichten.
Omdat LDAP een berichtgebaseerd protocol is, kan de cliënt meerdere verzoeken tegelijk doen. Bijvoorbeeld, een cliënt kan tegelijkertijd twee zoekopdrachten uitvoeren. Het kunnen uitvoeren van meerdere verzoeken tegelijk maakt het LDAP-protocol flexibeler en efficiënter in vergelijking met protocollen zoals HTTP die dat niet toestaan.
Wat is OpenLDAP?
OpenLDAP is een applicatie van LDAP ontwikkeld door het OpenLDAP-project. OpenLDAP gebruikt een licentie die bekendstaat als de BSD-gedistribueerde publieke licentie. Het is een platformonafhankelijk protocol. Veel gebruikte Linux-distributies bevatten de OpenLDAP-software voor LDAP-ondersteuning.
Wat is NTP?
NTP is een sequentieel tijdverdelingssysteem met een overschotcapaciteit. Het meet de algoritmen en vertragingen in het netwerk en op de doelsystemen. Met deze technieken kan het klokken tot op de milliseconde synchroniseren. NTP-instellingen worden gedaan via het bestand /etc/ntp.conf of /etc/xntp.conf, afhankelijk van de gebruikte distributie.
In de meeste basis-geconfigureerde ntp.conf-bestanden zijn er twee servernamen aanwezig. Eén is de naam van de server waarvoor de tijdsynchronisatie moet worden ingesteld en de ander is een fictief IP-adres.
Dit fictieve IP-adres wordt gebruikt in het geval van netwerkproblemen of als de NTP-server uitgeschakeld is of is gecrasht. De NTP-toepassing op het systeem zal de systeemklok opnieuw instellen zodra de externe NTP-server weer beschikbaar is. De eerste van deze twee servers functioneert als de primaire server en de tweede is voor back-updoeleinden. Daarnaast moet ook de locatie van dit doeldocument worden opgegeven. NTP leert na verloop van tijd de foutpercentages in de systeemtijd "kennis te nemen" en zal zichzelf dienovereenkomstig aanpassen.
Nu kunnen we beginnen met de configuratie. Laten we beginnen met de installatie van OpenLDAP.
apt -y install slapd ldap-utils
1. We beginnen eerst met de NTP-serverconfiguratie. Alle NTP-servers op alle machines die we gebruiken moeten dezelfde configuratie hebben en gesynchroniseerd zijn, anders werkt de replicatie niet.
apt -y install ntpNu gaan we de NTP-servers die we hebben geconfigureerd configureren om met elkaar te synchroniseren. In ons artikel zullen we de Aziatische NTP-servers gebruiken.
nano /etc/ntp.conf
server 0.asia.pool.ntp.org iburstNadat we het conf-bestand hebben bewerkt, slaan we het op en herstarten we de NTP-service.
server 1.asia.pool.ntp.org iburst
server 2.asia.pool.ntp.org iburst
server 3.asia.pool.ntp.org iburst
/etc/init.d/ntp restart
2. Alle servers moeten elkaar herkennen
De servers die we gebruiken moeten elkaar herkennen en probleemloos kunnen communiceren. Als het beschikbaar is, kunt u lokale DNS gebruiken. In ons voorbeeld zullen we de hosts-bestand configureren omdat we geen DNS bezitten.
nano /etc/hosts
10.0.0.1 ldap1.master.com ldap1Vergeet niet dat alle configuraties die we gaan uitvoeren volledig op alle servers moeten worden uitgevoerd. ONTHOUD dit.
10.0.0.2 ldap2.master.com ldap2
Nu kunt u een ping-test doen.
3. We moeten de standaardconfiguratie van slapd aanpassen.
In het bestand /etc/default/slapd moeten er vermeldingen zijn die overeenkomen met de hostnamen van de servers. Als u deze stap overslaat, is de kans groot dat u de foutmelding read_config serverID/URL match found krijgt.
nano /etc/default/slapd
SLAPD_SERVICES="ldapi:/// ldap://ldap1.master.com"
nano /etc/default/slapd
SLAPD_SERVICES="ldapi:/// ldap://ldap2.master.com"
4. Configuratie van cn=config replicatie
Ik raad ten zeerste aan om bij elke stap een nieuw ldif-bestand te openen. Dit zal u veel helpen voor uw werkcomfort en om te zien wat u doet. We beginnen met het laden van de syncprov-module.
*nano syncprov.ldif*
dn: cn=module{0},cn=config
changetype: modify
add: olcModuleLoad
olcModuleLoad: syncprov
ldapmodify -Y EXTERNAL -H ldapi:/// -f syncprov.ldifWe voegen onze configuraties toe aan onze server met ldapmodify. Vergeet niet dat u dezelfde handelingen op alle servers moet uitvoeren.
Nu moeten we de databaseconfiguratie voor replicatie op alle servers instellen. Wijzig de olcServerID-waarde afzonderlijk voor elke server. Voor de eerste server bijvoorbeeld 1, voor de tweede server 2.
nano olcserverID.ldif
dn: cn=configNa deze stap moet u een wachtwoord instellen als u dat nog niet heeft gedaan. U kunt dit doen met het commando slappasswd.
changeType: modify
add: olcServerID
olcServerID: 1
ldappasswdHet is erg belangrijk dat u deze stap op alle servers uitvoert. Zelfs als u hetzelfde wachtwoord kiest, maak alsjeblieft geen kopie van de sleutels, voer het afzonderlijk op elke server uit. Voeg nu uw wachtwoord toe aan de configuratie.
New password:
Re-enter new password:
{SSHA}Sg545Nmjhedxfdd5895fMRD6d4RcLkslkeD8
dn: cn=config
changeType: modify
dn: olcDatabase={0}config,cn=config
add: olcRootPW
olcRootPW: {SSHA}Sg545Nmjhedxfdd5895fMRD6d4RcLkslkeD8
Als u alles correct heeft gedaan, kunt u verbinding maken met de database met ldapmodify. Als u het wachtwoord verkeerd invoert, ontvangt u een foutmelding. Als u het correct invoert en het werkt, zal er niets gebeuren.
Nu gaan we de replicatieconfiguratie voor alle servers toevoegen. We zullen dit doen met de eerder gedefinieerde olcServerID-waarden.
nano olc.ldif
dn: cn=config
changetype: modify
replace: olcServerID
olcServerID: 1 ldap://ldap1.master.com
olcServerID: 2 ldap://ldap2.master.com
ldapmodify -Y EXTERNAL -H ldapi:/// -f olc.ldif
Nu zullen we de syncprov-configuratie aan alle servers toevoegen.
nano syncprovconf.ldif
dn: olcOverlay=syncprov,olcDatabase={0}config,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov
ldapmodify -Y EXTERNAL -H ldapi:/// -f syncprovconf.ldif
De laatste stap is het toevoegen van de SyncRepl-configuratie tussen de servers.
nano syncrepl.ldif
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcSyncRepl
olcSyncRepl: rid=001 provider=ldap://ldap1.master.com binddn="cn=admin,cn=config" bindmethod=simple credentials=*Uw Wachtwoord* searchbase="cn=config" type=refreshAndPersist retry="5 5 300 5" timeout=1
olcSyncRepl: rid=002 provider=ldap://ldap2.master.com binddn="cn=admin,cn=config" bindmethod=simple credentials=*Uw Wachtwoord* searchbase="cn=config" type=refreshAndPersist retry="5 5 300 5" timeout=1
-
add: olcMirrorMode
olcMirrorMode: TRUE
ldapmodify -Y EXTERNAL -H ldapi:/// -f syncrepl.ldif
Als u de configuratie volledig en correct hebt gedaan, kunt u met het commando netstat de verbinding tussen de servers testen. Als het netstat-commando niet werkt, moet u de net-tools-service installeren.
apt -y install net-toolsdaarna
netstat -a | egrep ":ldap"U zou een uitvoer zoals bovenstaande moeten krijgen als er verbinding is.
tcp 0 0 0.0.0.0:ldap 0.0.0.0:* LISTEN
tcp 0 0 ldap.master.com:57116 ldap1.master.com:ldap ESTABLISHED
tcp 0 0 ldap.master.com:ldap ldap1.master.com:35382 ESTABLISHED
tcp 0 0 ldap.master.com:57120 ldap1.master.com:ldap ESTABLISHED
tcp 0 0 ldap.master.com:ldap ldap1.master.com:35388 ESTABLISHED
tcp6 0 0 [::]:ldap [::]:* LISTEN
OPMERKING: deze handeling bewijst niet dat replicatie werkt, het toont alleen aan dat de servers met elkaar communiceren.
nano fake.ldif
dn: cn=config
changetype: modify
replace: olcServerID
olcServerID: 1 ldap://ldap1.master.com
olcServerID: 2 ldap://ldap2.master.com
olcServerID: 3 ldap://fake.ldap.com
ldapmofiy -Y EXTERNAL -H ldapi:/// -f fake.ldif
Als de replicatie goed werkt, zullen we het fictieve adres op de tweede server zien. Voer het volgende commando uit op de ldap2-server en bekijk de uitvoer.
slapcat -b "cn=config" > dump
cat dump | egrep "olcServerID"
olcServerID: 1 ldap://ldap1.master.com
olcServerID: 2 ldap://ldap2.master.com
olcServerID: 3 ldap://fake.ldap.com
Als we het fictieve adres zien, is de cn=config-configuratie voltooid. We kunnen verder gaan naar de volgende stap, de configuratie van de andere databases.
5. Replicatie van andere databases
Aangezien we in de vorige stap de serverreplicatie hebben uitgevoerd, zijn de volgende stappen op één server voldoende om deze bij de andere te laten bijwerken. Laten we nu, zoals eerder, de syncprov-module voor onze MDB-database toevoegen.
nano mdb.ldif
dn: olcOverlay=syncprov,olcDatabase={1}mdb,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov
ldapmodify -Y EXTERNAL -H ldapi:/// -f mdb.ldif
Nu voegen we de syncrepl-configuratie toe.
nano syncrepl.ldif
dn: olcDatabase={1}mdb,cn=config
changetype: modify
add: olcSyncRepl
olcSyncRepl: rid=003 provider=ldap://ldap1.master.com binddn="cn=admin,dc=master,dc=com" bindmethod=simple credentials=*Uw Wachtwoord* searchbase="dc=master,dc=com" type=refreshAndPersist interval=00:00:00:10 retry="5 5 300 5" timeout=1
olcSyncRepl: rid=004 provider=ldap://ldap2.master.com binddn="cn=admin,dc=master,dc=com" bindmethod=simple credentials=*Uw Wachtwoord* searchbase="dc=master,dc=com" type=refreshAndPersist interval=00:00:00:10 retry="5 5 300 5" timeout=1
ldapmodify -Y EXTERNAL -H ldapi:/// -f syncrepl.ldif
Nu maken we de indexconfiguratie voor MDB.
nano indexmdb.ldif
dn: olcDatabase={1}mdb,cn=config
changetype: modify
add: olcDbIndex
olcDbIndex: entryCSN eq
olcDbIndex: entryUUID eq
ldapmodify -Y EXTERNAL -H ldapi:/// -f indexmdb.ldif
Als alle stappen tot hier toe correct zijn uitgevoerd, is uw masterreplicatie actief op beide servers. Om te testen of de replicatie van de MDB-database correct werkt, laten we een ldif-bestand openen, een invoer toevoegen en het op onze andere server controleren.
nano base.ldif
dn: ou=People, dc=master, dc=com
objectClass: organizationalUnit
ou: People
dn: ou=Group,dc=master,dc=com
objectClass: organizationalUnit
ou: Group
ldapadd -x -W -D "cn=admin,dc=master,dc=com" -f base.ldif
Laten we nu naar onze ldap2-server gaan en het slapcat commando uitvoeren. Als we de nieuwe groep en People waarden zien, is de replicatie voltooid en functioneert deze actief.




