OpenLDAP Multi Master replicatie, hoe te doen?

OpenLDAP Multi Master replicatie, hoe te doen?

OPENLDAP MULTI-MASTER REPLICATIE CONFIGURATIE



Voordat we beginnen met ons artikel, laten we een paar vereisten bespreken.
  • Ten minste 2 virtuele machines met openLDAP geïnstalleerd. In dit 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 (*Simpele Index Toegang Protocol*) is een applicatielaagprotocol dat wordt gebruikt voor het opvragen en wijzigen van indexdiensten die over TCP/IP werken.

Dit protocol wordt gebruikt door indexservers zoals OpenLDAP, Sun Directory Server, Microsoft Active Directory. Voor beginners 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.

LDAP-protocol is een message-oriented (bericht-gebaseerd) protocol. Dit betekent dat de cliënt een LDAP-bericht met een verzoek maakt en het bericht naar de server verzendt. De server verwerkt dit verzoek en stuurt het resultaat als een of meerdere LDAP-berichten terug naar de cliënt.

Doordat LDAP een berichtgebaseerd protocol is, kan de cliënt in één keer meerdere verzoeken doen. Bijvoorbeeld, een cliënt kan gelijktijdig twee zoekopdrachten uitvoeren. De mogelijkheid om meerdere verzoeken tegelijkertijd te kunnen doen, maakt het LDAP-protocol flexibeler en efficiënter dan protocollen zoals HTTP die dit niet toelaten.


Wat is OpenLDAP?


OpenLDAP is een implementatie van LDAP ontwikkeld door het OpenLDAP-project. OpenLDAP gebruikt een BSD-achtig licentie, bekend als de Open Source License. Het is een platform-onafhankelijk protocol. Veel gebruikelijke Linux-distributies bevatten de OpenLDAP-software voor LDAP-ondersteuning.


Wat is NTP?


NTP is een tijdsynchronisatiesysteem met redundantiecapaciteit. Het meet vertragingen van de algoritmen in het netwerk en op de doelmachine. Met deze technieken kan het de klokken tot op de milliseconde synchroniseren. De NTP-instellingen worden gedaan via het bestand /etc/ntp.conf of /etc/xntp.conf, afhankelijk van de gebruikte distributie.

In de meeste basis-configuraties staan er twee servernamen in het ntp.conf-bestand. Eén is de naam van de server waarvan de tijd moet worden ingesteld en de ander is een fictief IP-adres.
Het fictieve IP-adres wordt gebruikt in geval van netwerkproblemen of als de NTP-server offline of gecrasht is. Zodra de NTP-applicatie in het systeem weer online komt, zal het de systeemklok opnieuw instellen aan de hand van deze server. Het eerste van deze twee servers fungeert als de primaire server, terwijl het tweede als reserve dient. Ook moet de locatie van dit doelbestand worden aangegeven. Naarmate de tijd verstrijkt, zal de NTP de foutpercentage in de systeemtijd "leren" en zichzelf hierop aanpassen.



Nu kunnen we beginnen met de configuratie. Laten we beginnen met het installeren van openLDAP.

apt -y install slapd ldap-utils

1. We beginnen eerst met de configuratie van de NTP-server. De NTP-servers op alle machines die we gebruiken moeten dezelfde configuratie hebben en gesynchroniseerd zijn, anders zal de replicatie niet plaatsvinden.
apt -y install ntp
Nu zullen we de NTP-servers die we hebben geïnstalleerd configureren, zodat ze met elkaar gesynchroniseerd zijn. In dit artikel zullen we de NTP-servers in Azië gebruiken.
nano /etc/ntp.conf
server 0.asia.pool.ntp.org iburst
server 1.asia.pool.ntp.org iburst
server 2.asia.pool.ntp.org iburst
server 3.asia.pool.ntp.org iburst
Nadat je het conf-bestand hebt bewerkt, sla je het op en herstart je de NTP-service.
/etc/init.d/ntp restart
2. De servers moeten elkaar herkennen

Alle servers die we gebruiken moeten elkaar herkennen en zonder problemen communiceren. Als het beschikbaar is, kun je lokale DNS gebruiken. In ons voorbeeld configureren we het hosts-bestand omdat we geen DNS hebben.
nano /etc/hosts
10.0.0.1 ldap1.master.com ldap1
10.0.0.2 ldap2.master.com ldap2
Het is belangrijk dat alle configuraties die we maken, volledig moeten worden uitgevoerd op alle servers VERGEET DIT NIET .
Nu kun je proberen te pinggen.

3. We moeten de standaardconfiguratie van slapd aanpassen.

