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.
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 |
Les actions à effectuer :
Note : toutes ces actions sont à effectuer une fois que l'instance d'annuaire est démarrée.
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
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
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
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
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
Les actions à effectuer :
Les étapes 1 et 2 sont identiques à celles effectuées sur le serveur 1.
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.