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.
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
Coté esclave, il est existe deux méthodes de réplication lorsqu’on utilise SyncRepl :
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.
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
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