Lors du 3éme Paris Mesos User Groupe, nous avons présenté une solution pour piloter soi-même un Haproxy afin d'exposer à des utilisateurs des services mis à disposition depuis un cluster Mesos/Marathon.
Piloter un loadbalancer pour exposer les microservoces de mon cluster Mesos/Marathon
1. HaProxy et Marathon
Ou comment exposer les services de son cluster ?
Paris Mesos Users Group
2. Paris Mesos Users Group
Agenda
• Mesos marathon et les Micro services
• C’est bien mais maintenant comment est-ce qu’on expose tout ça ? (Problème / les besoins / cas
concret == démo)
• Les solutions existantes
• Comment le faire soi-même
• Du code !
Paris Mesos Users Group 1
3. Paris Mesos Users Group
Qui suis-je ?
Jean-Pascal THIERY
Développeur de Kodo Kojo depuis le début de l’année 2016
Twitter : @jpthiery
Speaker à l’université Mesos de Devoxx France 2015
2
4. Paris Mesos Users Group
Mesos, Marathon et les microservices
• Mesos: Orchestrateur de tâche distribuées
• Marathon: Surveille l’état de tâches longues
• Microservices: Micros et scalables
3
5. Paris Mesos Users Group
Mesos
• En version 1.0.0 depuis le 27 juillet 2016
• Éprouvé par des grands du Web
• Vise à optimiser le rendement d’un cluster de machine
4
6. Paris Mesos Users Group
Marathon
• Permet de lancer des services variés
• Vérifie l’état des services et les relances le cas échéant
• Permet de gérer simplement la scalabilité des services
5
7. Paris Mesos Users Group
Comment exposer-t-on tout ça ?
• Les services sont lancés sur des port dynamiques.
• Je demande à mon utilisateur de se connecter sur l’url : http://10.2.234.18:32492 ?
• Si le serveur tombe et que Marathon relance le service sur un autre serveur, je lui
envoi un mail avec la nouvelle Url en Ip/Port ?
6
8. Paris Mesos Users Group
Précisions sur les besoins
• Une solution Opensource
• Redirection vers N backends en dynamique (en cas d’ajout/suppression/modification d’un cluster
de backend)
• Support de HTTPS
• Support des virtual host HTTP
• Router des connexions TCP (pour faire du SSH sur Gitlab)
7
11. Paris Mesos Users Group
DCOS
• Complètement intégré à Mesos
• Développé par les contributeurs de Mesos
10
12. Paris Mesos Users Group
DCOS
• Intégre complètement Mesos
• Pas Opensource au moment du lancement des chantiers sur Kodo Kojo
11
DCOS
13. Paris Mesos Users Group
Traefik
• Compatible avec plusieurs backends:
• Docker
• Marathon
• Kubernetes
• Supporte HTTP2
12
14. Paris Mesos Users Group
Traefik
• Ne supporte ‘que’ HTTP, donc pas possible d’exposer un git en SSH (comme un
gitlab ?)
13
15. Paris Mesos Users Group
vamp.io
• Supporte plusieurs backends: Marathon et Kubenertes.
• Permet de faire du Canary release
• Se base sur Haproxy
• Permet de router les appels entrants sur presque tous les paramètres proposés par
Haproxy
14
16. Paris Mesos Users Group
vamp.io
• Ne supporte pas les Websockets
• ne permet pas de router des connexions TCP (encore ce fichu SSH pour notre Gitlab)
15
18. Paris Mesos Users Group
Nous allons garder HAProxy
• Éprouvé
• Performant
• Communauté active
17
19. Paris Mesos Users Group
S’appuyer sur Marathon...
• API Rest
• Event Bus
18
20. Paris Mesos Users Group
... n’est pas une bonne idée.
• API Rest -> Le polling, c’est mal
• Event Bus -> capricieux et en marge des fonctionnalités de Marathon.
19
21. Paris Mesos Users Group
Zookeeper
• Gestionnaire de configuration distribuée
• Election de master/leader
20
22. Paris Mesos Users Group
Mais, comment faire ?
• Marathon utilise Zookeeper pour stocker son état.
• Zookeeper peut nous notifier du changement d’état des noeuds de Marathon.
21
23. Paris Mesos Users Group
Les noeuds Marathon dans Zookeeper
22
/marathon
/state
/task:monprojet_gitlab.12439878678364