LDAP : haute disponibilité
LDAP : haute disponibilité jppJ'ai un PC portable sous Linux (cela vous étonne ?) et cela m'ennuierai d'être séparé de mes chers contacts.
Je pourrais, bien sûr, effectuer une copie locale des données. Cette opération est en général très simple à faire et est déclenchable dans les propriétés de l'annuaire de votre programme de mail favori (Evolution et Thunderbird le font très bien).
Mais, la nature humaine étant ce qu'elle est, on oublie la mise à jour ... et ... un seul être vous manque et tout est dépeuplé , qu'est ce que je raconte ? Il nous manquera toujours l'adresse de M. Untel dont on a un besoin urgent.
La solution s'appelle "réplication". Il suffit d'installer un petit LDAP "local" et d'expliquer aux deux système que l'un est "Maître" et l'autre "Esclave".
L'esclave interroge régulièrement le maître :
"Maître avez-vous reçu des mises à jour depuis la dernière que vous m'avez fait l'honneur de me communiquer et qui portait le numéro NNN ? "
Et le maître répond : "non esclave je n'ai aucune mise à jour " ou bien "Oui esclave j'ai des mises à jour, les voici ......".
Grâce aux développeurs de OpenLdap il existe une possibilité toute simple de réaliser ce miracle. Quelques petites modifications dans les paramètres de configuration et ... le tour est joué.
Modifications du "Maître"
Dans le fichier "/etc/ldap/slapd.conf", oui oui, j'ai dupliqué le fichier avant d'y toucher :
Au début du fichier de configuration il faut charger dynamiquement un module spécifique :
moduleload syncprov
Syncprov = Synchronization Provider ?
Un peu plus loin dans le fichier, après la directive :
"database bdb" il faut ajouter les lignes suivantes :
overlay syncprov
syncprov-checkpoint 1 5
replica host=MON_ESCLAVE:489
binddn="cn=root,dc=domaine,dc=net"
bindmethod=simple credentials="le_mot_de_passe_secret_de_root"
syncprov-reloadhint TRUE
Cette petite manip permet au maître de savoir qu'il est maître de l'esclave nommé ici, les autres peuvent aller se faire voir !
Une fois "slapd" redémarré le maître est prêt. On n'est pas en SSL, ni sécurisé à mort, les mots de passe sont en clair dans le fichier ... on peut faire autrement, mais si c'est plus beau c'est aussi beaucoup plus difficile. Et puis le fichier de config n'est lisible que par "root" (c'est moi) et par le groupe "openldap" où je n'ai mis que le user du même nom. Et en plus les adresses dont je dispose ne sont pas classées "données sensibles", on admettra donc ce trou de sécurité.
Modifications de l'esclave.
Peu après la directive :
"database bdb" il faut ajouter les lignes suivantes :
syncrepl rid=007
provider=ldap://MON_MAITRE:489
type=refreshOnly
interval=00:02:00:00
searchbase="dc=domaine,dc=net"
filter="(objectClass=*)"
scope=sub
schemachecking=off
bindmethod=simple
binddn="cn=root,dc=domaine,dc=net"
credentials="le_mot_de_passe_secret_de_root"
La petite zone "00:02:00:00" permet de régler la fréquence de la mise à jour (ici 2 heures) à la seconde près !
Dès le démarrage le client sait qu'il a un maître et va s'enquérir des nouveautés auprès de son maître.
On peut même s'amuser à effectuer l'opération suivante ( SUR L'ESCLAVE !) :
- Stopper "slapd", sur l'esclave je me répète
- Aller dans le répertoire "/var/lib/ldap/domaine.net"
- Y détruire tout (sauf le fichier DB_CONFIG), si on est bien sur la machine esclave !
- Relancer "slapd"
Et le miracle s'accomplit, l'annuaire est "rempli" de données toutes fraîches, c'est m a g i q u e !
Donc comme cela les adresses de mon portable seront toujours "au top" car il est souvent branché sur le réseau au contact direct de son maître préféré.
Le seul problème est que je ne peux pas saisir d'adresses sur le portable, j'ai d'ailleurs paramétré le client mail en lecture seule.