Dans ce guide, nous allons configurer la réplication multi-maître du serveur OpenLDAP sur CentOS 7 / RHEL 7 . Cette configuration de réplication multi-maître vise à surmonter la limitation de la réplication maître-esclave typique où seul le serveur maître effectue les modifications dans le répertoire LDAP .
LIRE :Comment configurer la réplication maître-esclave OpenLDAP
Dans la réplication multi-maître, deux serveurs ou plus agissent en tant que maître et tous font autorité pour tout changement dans l'annuaire LDAP. Les requêtes des clients sont réparties sur les multiples serveurs à l'aide de la réplication.
Environnement
Pour la réplication multi-maître, nous allons utiliser trois OpenLDAP les serveurs. Les détails sont ci-dessous.
ldpsrv1.itzgeek.local (192.168.12.10) ldpsrv2.itzgeek.local (192.168.12.20) ldpsrv3.itzgeek.local (192.168.12.30)
Installer LDAP
Installez les packages LDAP sur tous vos serveurs.yum -y install openldap compat-openldap openldap-clients openldap-servers openldap-servers-sql openldap-devel
Démarrez le service LDAP et activez-le pour le démarrage automatique au démarrage du système.
systemctl start slapd.service systemctl enable slapd.service
Configurer la journalisation LDAP
Configurez syslog pour activer la journalisation LDAP.
echo "local4.* /var/log/ldap.log" >> /etc/rsyslog.conf systemctl restart rsyslog
Configurer la réplication multi-maître OpenLDAP
Copiez l'exemple de fichier de configuration de la base de données dans /var/lib/ldap répertoire et mettre à jour les autorisations de fichier. Vous devrez effectuer les étapes ci-dessous sur tous vos serveurs OpenLDAP, sauf indication contraire.
cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG chown ldap:ldap /var/lib/ldap/*
Nous allons activer le module syncprov.
vi syncprov_mod.ldif
Copiez et collez les lignes ci-dessous dans le syncprov_mod.ldif ci-dessus fichier.
dn: cn=module,cn=config objectClass: olcModuleList cn: module olcModulePath: /usr/lib64/openldap olcModuleLoad: syncprov.la
Envoyez maintenant la configuration au serveur LDAP.
ldapadd -Y EXTERNAL -H ldapi:/// -f syncprov_mod.ldif
Sortie :
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"
Activer la réplication de configuration
Changer l'olcServerID sur tous les serveurs . Par exemple, pour ldpsrv1, définissez olcServerID sur 1, pour ldpsrv2, définissez olcServerID sur 2 et pour ldpsrv3, définissez sur 3.
vi olcserverid.ldif
Copiez et collez le texte ci-dessous dans le fichier ci-dessus.
dn: cn=config changetype: modify add: olcServerID olcServerID: 1
Mettez à jour la configuration sur le serveur LDAP.
ldapmodify -Y EXTERNAL -H ldapi:/// -f olcserverid.ldif
Sortie :
SASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 modifying entry "cn=config"
Nous devons générer un mot de passe pour la réplication de la configuration LDAP.
slappasswd
Sortie :
New password: Re-enter new password: {SSHA}MAfw/QNizKx4NxueW7CpCSN6jeDB5Z+C
Vous devez générer un mot de passe sur chaque serveur en exécutant la commande slappasswd.
Définissez un mot de passe pour la base de données de configuration.
vi olcdatabase.ldif
Copiez et collez le texte ci-dessous dans le fichier ci-dessus. Vous devez mettre le mot de passe que vous avez généré à l'étape précédente sur ce fichier.
dn: olcDatabase={0}config,cn=config add: olcRootPW olcRootPW: {SSHA}MAfw/QNizKx4NxueW7CpCSN6jeDB5Z+C
Mettez à jour la configuration sur le serveur LDAP.
ldapmodify -Y EXTERNAL -H ldapi:/// -f olcdatabase.ldif
Sortie :
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"
Nous allons maintenant mettre en place la réplication de configuration sur tous les serveurs.
vi configrep.ldif
Copiez et collez le texte ci-dessous dans le fichier ci-dessus.
### 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
Envoyez maintenant la configuration au serveur LDAP.
ldapmodify -Y EXTERNAL -H ldapi:/// -f configrep.ldif
Sortie :
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"
Activer la réplication de la base de données
À ce stade, toutes vos configurations LDAP sont répliquées. Maintenant, nous allons activer la réplication des données réelles, c'est-à-dire la base de données utilisateur. Effectuez les étapes ci-dessous sur l'un des nœuds puisque les autres nœuds sont en réplication.
Nous aurions besoin d'activer syncprov pour la base de données hdb.
vi syncprov.ldif
Copiez et collez le texte ci-dessous dans le fichier ci-dessus.
dn: olcOverlay=syncprov,olcDatabase={2}hdb,cn=config changetype: add objectClass: olcOverlayConfig objectClass: olcSyncProvConfig olcOverlay: syncprov
Mettez à jour la configuration sur le serveur LDAP.
ldapmodify -Y EXTERNAL -H ldapi:/// -f syncprov.ldif
Sortie :
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"
Configurer la réplication pour la base de données hdb.
vi olcdatabasehdb.ldif
Copiez et collez le contenu ci-dessous dans le fichier ci-dessus. Vous pouvez obtenir une erreur pour olcSuffix, olcRootDN et olcRootPW si vous les avez déjà sur votre configuration. Supprimez les entrées, si elles ne sont pas nécessaires.
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
Une fois que vous avez mis à jour le fichier, envoyez la configuration au serveur LDAP.
ldapmodify -Y EXTERNAL -H ldapi:/// -f olcdatabasehdb.ldif
Sortie :
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"
Apportez des modifications à olcDatabase={1}monitor.ldif fichier pour restreindre l'accès du moniteur uniquement à la racine LDAP (ldapadm ) utilisateur, pas aux autres.
# 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
Une fois que vous avez mis à jour le fichier, envoyez la configuration au serveur LDAP.
ldapmodify -Y EXTERNAL -H ldapi:/// -f monitor.ldif
Ajoutez les schémas 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
Générer base.ldif fichier pour votre domaine.
# 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
Construisez la structure de répertoires.
ldapadd -x -W -D "cn=ldapadm,dc=itzgeek,dc=local" -f base.ldif
Sortie :
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"
Tester la réplication LDAP
Créons un utilisateur LDAP appelé "ldaptest " dans l'un de vos serveurs maîtres, pour ce faire, créez un .ldif fichier sur ldpsrv1.itzgeek.local (dans mon cas).
[root@ldpsrv1 ~]# vi ldaptest.ldif
Mettez à jour le fichier ci-dessus avec le contenu ci-dessous.
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
Ajouter un utilisateur au serveur LDAP à l'aide de ldapadd commande.
[root@ldpsrv1 ~]# ldapadd -x -W -D "cn=ldapadm,dc=itzgeek,dc=local" -f ldaptest.ldif
Sortie :
Enter LDAP Password: adding new entry "uid=ldaptest,ou=People,dc=itzgeek,dc=local"
Recherchez "ldaptest ” sur un autre serveur maître (ldpsrv2.itzgeek.local ).
[root@ldpsrv2 ~]# ldapsearch -x cn=ldaptest -b dc=itzgeek,dc=local
Sortie :
# 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
Maintenant, définissez un mot de passe pour l'utilisateur créé sur ldpsrv1.itzgeek.local en allant sur ldpsrv2.itzgeek.local . Si vous pouvez définir le mot de passe, cela signifie que la réplication fonctionne comme prévu.
[root@ldpsrv2 ~]# ldappasswd -s password123 -W -D "cn=ldapadm,dc=itzgeek,dc=local" -x "uid=ldaptest,ou=People,dc=itzgeek,dc=local"
Où,
-s spécifiez le mot de passe pour le nom d'utilisateur
-x nom d'utilisateur dont le mot de passe est modifié
-D Nom distinctif pour s'authentifier auprès du serveur LDAP.
Dans la topologie de réplication maître-esclave, vous ne pouvez pas définir le mot de passe de l'utilisateur LDAP sur le serveur esclave.Extras
Configurez également le client LDAP pour qu'il se lie au nouveau serveur maître.
authconfig --enableldap --enableldapauth --ldapserver=ldpsrv1.itzgeek.local,ldpsrv2.itzgeek.local,ldpsrv3.itzgeek.local --ldapbasedn="dc=itzgeek,dc=local" --enablemkhomedir --update
C'est tout.