Architecture d'annuaire hautement disponible avec OpenLDAP

Post on 28-Nov-2014

290 views 2 download

description

Présentation donnée lors du salon Solutions Linux 2014 par David COUTADEUR, Intégrateur LinID, Linagora.

Transcript of Architecture d'annuaire hautement disponible avec OpenLDAP

architecture d'annuaire hautement disponible avec OpenLDAP

Solutions Linux – 21/05/2014David Coutadeur

21 mai 2014 Solutions Linux 2014 2

À propos du conférencier

21 mai 2014 Solutions Linux 2014 3

David Coutadeur

● Ingénieur en identité Open-Source depuis 2010 à LINAGORA

● Expériences dans des migrations SUN/Oracle vers OpenLDAP

● Integrateur des solutions LinID http://linid.org

● Membre de l'équipe LTB : http://ltb-project.org

● Membre de l'équipe LSC : http://lsc-project.org

● Membre de la core-team de LemonLDAP::NG http://lemonldap-ng.org

21 mai 2014 Solutions Linux 2014 4

Plan● présentation d'OpenLDAP (2)● points forts● comparatif avec d'autres annuaires● nouveau mode de configuration cn=config● protocole de réplication (2)● implémentation syncrepl● Architectures syncrepl● Logiciels libres de HA

- heartbeat - pacemaker / corosync - haproxy - keepalived / IPVS / piranha

● quelques exemples d'architectures d'annuaires - architecture 1 - architecture 2

● conclusion

21 mai 2014 Solutions Linux 2014 5

OpenLDAP

21 mai 2014 Solutions Linux 2014 6

Présentation d'OpenLDAP

● Issu du serveur LDAP de l'université du Michigan

● Projet initié en 1998 (OpenLDAP v1), avec support LDAPv2

● Conforme LDAPv3 en 2000 (OpenLDAP v2)

● Codé en C

21 mai 2014 Solutions Linux 2014 7

Présentation d'OpenLDAP● Version stable actuelle : OpenLDAP 2.4 (octobre 2007)

● Version 2.5 en construction. Version 3 envisagée dans la roadmap

● 3 développeurs principaux :

– Howard Chu,

– Pierangelo Masarati,

– Kurt Zeilenga● Plusieurs backends de stockage : bdb, hdb, lmdb

● Extensible via des overlays : politiques de mots de passe, groupes dynamiques, intégrité référentielle, réécriture des requêtes à la volée

● Nouveau backend de configuration cn=config

21 mai 2014 Solutions Linux 2014 8

Points forts● Performances / Efficacité

● Nombreux backends (stockage, proxy, meta)

● Options de sécurité : SSL, SASL, ACLs, ACL sets, limites (en taille et en temps)

● Nombreuses extensions– 18 overlays officiels à ce jour

– 15 overlays contribués, disponibles dans les sources, mais à compiler

● Documentation relativement complète

● Et évidemment : opensource

21 mai 2014 Solutions Linux 2014 9

Comparatif avec d'autres annuairesopenLDAP OpenDJ

Apache Directory

Server

Oracle Directory

Server

Active Directory

éditeur communau-taire

ForgeRock Fondation Apache

Oracle Microsoft

maturité 16 ans(09/1998)

4 ans(12/2010)

12 ans (10/2002)

16 ans(1998)

18 ans(1996)

technologie C java java C C, C++,C# ?

Réplication multi-maître √ √ √ √ √Console d'administra-tion

X √ √ √ √

Open-source (license)

√(OpenLDAP

Public License)

√(CDDL 1.0)

√(Apache 2.0)

X X

Autres embarquable embarquable

Performances / efficacité +++ +++ + ++ -

21 mai 2014 Solutions Linux 2014 10

Nouveau mode de configuration cn=config

● La configuration se trouve dans l'annuaire ( >= 2.3)

● Possibilité de réplication de la configuration entre annuaires

● Certains paramètres sont pris en considération immédiatement (compte super-administrateur et son mot de passe)

● Possibilité d'administrer l'annuaire à distance

● Attention aux erreurs de configuration en cas de réplication !

21 mai 2014 Solutions Linux 2014 11

Protocole de réplication● « LDAP Content Synchronization Operation », RFC 4533

● Implémenté par « syncrepl » dans OpenLDAP

● Objectifs :

– Moins verbeux qu'un simple polling

– Convergent (inconsistances transitoires)

– Support du polling et du listening

– Support de la synchronisation partielle

– Ne nécessite pas de « contrat » de synchronisation

– Ne nécessite pas de maintenir des états par client

– Ne nécessite pas de maintenir des historiques des changements

21 mai 2014 Solutions Linux 2014 12

Envoi d'entrées

Mise à jour terminée

Nouveau cookie

Envoi d'entrées modifiées et / ou de messages « supprimés »

Terminé avec ce cookieAccuse réception de l'arrêt

Terminé avec ce cookie

Arrêt(cancel)

Requête initiale

Envoi des entrées présentes

Envoi des entrées modifiées

Requête initiale

Protocole de réplication● Deux modes :

Refresh Only = polling Refresh and Persist = listening

Envoi d'entrées

Terminé avec ce cookie

Requête de mise à

jour de contenu

Boucle

Boucle

21 mai 2014 Solutions Linux 2014 13

