piloter un loadbalancer pour exposer les microservoces de mon cluster mesos/marathon
TRANSCRIPT
HaProxy et MarathonOu comment exposer les services de son cluster ?
Paris Mesos Users Group
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
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
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
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
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
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
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
Paris Mesos Users Group
Kodo kojo
8
Ce qui existe
9
Paris Mesos Users Group
DCOS
• Complètement intégré à Mesos
• Développé par les contributeurs de Mesos
10
Paris Mesos Users Group
DCOS
• Intégre complètement Mesos
• Pas Opensource au moment du lancement des chantiers sur Kodo Kojo
11
DCOS
Paris Mesos Users Group
Traefik
• Compatible avec plusieurs backends:
• Docker
• Marathon
• Kubernetes
• Supporte HTTP2
12
Paris Mesos Users Group
Traefik
• Ne supporte ‘que’ HTTP, donc pas possible d’exposer un git en SSH (comme un gitlab ?)
13
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
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
Comment le faire soi-même ?
16
Paris Mesos Users Group
Nous allons garder HAProxy
• Éprouvé
• Performant
• Communauté active
17
Paris Mesos Users Group
S’appuyer sur Marathon...
• API Rest
• Event Bus
18
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
Paris Mesos Users Group
Zookeeper
• Gestionnaire de configuration distribuée
• Election de master/leader
20
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
Paris Mesos Users Group
Les noeuds Marathon dans Zookeeper
22
/marathon
/state
/task:monprojet_gitlab.12439878678364
Paris Mesos Users Group
Ce que nous allons faire
23
Paris Mesos Users Group
Un peu de code
24
Paris Mesos Users Group
Des questions ?
25
Paris Mesos Users Group
Références
• Dépot de source : https://github.com/kodokojo/hapoxy-agent
• http://kodokojo.io
26
Paris Mesos Users Group
Merci !
27
HaProxy et MarathonOu comment exposer les services de son cluster ?
Paris Mesos Users Group