L'objectif de ce TP est de se familiariser avec la solution de clusterisation proposée par Docker et nommée Swarm. Comme vu en cours, il existe des solutions alternatives que nous n'explorerons pas dans le cadre de ce TP (ex: Kumbernetes).
La plateforme que nous vous proposons de constituer est la suivante. En nous
appuyant sur l'infrastructure OpenStack de Lyon 1, pour obtenir des informations sur comment se connecter :
https://documentation.univ-lyon1.fr/ .
Dans le projet IGA Nous déploierons au préalable
3 petites machines virtuelles (m1.xsmall est
suffisant). L'une sera utilisée comme manager, et les deux autres comme worker.
<hi #ffc90e>Attention</hi> Pour ce TP nous avons préparer une image avec docker installé et configuré qui fonctionne à l'université. Vous devez créer vos instance à partir d'un snapshot et choisir celui nomé snap-docker-ready
Si vous utilisez des machines en dehors de l'université, installer bien une version de docker récente (>=1.12) et le paquet docker-engine dont l'installation est décrite ici. Le paquet docker.io
présent par exemple sur ubuntu est justement une version de docker sans swarm
L'installation de base se fait à présent de manière très simple. Tout d'abord sur la VM qui hébegera le manager :
docker swarm init --advertise-addr 192.168.XXX.YYY
Puis sur chacun des workers
# docker swarm join --token letokenrenvoyeparleswarminit 192.168.XXX.YYY:2377
Remarque : Pour chacune des questions vous trouverez des éléments de réponse dans la documentation officiel de Docker Swarm.
Exécutons trois instances de nginx dans notre cluster swarm.
(manager)# docker service create --name Web --publish 80:80 --replicas=3 nginx:latest
Afin d'avoir à présent cinq instances de notre service
(manager)# docker service scale Web=5
On peut également réduire le nombre de services (scale down)
(manager)# docker service scale Web=1
Supprimons à présent notre service
(manager)# docker service rm Web
Si nous avons défini un service avec un nombre donné de replicas, le Swarm manager est en charge de s'assurer de maintenir cet état. Pour vous en assurer :
docker kill …
).Supprimez tous les services utilisés précédemment, vous allez en relancer un seul avec un unique réplicas :
docker service create --name nginx -p 80:80 --replicas 1 nginx
Ensuite, retrouvez sur quel nœud de calcul se trouve le docker. Le nom du docker est un peu différent du nom du service, Grâce à la commande
docker logs -f nomdudocker
afficher les logs du docker nginx. Puis avec votre navigateur tentez de contacter le serveur web sur vos 3 machines.
docker inspect …
)
Créer un réseau 172.21.21.0/24
avec le driver overlay. Ajoutez lors de sa création l'option attachable
. Cette option vous permettra de créer des dockers utilisant le réseau sans être gérés par swarm.
toto
et l'adresse 172.21.21.3