Accueil
Rechercher:
sur developpez.com sur les forums
Forums | Tutoriels | F.A.Q's | Participez | Hébergement | Contacts
Accueil Conception Java DotNET Visual Basic  C  C++ Delphi MS-Office SQL & SGBD Oracle  4D  Business Intelligence
Club Emploi Blogs   TV   Dév. Web PHP XML Python Autres 2D-3D-Jeux Sécurité Windows Linux PC Mac
ACCUEIL BSD FORUM BSD TUTORIELS BSD LIVRES BSD SYSTEMES BSD BSD TV UNIX

Mise en place d'un réplicat LDAP

Date de publication : 08/08/2006 , Date de mise à jour : 12/10/2006

Par julp (Autres articles)
 

La réplication offre la possibilité d'avoir une sauvegarde en temps réel des données de l'annuaire et de pouvoir alléger le trafic en lecture.

Après avoir installé et configuré vos annuaires LDAP, ce tutorial vous aidera à mettre en place la réplication étape par étape.


Introduction
1. Création d'un utilisateur pour la réplication
2. Configuration de l'annuaire maître
3. Configuration de l'annuaire esclave
4. Démarrage des différents services
4.1. Préparation du démarrage automatique
4.2. Copie de la base sur l'annuaire esclave
4.3. Démarrage des annuaires et service de réplication
5. Problèmes connus
5.1. Plantage de slapd
5.2. La réplication ne fonctionne plus


Introduction

Le système de réplication dans son fonctionnement et sa fonction est similaire à ceux qui équipent les bases de données, les serveurs de noms (DNS), ... La réplication de l'annuaire permet :
  • la création d'une copie en temps réel de l'annuaire sur une(des) autre(s) machine(s). En effet, lorsqu'un nouvel objet est créé ou bien lors d'une modification d'un objet (cela inclue la suppression) sur l'annuaire maître, il fait suivre cette requête à(aux) annuaire(s) esclave(s).
  • d'alléger le trafic à destination du serveur maître en utilisant le ou les serveurs esclaves pour toutes les requêtes de lecture (recherche). En effet, toute demande de modification d'un objet vous sera rejetée par les annuaires esclaves, seul l'annuaire maître sera capable de l'effectuer.
warning N'oubliez pas d'adapter les DN à votre configuration.

1. Création d'un utilisateur pour la réplication