Implémentation syncrepl● Pas de maintien d'historique des changements

● Attributs opérationnels supplémentaires :

– Pour chaque entrée :● entryUUID / parentUUID

cfbebb8a-64c0-1033-80c5-7b0923a7f955

● entryCSN : mis à jour à chaque modification20140430143816.912528Z#000000#000#000000

– Pour le contexte :● contextCSN :

20140430144831.206763Z#000000#000#000000

● Attention à les indexer !

21 mai 2014 Solutions Linux 2014 14

Architectures syncrepl● Réplication multi-maîtres

– Les instances sont à la fois maîtres et esclaves

● Multi-maîtres à N instances– Évite le SPOF, vraie solution de failover, mais...

– Convergence difficile en cas d'écriture simultanée sur de multiples points d'entrée

– Casse la cohérence forte des données apportée par X500. (inconsistances transitoires)

● Mode mirroir– Équipement en frontal vient jouer le rôle de failover entre deux maîtres

● Réplication Delta-syncrepl– Maintien d'un changelog

– + efficace dans le cas d'écritures fréquentes sur de grosses entrées

21 mai 2014 Solutions Linux 2014 15

Logiciels libres de HA● Heartbeat

– Solution de reprise sur échec en GNU/GPL

– Surveillance des services compatibles « LSB »

– Fournit des services intégrés : maintien d'une adresse IP virtuelle

– Battement de cœur entre instances des nœuds (broadcast, multicast, unicast, ping)

– Quelques stratégies de migration des ressources (ordre, groupe)

– Administration des ressources : fichier plat / fichier XML / en ligne de commande

– Pas de gestion fine des ressources, de la politique de migration

– En perte de vitesse...

21 mai 2014 Solutions Linux 2014 16

● Pacemaker / corosync– Pacemaker : gestionnaire de ressources

– Corosync : moteur de cluster

– Corosync : support de petits ou larges clusters, détection et récupération de nœuds, support des quorums, de ring

– Pacemaker :

● primitives LSB, OCF, systemd,...● Ensemble de primitives : groupe, clone,...● Contraintes : Location, Ordering, Colocation,...● Configuration XML, gestion par GUI ou par ligne de

commande, surveillance des nœuds

– Pas de répartition de charge !

– Gestion de ressources peu utile, car en général, tous les annuaires sont démarrés

21 mai 2014 Solutions Linux 2014 17

● haproxy– Logiciel très léger (819 Ko) en C de répartition de charge

– Écrit en 2000 (14 ans), dernière version : 1.4.25

– Présent dans des infrastructures web connues : Amazon Web Services, Stack Overflow, Twitter,...

– Réputé très stable, rapide et efficace

– Fonctionne aux niveaux transport (4) et application (7)

– Nombreux algorithmes de répartition : roundrobin, par poids, par connexion la moins chargée, par hash de l'ip source, par hash du l'URI demandée, par en-tête HTTP,...

– Vérification du service au niveau TCP, HTTP, LDAP

21 mai 2014 Solutions Linux 2014 18

● IPVS / Keepalived / piranha– IP Virtual Server : système de répartition de charge agissant au

niveau transport (4), implémenté au niveau noyau

– Linux Virtual Server : groupe de serveurs apparaissant comme un seul serveur pour les clients

– Keepalived : logiciel de routage écrit en C et basé sur IPVS et LVS

● Permet la reprise sur échec (via mécanisme de VIP et protocole VRRP), et la répartition de charge

● Surveillance des services prise en charge en interne par requêtes TCP (possibilité de scripts externes)

● Répartition de charge impose des contraintes réseau lourdes

– Piranha : Service proche de keepalived, mais basé sur des signaux « je suis en vie » (heartbeat) échangés entre nœuds.

● Propose une interface d'administration● Présent en standard sur Red-Hat

21 mai 2014 Solutions Linux 2014 19

Assemblons tous ces composants

21 mai 2014 Solutions Linux 2014 20

Quelques exemples d'architectures d'annuaires

Quelques chiffres

● VM vmware● 4 CPU● 6Go de RAM● Réseau : 1Gbit/s● + 80 000 comptes

Performances minimum● 5 écritures/s● 1000 lectures/s

21 mai 2014 Solutions Linux 2014 21

Quelques exemples d'architectures d'annuaires

Quelques chiffres

● VM vmware● 2 VCPU (1,5Ghz)● 4Go de RAM● Réseau : 100Mbits/s

● Backend bdb ● 120 000 comptes● 21 écritures/s● Lectures : facteur 50

21 mai 2014 Solutions Linux 2014 22

C'est la fin... Bientôt !

21 mai 2014 Solutions Linux 2014 23

Conclusion

● L'objectif est rempli :– 1 solution d'annuaire de niveau

professionnel...

– capable de gérer la réplication

– 4 solutions de haute disponibilité compatibles et performantes

● Le tout uniquement avec de l'open-source !

21 mai 2014 Solutions Linux 2014 24

Remerciements

● Un grand merci !

– À l'organisation de Solutions Linux

– À Linagora

– À la communauté OpenLDAP● Restons connectés

– IRC: stryg #lemonldap-ng@freenode

– Mail: dcoutadeur@linagora.com

21 mai 2014 Solutions Linux 2014 25

Des questions ?