OpenLDAP : mise en place de la réplication

Mise en place de la réplication dans OpenLDAP

La plupart du temps, les annuaires LDAP sont paramétrés avec une réplication entre deux serveurs, afin d'apporter une meilleure disponibilité ou permettre une montée en charge horizontale, via la mise en place d'un répartiteur de charge en frontal.

Situation de base

Un serveur installé en tant que master : openldap1.arciam.fr. Il écoute sur le port 389. L'overlay syncprov a été chargé en tant que module , via la configuration :

dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulepath:  /usr/lib64/openldap
olcModuleload: syncprov.la

Base DN : o=arciam l'annuaire est peuplé avec des données.

Un serveur installé en tant que réplicant : openldap2.arciam.fr. Il écoute égalemnt sur le port 389. On a évidemment le même rootSuffix, et même DN de base. Seul le DN de base est créé dans l'annuaire.

Comptes utilisés :

Compte Mot de passe Utilisation
cn=manager,o=arciam Arc1@m Administrateur de la_database_ / rootSuffix o=arciam
cn=admin,cn=config Arciam_Config Admin de la configuration

Sur le serveur 1

Les actions à effectuer :

  • ajouter un compte qui sera utilisé pour lire le contenu (tous les droits en lecture, pas de limite en nombre d'entrées ou de temps)
  • activer l'overlay syncprov
  • indexer les attributs entryCSN et entryUUID (utilisés pour la réplication)
  • définir le Server RID

Note : toutes ces actions sont à effectuer une fois que l'instance d'annuaire est démarrée.

Ajouter un compte

On peut ajouter via un fichier LDIF (replicator.ldif) :

dn: cn=replicator,o=arciam
userPassword: secret
cn: replicator
objectclass: top
objectclass: person
sn: Replicator Account
ldapadd -x -h localhost -p 389 -D "cn=Manager,o=arciam" -w Arc1@m -f replicator.ldif

Donner les droits et supprimer les limites

Ceci se fait au niveau de la configuration de la database , via un fichier LDIF lim.ldif :

dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcLimits
olcLimits: dn.exact="cn=replicator,o=arciam" time.soft=unlimited time.hard=unlimited size.soft=unlimited size.hard=unlimited
-
add: olcAccess
olcAccess: to attrs=userPassword by self write by dn.exact="cn=replicator,o=arciam" read by anonymous auth by * none
-
add: olcAccess
olcAccess: to * by dn.exact="cn=replicator,o=arciam" read by users read by * none
ldapmodify -x -h localhost -p 389 -D "cn=admin,cn=config" -w Arc1am_Config -f lim.ldif

Activation de l'overlay

Note : on suppose que l'overlay a été chargé lors de la création de l'instance.

On active l'overlay en modifiant la configuration de la database :

Fichier olcSyncProv.ldif :

dn: olcOverlay=syncprov,olcDatabase={2}hdb,cn=config
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov

Chargement via la commande

ldapadd -x -h localhost -p 389 -D "cn=admin,cn=config" -w Arc1am_Config -f olcSyncProv.ldif

Ajout d'index sur entryCSN et entryUUID

A faire via un fichier LDIF indexSync.ldif :

dn:olcDatabase={2}hdb,cn=config
changetype: modify
add: olcDbIndex
olcDbIndex: entryCSN,entryUUID eq
ldapmodify -x -h localhost -p 389 -D "cn=admin,cn=config" -w Arc1am_Config -f indexSync.ldif

Définition du server ID

Dans une topologie de réplication, chaque serveur doit avoir un rid unique. Pour simplifier la configuration on peut préciser le rid et l'url liée, par exemple, via le fichier rids.ldif :

dn: cn=config
changetype: modify
add: olcServerId
olcServerId: 1 ldap://openldap1.arciam.fr:389
-
add: olcServerId
olcServerId: 2 ldap://openldap2.arciam.fr:389
ldapmodify -x -h localhost -p 389 -D "cn=admin,cn=config" -w Arc1am_Config -f rids.ldif

Sur le serveur 2

Les actions à effectuer :

  • définir les Server RID
  • créer les index
  • définir l'agrément de réplication.

Les étapes 1 et 2 sont identiques à celles effectuées sur le serveur 1.

Agrément de réplication

Sur chaque serveur, on doit préciser les agréments de réplication avec les autres serveurs.

La modification peut s'effectue en live, via un fichier LDIF, par exemple replAgreement.ldif :

dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcSyncRepl
olcSyncRepl: rid=001 provider=ldap://openldap1.arciam.fr:389 binddn="cn=replicator,o=arciam" credentials=secret  attrs="*,+"  bindmethod=simple searchbase="o=arciam" type=refreshAndPersist retry="60 +"
ldapmodify -x -h localhost -p 389 -D "cn=admin,cn=config" -w Arc1am_Config -f replsAgreement.ldif

Note : une fois la commande effectuée, les données sont répliquées entre le serveur 1 et le serveur sur lequel on a lancé la commande.

Le temps de réplication dépend du volume de données et de la performance du réseau entre les serveurs.

Catégorie