load balancing haproxy sous docker

Après avoir créé une première image contenant une application basique sous tomcat, je vais tester une montée en charge. Pour cela, nous allons lancer 2 containers tomcat et mettre en place un HA proxy (il s’agit d’un load balancer logiciel qui va répartir la charge entre les 2 containers tomcat.

Je vais utiliser l’image suivante : https://index.docker.io/u/dockerfile/haproxy.

Il y a juste à surcharger la configuration pour l’adapter à nos besoins:

j’ai repris le fichier de l’image et j’ai ajouté la partie en bas. On va donc faire du round robin  entre nos 2 serveurs tomcat qui sont ensuite définis. J’ai gardé la partie stats pour vérifier que tout se passe bien.

En démarrant un container, on obtient le résultat suivant:

 

Le serveur ne trouve aucun serveur « backend ». C’est ce que l’on constate aussi en regardant les stats:

stats1

En démarrant un container tomcat, on peut voir que les choses s’améliorent:

 

stats2

On a maintenant un premier backend. Et effectivement, en allant sur le site, j’obtiens bien la page voulue

hello1

Je lance maintenant le deuxième:

stats3

Nous avons maintenant une infrastructure avec 2 serveur tomcat et un load balancer devant.

En lancant une commande de type :

On voit bien l’alternance des serveurs dans les logs et dans les stats.

stats4

Les sources de l’exemple sont disponible ici: git.