Table des matières
Réplication du Serveur LDAP
Nous souhaitons répliquer l'intégralité d'un serveur LDAP (maître) sur un autre serveur (esclave).
Il y a deux solutions possibles, utiliser slurpd ou bien syncrepl. Nous utiliserons cette 2ème méthode. Syncrepl se base sur LDAP Content Synchronisation. Il y peu de modifications à faire sur le serveur maître.
La documentation d'installation du serveur LDAP est disponible ici : installation serveur LDAP.
Configuration du maître
Configurer le maître n'est pas trés compliqué.
Dans /etc/ldap/slapd.conf :
# rootdn directive for specifying a superuser on the database. This is needed # for syncrepl. rootdn "cn=admin,dc=mdl29,dc=net" rootpw {SHA}W6ph5Mm5Pz8GgiULbPgzG37mj9g= moduleload syncprov overlay syncprov syncprov-checkpoint 100 10 syncprov-sessionlog 100
Reste enfin à redémarrer le service sur l’annuaire maître pour que la réplication fonctionne.
/etc/init.d/slapd restart
Configuration de l'esclave
Coté esclave, il est existe deux méthodes de réplication lorsqu’on utilise SyncRepl :
- refreshOnly : L’esclave se met à jour périodiquement en utilisant les données du maître. Par exemple, il se connecte toute les heures pour vérifier si des données ont été modifiées.
- refreshAndPersist : L’esclave conserve une connexion persistante avec l’annuaire maître et les données sont répliquées en temps réel lors de chaque modification sur le maître.
L’exemple ci-dessous décrit la configuration d’un esclave en mode “refreshAndPersist” qui présente beaucoup plus d’intérêt dans le sens ou ce mode permet d’obtenir une synchro en temps réél de l’annaire esclave.
Schémas du serveur esclave
Une méthode rapide peut-être de copier simplement tous les schémas du maître avec une commande du type :
scp root@ip_du_serveur_LDAP_maitre:/etc/ldap/schema/*.schema /etc/ldap/schema/
Bien évidemment, il reste à modifier le fichier slapd.conf pour correspondre à la configuration du maître.
Contrairement à slurpd, avec SyncRepl l’annuaire esclave ne doit pas nécessairement être identique à l’annuaire maître lorsque l’on démarre la réplication. La méthode la plus simple est donc de supprimer complètement les données existantes sur l’esclave et de démarrer ensuite la réplication. De cette façon, au démarrage du démon, syncrepl va copier l’intégralité de l’annuaire maître sur l’esclave.
/etc/init.d/slapd stop rm /var/lib/ldap/* /etc/init.d/slapd start
Dans /etc/ldap/slapd.conf :
# rootdn directive for specifying a superuser on the database. This is needed # for syncrepl. rootdn "cn=admin,dc=mdl29,dc=net" rootpw {SHA}W6ph5Mm5Pz8GgiULbPgzG37mj9g= syncrepl rid=100 provider=ldap://ip_du_serveur_LDAP_maitre:389 type=refreshAndPersist retry="60 10 300 +" searchbase="dc=mdl29,dc=net" scope=sub schemachecking=on bindmethod=simple binddn="cn=admin,dc=mdl29,dc=net" credentials="motdepasse_en_clair" updateref ldap://ip_du_serveur_LDAP_maitre:389
On redémarre le service :
/etc/init.d/slapd restart
Explication
- rid: Identifiant du serveur. Il semble qu'il doivent être unique entre réplicat
- provider: Le maître de réplication, peut être le master ldap ou un réplicat mis en maître de réplication.
- type: Le type de réplication refreshAndPersist ou refreshOnly
- retry: indique la reconnexion en cas de perte de connexion(ici 10 fois toutes les 60s, puis à l'infini toutes les 300s)
- searchbase: le dn de réplication
- filter: Filtre pour la réplication
- scope: sub, one
- schemachecking: si on vérifie la cohérence avec le schéma
- updatedn: le dn qui va écrire la réplication (pas besoin qu'il soit dans le LDAP)
- bindmethod: simple
- binddn: le dn qui va se connecter au maître de réplication
- credentials: le mot de passe de ce dn
- updateref: le serveur maître ldap
Écriture depuis un esclave
La réplication proposée est une réplication de type maître / esclave. C’est à dire qu’il n’est possible de faire des modifications que sur le maître. Pour contourner le problème, il est possible d’indiquer à un esclave de transmettre les demandes d’écriture à l’annuaire maître. Pour cela, il suffit d’ajouter la ligne suivante dans le fichier /etc/ldap/slapd.conf de l’esclave :
updateref ldap://ip_du_serveur_LDAP_maitre:389