Vous êtes ici

Mettre en place un cluster web ou autre avec marathon : marathon-lb

Dans cet article, nous allons voir comment mettre en place un cluster web ou de tout autre applications avec marathon. Une fois ce cluster paramètré, vous pourrez en seulement quelques clics passer d'un serveur web à plusieurs dizaines.

 

Pré-requis :

- Un cluster marathon,mesos,docker

 

1) Télecharger lb-marathon

 

git clone https://github.com/mesosphere/marathon-lb.git

 

ou uniquement le script python ici

 

2) Installer les prérequis 

 

apt-get install haproxy
apt-get install python3
apt-get install python3-pip
pip3 install -r requirements.txt (requests - six - sseclient)

 

3) Créer une application web depuis marathon dans le groupe HAPROXY external2

 

- 'Create', puis ici, je commence par appeler mon application web2 et je lui alloue 10% de vCPU et 128Mo de RAM par conteneur, ici j'ai déjà spécifié que je voulais 3 conteneurs, mais nous pourrons le modifier plus tard, c'est justement tout l'intêret :

 

 

- Ici, je pousse le conteneur nommé apache24 (mon Dockerfile ci dessous). Trés important, mettre le network en mode Bridged, selectionner le conteneur port (80 pour mon apache), et surtout, le service Port, c'est le port qui sera natté, ici le 10005

 

 

Label, c'est ici que nous allons ajouter la clé HAPROXY_GROUP, c'est cette clé que marathon-lb va interroger pour générer la conf haproxy, ici je decide d'associer mon cluster web2 à la configuration external2

 

 

Ici, nous parametrons tout simplement le check qui va être effctué sur nos conteneurs pour savoir si ils sont en vie, la je positionne un check HTTP sur la racine de ma page internet, et je n'oublie pas de preciser le port du service, si le conteneur est mort, c'est ce check qui le constatera, et donc, relancera le conteneur.

 

 

Maintenant que j'ai executé mon application, je la retrouve ici, et d'un simple clic sur ... , je peux choisir d'en executer plus ou moins à l'aide du menu Scale.

 

 

J'ai juste à choisir combien je veux de conteneurs dans ce menu :

 

 

 

Mon cluster web est un simple conteneur docker apache 2,4 que je nomme apache24 , voici le Dockerfile :

 

~# cat docker_apache/Dockerfile 

FROM httpd:2.4
COPY ./public-html/ /usr/local/apache2/htdocs/

 

 

 

4) Executer marathon_lb :

 

Maintenant, j'ai juste à executer cette commande pour que la configuration de Haproxy soit automatiquement générée :

 

./marathon_lb.py --marathon http://127.0.0.1:8080 --haproxy-config /etc/haproxy/haproxy.cfg --group external2 --dont-bind-http-https

 

5) Automatisons tout cela à l'aide de cron :

 

~# cat /etc/cron.d/marathon-lb 
*/2 * * * * root /root/marathon-lb/marathon_lb.py --marathon http://127.0.0.1:8080 --haproxy-config /etc/haproxy/haproxy.cfg --group external2 --dont-bind-http-https
 

www.le-gas.fr : Le guide de l'admin Systeme