Il est recommandé de créer un utilisateur LDAP spécifique (classe d'objet person ou fille par héritage) pour la réplication. Celui-ci ne sera ainsi utilisé que par l'annuaire maître pour accéder à un annuaire esclave. Vous pouvez, par ailleurs, choisir un utilisateur différent par annuaire esclave. Voici à titre d'exemple, notre utilisateur au format LDIF :
dn: cn=replication,ou=Systeme,dc=mon_domaine,dc=fr
objectClass: top
objectClass: person
cn: replication
# sn est obligatoire
sn: replication
userPassword: {MD5}8p+r5jekcr9SIrEqC8Xfdw==
# mot de passe : 'replication' obtenu grâce avec la commande : slappasswd -h '{MD5}'
L'ajout à l'annuaire maître se fait avec la commande suivante :
ldapadd -H ldap://<adresse ou nom de la machine maître> -D "cn=manager,dc=mon_domaine,dc=fr" -W -x -f <le fichier LDIF ci-dessus>

2. Configuration de l'annuaire maître

Il faut apporter quelques modifications à la configuration de l'annuaire maître afin de faire fonctionner la réplication. En effet, l'utilisateur associé à la réplication doit avoir accès en lecture aux objets de l'annuaire (éventuellement partielle) et il faut également lui indiquer le serveur LDAP accueillant la réplication pour qu'il puisse communiquer avec ce dernier. Par conséquent, voici les modifications et/ou ajouts à apporter à votre fichier /usr/local/etc/openldap/slapd.conf :
# ...

# ACL : donner accès en lecture à l'annuaire entier à l'utilisateur LDAP assurant la réplication
access to *
        by dn="cn=manager,dc=mon_domaine,dc=fr" write
        by dn="cn=replication,ou=Systeme,dc=mon_domaine,dc=fr" read
        by users read

# ...

# Réplication
# Comment contacter l'annuaire esclave ?
replica
    uri=ldap://<adresse ou nom de l'annuaire esclave>
    binddn="cn=replication,ou=Systeme,dc=domain,dc=net"
    bindmethod=simple credentials=<le mot de passe associé à ce compte en clair>
# Journal
replogfile /var/db/openldap-slurp/replica/replog

# ...

3. Configuration de l'annuaire esclave

Dans le cas de l'annuaire esclave, il faut aussi apporter quelques modifications où à l'inverse d'un annuaire maître, il faut autoriser l'utilisateur de réplication à écrire et lui indiquer qui est son serveur LDAP maître. Voici les modifications et/ou ajouts à apporter à votre fichier /usr/local/etc/openldap/slapd.conf :
# ...

# ACL : donner accès en écriture à l'annuaire entier à l'utilisateur assurant la réplication
access to *
        by dn="cn=manager,dc=mon_domaine,dc=fr" write
        by dn="cn=replication,ou=Systeme,dc=mon_domaine,dc=fr" write
        by users read

# ...

# Réplication
# DN de l'utilisateur de réplication
updatedn        "cn=replication,ou=Systeme,dc=mon_domaine,dc=fr"
# Comment joindre l'annuaire maître ?
updateref       "ldap://<adresse ou nom de l'annuaire maître>"

# ...

4. Démarrage des différents services


4.1. Préparation du démarrage automatique

Votre fichier /etc/rc.conf de votre annuaire maître doit contenir :
# LDAP
slapd_enable="YES"
slapd_flags="-h ldap:///"
# Réplication
slurpd_enable="YES"
Et quant à l'annuaire esclave accueillant la réplique :
# LDAP
slapd_enable="YES"
slapd_flags="-h ldap:///"
Vous avez sans doute remarqué la présence de slurpd seulement sur l'annuaire maître, en effet, c'est ce programme qui se charge de renvoyer les requêtes vers les annuaires esclaves ainsi que du journal qui garde sous forme LDIF les modifications (à exploiter lorsque la réplication n'a pas fonctionné).


4.2. Copie de la base sur l'annuaire esclave

Copiez l'ensemble des fichiers de la base LDAP de l'annuaire maître situés dans /var/db/openldap-data sur l'annuaire esclave via SFTP inclus à SSH par exemple.

Assurez vous, sur l'annuaire maître, que l'utilisateur et groupe propriétaire du répertoire /var/db/openldap-slurp et de son contenu est bien ldap. Si ce n'est pas le cas, réglez le problème avec cette commande :
chown -R ldap:ldap /var/db/openldap-slurp

4.3. Démarrage des annuaires et service de réplication

Démarrer enfin les services dans cet ordre :
  1. slapd maître + slurpd : /usr/local/etc/rc.d/slapd.sh start && /usr/local/etc/rc.d/slurpd.sh start
  2. slapd esclave : /usr/local/etc/rc.d/slapd.sh start

5. Problèmes connus


5.1. Plantage de slapd

Comment savoir que slapd est planté ? Tout d'abord l'annuaire dans ce cas ne répond pas à nos différentes requêtes, ce qui attire notre attention puis en ayant recours à la commande ps vous verrez que le processus slapd utilise anormalement votre CPU. Les kill et autres redémarrages n'auront ici aucun effet. Pour y remédier, utilisez une de ces solutions :
  • Copier la base de l'annuaire primaire sur l'esclave (via sftp lancé par ssh par exemple)
  • Utiliser la commande de réparation db_recover-X.Y -h /var/db/openldap-data après avoir fait une sauvegarde de la base (X.Y représente la version de db).

5.2. La réplication ne fonctionne plus

En cas de disfonctionnement de la réplication (notamment après la mise à jour d'OpenLDAP), assurez-vous que l'utilisateur ldap est bien propriétaire du répertoire /var/db/openldap-slurp ainsi que de son contenu. Si ce n'est pas le cas utilisez la commande :
chown -R ldap:ldap /var/db/openldap-slurp


Valid XHTML 1.1!Valid CSS!

Copyright © 2006 julp. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. Cette page est déposée à la SACD.

Responsables bénévoles de la rubrique BSD : julp et Olivier Régnier - Contacter par EMail :
Vos questions techniques : forum d'entraide BSD - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Copyright © 2000-2008 www.developpez.com - Legal informations.