In het /etc/default/slapd-bestand moeten er invoeringen zijn die overeenkomen met de hostnamen van de servers. Als je deze stap overslaat, is de kans groot dat je de foutmelding 'read_config serverID/URL match found' zult krijgen.
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 je ten zeerste aan om voor elke stap een nieuw ldif-bestand te openen. Dit zal je veel helpen voor de werkbaarheid en om te zien wat je doet en wat je niet 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.ldif
We voegen onze configuraties toe aan de server met ldapmodify. Vergeet niet dat je dezelfde acties op alle servers moet uitvoeren.

Nu moeten we de databaseconfiguratie voor replicatie op alle servers aanpassen. Verander de olcServerID-waarde voor elke server afzonderlijk. Voor de eerste server bijvoorbeeld 1, voor de tweede server 2.
nano olcserverID.ldif
dn: cn=config
changeType: modify
add: olcServerID
olcServerID: 1
Na deze stap moet je, als je dit nog niet hebt gedaan, een wachtwoord instellen. Je kunt dit doen met de slappasswd-opdracht.
ldappasswd
New password:
Re-enter new password:
{SSHA}Sg545Nmjhedxfdd5895fMRD6d4RcLkslkeD8
Het is heel belangrijk dat je deze stap op alle servers uitvoert. Zelfs als je hetzelfde wachtwoord kiest, maak absoluut niet een kopie van de sleutel, voer het op elke server afzonderlijk uit. Voeg nu je wachtwoord toe aan de configuratie.
dn: cn=config
changeType: modify
dn: olcDatabase={0}config,cn=config
add: olcRootPW
olcRootPW: {SSHA}Sg545Nmjhedxfdd5895fMRD6d4RcLkslkeD8

Als je alles correct hebt gedaan, zou je met ldapmodify verbinding moeten kunnen maken met de database. Als je het wachtwoord verkeerd invoert, krijg je een foutmelding. Als je het correct invoert en alles werkt, zal er niets gebeuren.


Nu zullen we de replicatieconfiguratie voor alle servers toevoegen. We zullen deze actie uitvoeren 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 toevoegen op alle servers.

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 om de SyncRepl-configuratie tussen de servers toe te voegen.

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=*Your Password* 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=*Your Password* 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 je de configuratie volledig en correct hebt uitgevoerd, kun je de verbinding tussen de servers testen met het netstat-commando. Als het netstat-commando niet werkt, moet je de net-tools-service installeren.

apt -y install net-tools
Daarna
netstat -a | egrep ":ldap"
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
Als je een uitvoer zoals hierboven ontvangt, betekent dit dat er een verbinding is.


OPMERKING: deze actie bewijst niet dat de replicatie werkt, het toont alleen aan dat de servers met elkaar communiceren.

Nu is het tijd om te testen of de replicatie functioneert. Dit kunnen we doen door een fictieve olcServerID aan de configuratie toe te voegen. We zullen de fictieve configuratie die we aan het eerste apparaat hebben toegevoegd controleren op de tweede server. We kunnen dit gemakkelijk leren met de slapcat-opdracht. Maak het volgende ldif-bestand aan op ldap1 en we werken de configuratie bij.

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 werkt, zullen we het fictieve adres op de tweede server zien. Voer de volgende opdracht uit op ldap2 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, betekent dit dat je cn=config-configuratie compleet is. We kunnen verder gaan met de volgende stap, de configuratie van de andere databases.


5. Replicatie van andere databases

Aangezien we in de vorige stap serverreplicatie hebben uitgevoerd, zijn de volgende stappen op slechts één server voldoende om deze bij de anderen bij te werken. Nu zullen we, zoals eerder, de syncprov-module toevoegen voor onze MDB-database.

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=*Your Password* 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=*Your Password* 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 configureren we de index 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 al deze stappen correct zijn uitgevoerd, zou je masterreplicatie actief moeten zijn op beide servers. Om te testen of de replicatie van de MDB-database correct werkt, laten we een ldif-bestand openen en een toevoeging maken om het op onze andere server te 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 de slapcat opdracht uitvoeren. Als we de nieuw toegevoegde groep en People-waarden zien, betekent dit dat de replicatie is voltooid en actief werkt.

Op zoek naar auteurs en journalisten!

Op zoek naar auteurs en journalisten!

Als je een journalist bent die graag diep in onderwerpen duikt die betrekking hebben op bedrijven en sectoren, willen we graag met je samenwerken!

Fatih Çevik

PlusClouds Enthousiast
Sales

Productinformatie

#
Auto Quill
AutoQuill schrijft en plaatst affiliate marketinginhoud voor jou.

Gemakkelijkste Geld Dat Je Ooit Zult Verdienen

Met de AutoQuill-tool die PlusClouds is gaan aanbieden aan zijn affiliate partners, kunnen contentmakers met een enkele klik verkopen. Laat ons u laten zien hoe u uw aandeel in deze revolutie kunt krijgen.