OpenLDAP – Configuration SLAPD en réplication

Introduction

Ce document va expliquer comment configurer OpenLDAP pour avoir une réplication d’arbre LDAP entre 2 serveurs.

Pour cela, nous allons utiliser slapd et slurpd de la suite OpenLDAP.

Cela s’applique aussi bien à une distribution Linux, testé sur Debian Sarge, que sur FreeBSD, testé en 6.1.

 

Prérequis

Il sera nécessaire d’avoir configuré les daemons slapd sur les deux serveurs. Pour cela, vous pouvez suivre le document suivant: Configuration SLAPD standard.

 

Le serveur maître

Sur le serveur maître, nous allons créer un utilisateur dédié à la réplication qui n’aura que les droits en lecture mais qui pourra lire tout l’arbre.

Pour cela, on modifie le fichier slapd.conf pour ajouter la ligne de l’utilisateur « cn=replication,o=free-4ever,dc=net »:

## Acces Lists
# Admin can change all, watcher and all authentified users can read all
access to *     by dn.regex="cn=manager,o=free-4ever,dc=net" write
                by dn.regex="cn=watcher,o=free-4ever,dc=net" read
                by dn.regex="cn=replication,o=free-4ever,dc=net" read
                by * auth

Son fichier LDIF sera de la forme:

# replication, free-4ever, net
dn: cn=replication,o=free-4ever,dc=net
objectClass: top
objectClass: person
userPassword: {SSHA}hSixML09eyZsQncyqSebQq5tFpXgXT63
cn: replication
sn: LDAP replication user

Pour l’ajouter à notre arbre, vous pouvez vous reporter au document suivant: Utilisation des outils client.

Une fois cela fait, il faut encore expliquer au serveur maître qui sont les serveurs esclaves et comment les mettre à jour.

Pour cela nous allons ajouter quelques directives dans le le fichier de configuration slapd.conf:

# Réplication
# Comment joindre le serveur esclave
replica
    # L'url pour le serveur esclave
    uri=ldaps://ldap2.centile.com
    # Le DN distant que l'on utilise pour mettre à jour l'arbre distant
    binddn="cn=replication,o=free-4ever,dc=net"
    # La méthode d'authentification et le mot de passe associé en clair !!
    bindmethod=simple credentials=<mdp_de_replication>
# le fichier de log de la réplication
replogfile /var/db/openldap-slurp/replica/replog

Attention aux droits sur le répertoire /var/db/openldap-slurpd/ !

Il faut que le daemon slurpd soit démarré automatique au démarrage du serveur. Il n’y a pas de configuration spécifique hormis ce que nous avons mis dans le fichier slapd.conf.

Notre serveur maître est maintenant correctement configuré.

 

Le serveur esclave

Sur le serveur esclave, il n’y pas trop de changements à faire dans la configuration de SLAPD. Le principal étant que l’utilisateur « cn=replication,o=free-4ever,dc=net » doit avoir les droits en écriture pour pouvoir mettre à jour l’arbre !

Puis il faudra aussi définir qui est le serveur maître.

Pour cela, on modifie le fichier slapd.conf pour ajouter la ligne de l’utilisateur « cn=replication,o=free-4ever,dc=net »:

## Acces Lists
# Admin can change all, watcher and all authentified users can read all
access to *     by dn.regex="cn=manager,o=free-4ever,dc=net" write
                by dn.regex="cn=watcher,o=free-4ever,dc=net" read
                by dn.regex="cn=replication,o=free-4ever,dc=net" write
                by * auth

On modifie aussi le fichier pour déclarer le serveur maître:

# Réplication
# l'utilisateur qui met à jour l'arbre
updatedn        "cn=replication,o=free-4ever,dc=net"
# L'URL du serveur maître
updateref       "ldaps://ldap1.centile.com"

Notre serveur esclave est maintenant configuré.

 

Mise en service

Pour mettre en service nos serveurs, il y a quelques étapes simples:

  • Arrêter le daemon slapd sur les deux serveurs:
# /usr/local/etc/rc.d/slapd stop
  • Copier le contenu du répertoire /var/db/openldap-slapd/ du serveur maître dans le répertoire /var/db/openldap-slapd/ sur serveur esclave
  • Démarrer le daemon slapd sur le serveur maître:
# /usr/local/etc/rc.d/slapd start
  • Démarrer le daemon slurpd sur le serveur maître:
# /usr/local/etc/rc.d/slurpd start
  • Démarrer le daemon slapd sur le serveur esclave:
# /usr/local/etc/rc.d/slapd start

Notre arbre est maintenant synchronisé entre les deux serveurs.

 

Mot de la fin

Les modifications ne sont possibles que sur le serveur maître. Si on tente des modifications sur un serveur esclave, même avec un DN qui a les droits en écriture, on a un message d’erreur qui nous indique l’URL du serveur maître.

Toutes les modifications faites sur le serveur maître sont répliquées « instantanément » sur les serveurs esclaves, selon les charges des serveurs biensur !

Pour les ajouts et modifications, cela se fait exactement comme si le serveur maître était en autonome. Pour les accès en lecture, on peut les faire sur tous les serveurs. Pour plus d’informations sur les aspects clients, vous pouvez consulter le document suivant: Utilisation des outils client

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s