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 ntpNu 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 iburstNadat je het conf-bestand hebt bewerkt, sla je het op en herstart je 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. 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 ldap1Het is belangrijk dat alle configuraties die we maken, volledig moeten worden uitgevoerd op alle servers VERGEET DIT NIET .
10.0.0.2 ldap2.master.com ldap2
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.ldifWe 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=configNa deze stap moet je, als je dit nog niet hebt gedaan, een wachtwoord instellen. Je kunt dit doen met de slappasswd-opdracht.
changeType: modify
add: olcServerID
olcServerID: 1
ldappasswdHet 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.
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 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-toolsDaarna
netstat -a | egrep ":ldap"Als je een uitvoer zoals hierboven ontvangt, betekent dit dat er een 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 actie bewijst niet dat de 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 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.