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

notez ici que le service slurpd demarre aussi a cuase des changements que nous avons fait dans la configuration

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

Il est nécessaire de stopper le maître à ce moment pour éviter des problèmes d’intégrité de la base.

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"

la directive updateref n'est pas nécessaire, mais sert a pouvoir effectuer des modifications sur l'esclave : une modification effectuée sur l'esclave va etre “forwardée” sur le maitre pour etre appliquée

  • 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
sysadmin/ldap_slurpd.txt · Dernière modification: 2010/05/26 17:47 par james
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0