piloter un loadbalancer pour exposer les microservoces de mon cluster mesos/marathon

29
HaProxy et Marathon Ou comment exposer les services de son cluster ? Paris Mesos Users Group

Upload: kodo-kojo

Post on 16-Apr-2017

260 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Piloter un loadbalancer pour exposer les microservoces de mon cluster Mesos/Marathon

HaProxy et MarathonOu comment exposer les services de son cluster ?

Paris Mesos Users Group

Page 2: Piloter un loadbalancer pour exposer les microservoces de mon cluster Mesos/Marathon

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

Page 3: Piloter un loadbalancer pour exposer les microservoces de mon cluster Mesos/Marathon

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

Page 4: Piloter un loadbalancer pour exposer les microservoces de mon cluster Mesos/Marathon

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

Page 5: Piloter un loadbalancer pour exposer les microservoces de mon cluster Mesos/Marathon

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

Page 6: Piloter un loadbalancer pour exposer les microservoces de mon cluster Mesos/Marathon

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

Page 7: Piloter un loadbalancer pour exposer les microservoces de mon cluster Mesos/Marathon

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

Page 8: Piloter un loadbalancer pour exposer les microservoces de mon cluster Mesos/Marathon

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

Page 9: Piloter un loadbalancer pour exposer les microservoces de mon cluster Mesos/Marathon

Paris Mesos Users Group

Kodo kojo

8

Page 10: Piloter un loadbalancer pour exposer les microservoces de mon cluster Mesos/Marathon

Ce qui existe

9

Page 11: Piloter un loadbalancer pour exposer les microservoces de mon cluster Mesos/Marathon

Paris Mesos Users Group

DCOS

• Complètement intégré à Mesos

• Développé par les contributeurs de Mesos

10

Page 12: Piloter un loadbalancer pour exposer les microservoces de mon cluster Mesos/Marathon

Paris Mesos Users Group

DCOS

• Intégre complètement Mesos

• Pas Opensource au moment du lancement des chantiers sur Kodo Kojo

11

DCOS

Page 13: Piloter un loadbalancer pour exposer les microservoces de mon cluster Mesos/Marathon

Paris Mesos Users Group

Traefik

• Compatible avec plusieurs backends:

• Docker

• Marathon

• Kubernetes

• Supporte HTTP2

12

Page 14: Piloter un loadbalancer pour exposer les microservoces de mon cluster Mesos/Marathon

Paris Mesos Users Group

Traefik

• Ne supporte ‘que’ HTTP, donc pas possible d’exposer un git en SSH (comme un gitlab ?)

13

Page 15: Piloter un loadbalancer pour exposer les microservoces de mon cluster Mesos/Marathon

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

Page 16: Piloter un loadbalancer pour exposer les microservoces de mon cluster Mesos/Marathon

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

Page 17: Piloter un loadbalancer pour exposer les microservoces de mon cluster Mesos/Marathon

Comment le faire soi-même ?

16

Page 18: Piloter un loadbalancer pour exposer les microservoces de mon cluster Mesos/Marathon

Paris Mesos Users Group

Nous allons garder HAProxy

• Éprouvé

• Performant

• Communauté active

17

Page 19: Piloter un loadbalancer pour exposer les microservoces de mon cluster Mesos/Marathon

Paris Mesos Users Group

S’appuyer sur Marathon...

• API Rest

• Event Bus

18

Page 20: Piloter un loadbalancer pour exposer les microservoces de mon cluster Mesos/Marathon

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

Page 21: Piloter un loadbalancer pour exposer les microservoces de mon cluster Mesos/Marathon

Paris Mesos Users Group

Zookeeper

• Gestionnaire de configuration distribuée

• Election de master/leader

20

Page 22: Piloter un loadbalancer pour exposer les microservoces de mon cluster Mesos/Marathon

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

Page 23: Piloter un loadbalancer pour exposer les microservoces de mon cluster Mesos/Marathon

Paris Mesos Users Group

Les noeuds Marathon dans Zookeeper

22

/marathon

/state

/task:monprojet_gitlab.12439878678364

Page 24: Piloter un loadbalancer pour exposer les microservoces de mon cluster Mesos/Marathon

Paris Mesos Users Group

Ce que nous allons faire

23

Page 25: Piloter un loadbalancer pour exposer les microservoces de mon cluster Mesos/Marathon

Paris Mesos Users Group

Un peu de code

24

Page 26: Piloter un loadbalancer pour exposer les microservoces de mon cluster Mesos/Marathon

Paris Mesos Users Group

Des questions ?

25

Page 27: Piloter un loadbalancer pour exposer les microservoces de mon cluster Mesos/Marathon

Paris Mesos Users Group

Références

• Dépot de source : https://github.com/kodokojo/hapoxy-agent

• http://kodokojo.io

26

Page 28: Piloter un loadbalancer pour exposer les microservoces de mon cluster Mesos/Marathon

Paris Mesos Users Group

Merci !

27

Page 29: Piloter un loadbalancer pour exposer les microservoces de mon cluster Mesos/Marathon

HaProxy et MarathonOu comment exposer les services de son cluster ?

Paris Mesos Users Group