cloud:2016:tp_swarm

Sujet de TP : Mise en oeuvre de Docker Swarm

  • M2 TI+DS, SRIV
  • 2016/2017
  • JP GELAS, F RICO

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

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
  • OOO Que fait cette commande ? Expliquez/Décrivez succinctement.

Puis sur chacun des worker

# docker swarm join --token letokenrenvoyeparleswarminit 192.168.XXX.YYY:2377
  • OOO Que fait cette commande ? Expliquez/Décrivez succinctement.
  • OOO Vous n'avez pas noté le token (worker) ? Quelle commande vous permet de le retrouver ?

Remarque : Pour chacune des questions vous trouverez des éléments de réponse dans la documentation officiel de Docker Swarm.

  • OOO Quelle commande peut on utiliser pour lister et vérifier la liste des worker à disposition ?
  • OOO Imaginons que vous souhaitiez ajouter un nouveau noeud worker et que vous avez égaré le token de votre cluster swarm. Quelle commande vous permet de le récupérer ?
  • OOO Est il possible d'avoir plusieurs machines qui tiennent le rôle de manager (au même titre que plusieurs machines sont des worker). Comment fonctionnent t-ils ?
  • OOO Supprimer un worker puis remettez le. Quelles commandes saisissez-vous ?

Exécutons trois instances de nginx dans notre swarm.

(manager)# docker service create --name Web --publish 80:80 --replicas=3 nginx:latest
  • OOO Quelle commande utilise t'on pour lister tous les services créé ?
  • OOO Quelle commande utilise t'on pour lister toutes les instances du service ?
  • OOO Quelle commande utilise t'on pour obtenir des information déataillé sur un service ? (inspect)

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]
  • OOO Que se passe t-il au bout de quelques secondes ?
  • OOO A présent stoppons un des noeud Worker. Que se passe t-il ?
  • OOO On souhaite éteindre un noeud physique (de type worker) pour effectuer une operation de maintenance sur ce dernier. Quelle procédure aller vous suivre (ou Quelles commandes allez vous saisir ? ) pour faire cela proprement.
  • OOO Expliquez brièvement la notion de promotion d'un noeud Worker (promote/demote).
  • cloud/2016/tp_swarm.txt
  • Dernière modification : 2017/07/18 12:19
  • de fabien.rico