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é par Docker, 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'infrastucture OpenStack de Lyon 1, nous déploierons au préalable 3 petites machines virtuelles (m1.xxsmall est suffisant). L'une sera utilisée commme manager, et les deux autres comme worker. <hi #ffc90e>WARNING</hi> Pour ce TP nous avons préparer une image avec docker installé et configuré pour fonctionner à l'université. Vous devez créer vos instance à partir d'un snapshot et choisir le snapshot snap-tp-swarm

Si vous utiliser 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 exempl 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 worker

# 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 DOCKER SWARM

Exécutons trois instances de nginx dans notre swarm.

(manager)# docker service create --name Web --publish 80:80 --replicas=3 nginx:latest

Scale un service : Afin d'avoir à présent cinq instances de notre service

(manager)# docker service update Web --replicas 5

On peut également réduire le nombre de services (scale down)

(manager)# docker service update Web --replicas 0

Supprimons à présent notre service

(manager)# docker service rm Web

Si nous avons défini un service avec un nombre donné de replica, le Swarm manager est en charge de s'assurer de maintenir cet état. Pour vous en assuré instanciez trois réplicas d'un service :

(manager)# docker service create --name Web --publish 80:80 --replicas=3 nginx:latest

Connectez vous sur l'un des worker hébergeant un des réplica et stoppé le brutalement :

(worker)# docker kill [container ID]

Partie III : Pour aller plus loin