Groupe Linagora - OBM Online - Planète - Blogs
Logo Linagora.org
Piste: » OpenOffice.org 2 - Module Présentation (Impress) » Script d'avertissement d'expiration des comptes » Le WebSSO LemonLDAP::NG » Optimisation du logiciel OpenLDAP » Script de suppression d'alias OpenLDAP cassés » Introduction à Cacti » Script d'initialisation du service OpenLDAP » Samba LVS Howto » Superviser un hôte sans IP dans Nagios » Fonctionnement de slurpd (réplication OpenLDAP)

Fonctionnement de slurpd (réplication OpenLDAP)

Présentation

Le mécanisme de réplication permet de propager des modifications effectuées sur un annuaire, dit « maître », vers un autre annuaire, dit « esclave ». L’annuaire maître est donc le référentiel et concentre toutes les opérations d’écriture, les modifications parviennent ensuite à ou aux annuaires esclaves.

Dans les version OpenLDAP inférieures à 2.2, slurpd était l'outil de réplication par défaut. Aujourd'hui son développement est arrêté, et la réplication dans OpenLDAP est assurée par Syncrepl.

Étapes de la réplication

Les étapes sont représentées dans le schéma suivant :

  • Première étape : une opération d’écriture est réalisée sur l’annuaire maître (1A). Le processus slapd enregistre la modification dans l’annuaire maître (1B) et l’inscrit dans son fichier replog (1C).
  • Deuxième étape : le processus slurpd vérifie régulièrement le fichier replog de slapd (2A) pour voir si des modifications sont en attente de réplication. Quand il en trouve, il les copie dans son fichier replog (2B) et les efface du fichier replog de slapd (2A).
  • Troisième étape : le processus slurpd analyse son fichier replog et tente de propager les modifications à l’annuaire esclave concerné. Si l’annuaire esclave n’est pas accessible, ou si l’identifiant ou le mot de passe de l’utilisateur de la réplication sont incorrects, la modification demeure dans le fichier replog de slurpd et aucune action n’est faite. Si la connexion à l’esclave fonctionne (3A), l’opération est propagée. Si l’annuaire esclave a accepté la modification (3B), le fichier statut est mis à jour avec la date et le rang de la dernière entrée acceptée (3C), sinon le fichier de rejet spécifique à l’annuaire esclave est rempli avec l’opération qui a échoué et le message d’erreur renvoyé par l’esclave (3E), et le fichier statut est également mis à jour avec la date et le rang de la dernière opération rejetée (3D).
  • Régulièrement : le processus slurpd lit la date présente dans le fichier de statut et tente de propager à l’annuaire esclave toutes les opérations contenues dans son fichier replog qui sont plus vieilles que la date précédemment relevée. Il s’agit en général des entrées non transmises pour cause de connexion refusée par l’annuaire esclave. Il est clair par contre qu’une entrée rejetée par l’annuaire esclave (et donc stockée dans le fichier de rejet) n’est jamais repropagée par slurpd. En outre les plus anciennes entrées déjà propagées sont supprimées du fichier replog de slurpd.

Fichiers de slurpd

Il y a 4 fichiers importants à analyser pour connaître le statut de la réplication :

  • Le fichier replog de slapd : il contient les modifications enregistrées sur l’annuaire maître mais pas encore récupérées par slurpd.
  • Le fichier replog de slurpd : il contient les modifications qui se trouvaient dans le fichier replog de slapd et qui ont été récupérées par slurpd.
  • Le fichier de statut : chaque ligne de ce fichier contient l’adresse et le port d’un annuaire esclave, ainsi que la date et le rang de la dernière modification acceptée ou rejetée.
  • Le fichier de rejet : il est spécifique à un esclave et contient les modifications rejetées.

États de la réplication

Les modifications, appelées aussi entrées de réplication, peuvent se trouver dans 4 états différents :

  • en transition : Les entrées sont dans le fichier replog de slapd, donc en transition entre slapd et slurpd.
  • en attente : Les entrées sont dans le fichier replog de slurpd et possèdent une date plus élevée que celle inscrite dans le fichier de statut. Cela signifie que slurpd n’a pas encore eu le temps de les envoyer à l’esclave, ou que l’esclave n’est pas disponible, ou encore que l’identifiant ou le mot de passe de réplication utilisés sont incorrects.
  • rejetées : Les entrées se trouvent dans le fichier de rejet. La cause de l’erreur est indiquée au début de chaque entrée.
  • propagées : Les entrées ont été acceptées par l’esclave. Elles restent temporairement dans le fichier replog de slurpd jusqu’à ce que celui-ci les efface.

Contributeurs : Clément OUDOT