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

Post on 16-Apr-2017

260 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

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

top related