Archives de catégorie : Non classé

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.

Contruire une image docker à la suite d’un build maven

Pour mes premiers pas avec docker, je souhaitais faire une appli web java très simple qui s’intègre dans une image docker au moment du build.

J’ai trouvé quelques exemples de plugin maven pour construire facilement une image  mais la plupart utilise une api REST en http qui ne fonctionne plus depuis la version 0.56 de docker. Il faut maintenant utiliser une socket Unix.

J’ai donc utiliser un plugin maven pour lancer la construction de l’image via une ligne de commande (il y a sûrement mieux, mais c’était aussi pour aller vite):

Cette commande va construire l’image à partir d’un fichier DockerFile et va poser un tag composé du nom de l’artefact et de la version. Ce sera plus facile pour retrouver l’image par la suite.

Le fichier Dockerfile est construit comme ceci:

On indique à partir de quelle image on se base. Ici c’est un tomcat.

Puis on ajoute le war dans un répertoire particulier pour que tomcat le charge au démarrage.

Et enfin, on expose le port 8080 pour pouvoir accéder au tomcat depuis l’extérieur du conteneur.

Pour ce faire, il faut lancer le container avec la commande:

Puis la commande :

qui va lister les containers en cours d’exécution et indiquer le container id de chacun.

Et enfin la commande suivante pour récupérer l’adresse du container.

On peut maintenant vérifier que l’application fonctionne bien dans un navigateur:

hello world

Voila pour cette première rencontre avec docker.

Les sources sont ici : https://github.com/BenoitCharret/session-webapp

 

installation de docker sur ubuntu

L’installation sur une distribution ubuntu 14.04 est assez facile (http://docs.docker.io/installation/ubuntulinux/)

Pour tester l’installation on peut lancer la commande suivante qui va telecharger une image ubuntu et executer la commande /bin/bash

 

Publier sur un repository distant avec git et une clé ssh

Voici deux articles pour mettre en place une clé ssh avec git.

Pour générer sa clé et la tester:

https://help.github.com/articles/generating-ssh-keys

Pour que la clé soit prise en compte en ligne de commande:

http://matharvard.ca/posts/2011/aug/11/git-push-with-specific-ssh-key/

A bientot