Table des matières

Sujet de TP : Mise en oeuvre de Docker Swarm

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

Partie I : Installation de Docker 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.

Partie II : Usage d'un cluster swarm

Exécutons trois instances de nginx dans notre cluster swarm.

(manager)# docker service create --name Web --publish 80:80 --replicas=3 nginx:latest
Comment étendre un service ?

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
Maintient automatique du service

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 :

Partie III : Gestion des nœuds composant le cluster

Partie IV : Réseau overlay

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.

Créez votre réseau overlay

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.