2. 21 mai 2014 Solutions Linux 2014 2
À propos du conférencier
3. 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
4. 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
6. 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
7. 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
8. 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
9. 21 mai 2014 Solutions Linux 2014 9
Comparatif avec d'autres annuaires
openLDAP 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é +++ +++ + ++ -
10. 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 !
11. 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
12. 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
cookie
Accuse 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
13. 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 modification
20140430143816.912528Z#000000#000#000000
– Pour le contexte :
● contextCSN :
20140430144831.206763Z#000000#000#000000
● Attention à les indexer !
14. 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
15. 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...
16. 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
17. 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
18. 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
19. 21 mai 2014 Solutions Linux 2014 19
Assemblons tous ces composants
20. 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. 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
22. 21 mai 2014 Solutions Linux 2014 22
C'est la fin... Bientôt !
23. 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 !
24. 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
25. 21 mai 2014 Solutions Linux 2014 25
Des questions ?