informatique:reseau:ldap:replication_multi-maitre

Réplication multi-maitre

Ce tuto va partir expliquer l'installation sur deux serveurs pré-installé en Debian Squeeze, d'OpenLDAP configuré en réplication multi-maitre.

  • Installer le paquet slapd :
    apt-get install slapd ldap-utils
  • L'installeur du paquet va pré-configurer pour héberger un arbre LDAP composé à partir du nom DNS de la machine. Nous utiliserons cet arbre sans le modifier mais vous pouvez à cette étape le reconstruire à votre goût.
  • Nous allons commencer par hashé le futur mot de passe admin de notre arbre LDAP. Pour cela utiliser la commande slappasswd. Communément, le mot de passe est encode en base64 pour son stockage. Pour cela, utiliser la commande suivante :
    echo -n "[mon mot de passe hashé]"|base64
  • Nous allons maintenant mettre en place le mot de passe d'accès à la branche cn=config en éditant le fichier /etc/ldap/slapd.d/cn=config/olcDatabase={0}config.ldif et en ajoutant la ligne :
    olcRootPW:: [hash du mot de passe encodé en base64]
Se sera la seule fois que nous éditerons les fichiers du dossier /etc/ldap/slapd.d. Par la suite, toutes nos modifications pourront utiliser les voies LDAP classiques ! Attention cependant si vous souhaitez utiliser l'outils *PhpLdapAdmin*, celui-ci peut avoir tendance à poser problème lorsque vous tenterez de jouer certain LDIF.
  • Redémarrer slapd
  • Nous allons partir du principe que la réplication LDAP utilisera un compte applicatif stocké dans l'OU sysaccounts à la racine de notre arbre o=example. Nous allons donc ajouter l'OU ainsi que l'objet LDAP du compte applicatif en exécutant le LDIF suivant :
    dn: ou=sysaccounts,o=example
    objectClass: organizationalUnit
    ou: sysaccounts
    
    dn: uid=syncrepl,ou=sysaccounts,o=example
    objectClass: simpleSecurityObject
    objectClass: account
    uid: syncrepl
    userPassword:: [hash du mot de passe encodé en base64]
Le mot de passe du compte applicatif est hashé puis encodé en base64 comme précédemment pour le mot de passe admin.
  • Nous allons ensuite faire que cet utilisateur ne soit pas impacté par une limite d'objet retourné ou de temps par requête en jouant le LDIF suivant :
    dn: olcDatabase={1}mdb,cn=config
    changetype: modify
    add: olcSizeLimit
    olcSizeLimit: dn.base="uid=syncrepl,ou=sysaccounts,o=example" size=unlimited  time=unlimited
  • Nous allons ensuite ajouter l'overlay syncprov activant les fonctionnalités de réplication d'OpenLDAP. Pour cela nous allons jouer le LDIF suivant :
    dn: cn=module{0},cn=config
    changetype: modify
    add: olcModuleLoad
    olcModuleLoad: syncprov
    
    dn: olcOverlay=syncprov,olcDatabase={1}mdb,cn=config
    changetype: add
    objectClass: olcOverlayConfig
    objectClass: olcSyncProvConfig
    olcOverlay: {0}syncprov
    olcSpCheckpoint: 100 10
    olcSpSessionlog: 100
  • La réplication LDAP s'appuyant sur les attributs entryCSN et entryUUID, nous allons mettre en place des indexes pour ces attributs :
    dn: olcDatabase={1}mdb,cn=config
    changetype: modify
    add: olcDbIndex
    olcDbIndex: entryUUID eq
    -
    add: olcDbIndex
    olcDbIndex: entryCSN eq

Le premier serveur est maintenant installé sans réplication. Nous allons pouvoir mettre en place le second serveur.

L’installation du second serveur va consisté à répliquer la configuration puis les données du premier serveur.

  • Installer le paquet slapd :
    apt-get install slapd ldap-utils
  • L'installeur va pré-configuré encore une fois OpenLDAP mais nous allons écraser tout cela. Pour cela, commençons par stopper slapd et répliquer le contenu du dossier /etc/ldap depuis le premier serveur.
En fonction de votre configuration, il peut également être nécessaire de répliquer d'autres fichiers faisant partie de la configuration d'OpenLDAP mais n'étant pas stocké dans le dossier /etc/ldap telques d'éventuel certificats SSL.
  • Supprimer ensuite l'ensemble des données contenus dans le dossier /var/lib/ldap (à l'exception du fichier DB_CONFIG pour les bases utilisant le backend HDB ou le BDB)
  • Assurer les droits de ces deux dossiers :
    chown openldap: -R /var/lib/ldap /etc/ldap/slapd.d
  • Relancer slapd

OpenLDAP est maintenant actif et configuré sur les deux serveurs. Le seconde serveur ne dispose pas encore des données de l'arbre LDAP, il les récupérera au moment de la première synchronisation.

  • Nous allons commencer par activer la synchronisation du second serveur sur le premier pour qu'il récupère les données de l'arbre LDAP. Pour cela, nous allons jouer le LDIF suivant :
    dn: cn=config
    changetype: modify
    add: olcServerID
    olcServerID: 2
    
    dn: olcDatabase={1}mdb,cn=config
    changetype: modify
    add: olcSyncrepl
    olcSyncrepl: {0}rid=002 provider=ldap://ldap1.example.com type=refreshAndPersist retry="5 5 300 +" searchbase="o=example" attrs="*,+" filter="(objectClass=*)" bindmethod=simple binddn="uid=syncrepl,ou=sysaccounts,o=example" credentials="[mot de passe syncrepl]"
  • La réplication est donc maintenant active dans le sens serveur 1serveur 2. Celle-ci est entrain de répliquer l'ensemble des données de l'arbre LDAP vers le serveur 2. Une fois cette synchronisation effectuées nous allons pouvoir activer la réplication dans le sens inverse.
  • Pour activer la réplication dans l'autre sens, nous allons jour le LDIF suivant sur le premier serveur :
    dn: cn=config
    changetype: modify
    add: olcServerID
    olcServerID: 1
    
    dn: olcDatabase={1}mdb,cn=config
    changetype: modify
    add: olcSyncrepl
    olcSyncrepl: {0}rid=001 provider=ldap://ldap2.example.com type=refreshAndPersist retry="5 5 300 +" searchbase="o=example" attrs="*,+" filter="(objectClass=*)" bindmethod=simple binddn="uid=syncrepl,ou=sysaccounts,o=example" credentials="[mot de passe syncrepl]"
  • Il nous reste plus qu'à activer le mode miroir pour que les bases des deux serveurs soit à nouveau accessible en lecture/écriture. Pour cela, nous allons jouer le LDIF suivant sur les deux serveurs :
    dn: olcDatabase={1}mdb,cn=config
    changetype: modify
    add: olcMirrorMode
    olcMirrorMode: TRUE
  • informatique/reseau/ldap/replication_multi-maitre.txt
  • Dernière modification : 2019/03/11 16:05
  • de bn8