Table des matières
Replication LDAP avec slurpd
La methode de replication via slurpd n'est pas la méthode conseillée : on constate de nombreux problemes de synchronisation, il vaut mieux utiliser syncrepl pour la réplication (bientot un article la dessus). Pourquoi cet article alors ? tout simplement que syncrepl ne marche pas avec OpenLDAP 2.3 qui est inclus dans la Debian Etch par exemple
Ebauche d'article : a compléter
Prérequis
- Le serveur esclave doit être physiquement sur une autre machine que le serveur maître. Il n’est pas possible de faire de la réplication d’une base LDAP sur le même serveur que la base principale - de toutes manières cela n’a aucun intérêt.
- Le type de backend utilisé doit être identique
- Les versions (au moins majeures ) d’OpenLdap doivent etre identiques sur le maitre et l'esclave. Il est conseillé d'avoir la même version
- Les serveurs maitre et esclave doivent être à la même l'heure
L'annuaire a répliquer est situé sur ldap-1.mondomaine.com, et la replication se fait sur ldap-2.mondomaine.com, la racine du LDAP a répliquer est “dc=local”
Préparatifs
- Créer un compte dédié a la réplication dans l'annuaire LDAP. Ce compte sera nommé “Replicator” . Il ne sera pas utilisé sur le maitre, mais aura les droits d'ecriture sur le LDAP au niveau de l'esclave car il servira à effectuer les mises a jour. Le mot de passe de ce compte sera en clair dans le fichier de configuration /etc/ldap/slapd.conf
Configuration du maitre
Il faut maintenant configurer les services slapd et slurpd sur le maître pour que celui ci agisse en tant que tel. Cette configuration se fait dans le fichier /etc/openldap/slapd.conf :
Les directives suivantes sont à ajouter :
- replogfile : fichier de réplication. C’est ce fichier qui est utilisé par slurpd pour la réplication.
- replica : directive de compte de réplication. Ces informations seront utilisées par le maître pour contacter et mettre à jour l’esclave :
- host : adresse IP et port ldap de l’esclave
- binddn = compte à utiliser pour mettre à jour l’esclave.
- bindmethod = methode de cryptage et mot de passe du compte de réplication (ici “simple”)
La directive replica comprend les arguments host, binddn et bindmethod. Si vous passez une ligne entre les arguments assurez vous qu’il y ai au moins un espace en début de ligne comme dans l'exemple ci dessous.
Il faut donc ajouter dans le fichier slapd.conf :
# Replication configuration (this computer is a slurpd master ) replogfile /var/lib/ldap/replog replica host=ldap-2.mondomaine.com:389 binddn="cn=Replicator,dc=local" bindmethod=simple credentials="MotDePasseEnClair"
Il faut ensuite redémarrer le service pour prendre en compte ces modifications :
/etc/init.d/slapd restart
On va en profiter pour faire un dump du LDAP qui servira plus tard :
/etc/init.d/slapd stop ; slapcat -l /root/maitre.ldif ; /etc/init.d/slapd start
Configuration de l'esclave
- installer le serveur LDAP sur le futur esclave :
apt-get install slapd
- stopper le serveur LDAP :
/etc/init.d/slapd stop
- copier les fichiers du maitre sur l'esclave (fichier slapd.conf, ainsi que les schémas additionnels de /etc/ldap/schema/ au besoin : le maitre comme l'esclave doivent utiliser les meme schémas) : (depuis l'esclave )
mv /etc/ldap /etc/ldap.orig scp -r ldap-1.mondomaine.com:/etc/ldap /etc/ scp ldap-1.mondomaine.com:/root/maitre.ldif /root/
- editer le fichier /etc/ldap/slapd.conf pour y commenter les lignes de réplication ajoutées précédemment sur le maitre
- ajouter
#Replication configuration (this computer is a slurpd slave ) updatedn "cn=Replicator,dc=local" updateref "ldap://ldap-1.mondomaine.com"
- Modifier les directives ACL pour donner les droits au compte Replicator de modifier l’esclave, ce qui donne par exemple :
access to * by dn="cn=Replicator,dc=local" write by dn="cn=admin,dc=local" write by * read
- Importer la base sur l’esclave :
slapadd -l /root/maitre.ldif
- Vérifier les droits d“écriture et de lecture dans le répertoire /var/lib/ldap qui doivent être positionnés pour l'utilisateur avec lequel tourne le service slapd (openldap:openldap sous debian) :
chown -R openldap:openldap /var/lib/ldap/
- démarrer le serveur esclave :
/etc/init.d/slapd start