virli/tutorial/docker-orchestration/swarm.md

4.5 KiB

\newpage

Cluster Swarm

Création du cluster

De quoi s'agit-il ?

Pour travailler sur un cluster, il faut avoir plusieurs machines. Au moins plus d'une !

TODO parler du clustering et du provisionning

TODO parler des concurrents

Provisionner des machines

Automagiquement

La solution magique consiste à passer par docker-machine pour créer des machines virtuelles automatiquement provisionnées avec Docker.

Rien de plus simple, mais cela nécessite d'être dans un environnement dans lequel vous maîtrisez le shell et dans lequel vous pouvez créer des machines virtuelles. Si votre machine Linux est en fait une machine virtuelle hébergée par VirtualBox sous Windows, vous allez sans doute préférer la deuxième solution, que d'utiliser PowerShell et Docker4Windows1.

Créer une machine

Pour créer une nouvelle machine, nous allons utiliser la commande docker-machine create, en prenant soin de préciser le pilote à utiliser, les éventuelles options que prend ce pilote, ainsi que le nom que vous souhaitez donner à cette machine (les machines ne sont pas considérées comme jetables, leur nom vous permettra par exemple de relancer une machine plus tard) :

docker-machine create --driver virtualbox echinoidea

Consultez la section suivante, réservée aux gens qui ne peuvent pas passer par docker-machine si vous souhaitez avoir plus d'information sur ce que fait cette commande.

Commandes usuelles de docker-machine

De la même manière que docker, vous pouvez lister les machines connues (ls), changer leur état d'exécution (start/stop/kill/restart) ou encore supprimer la machine (rm)

Si vous avez besoin d'obtenir un shell : docker-machine ssh $NAME et évidemment la commande scp s'utilise de la même manière, pour transférer des fichiers.

Utilisation avec Docker

Rappelez-vous, au cours précédent, nous avions évoqué le fait que le deamon pouvait ne pas se trouver sur la même machine que le client docker. Eh bien avec docker-machine cela prend tout son sens, car vous pouvez très facilement changer de daamon/machine avec une simple commande :

$ docker container ls
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS
$ eval $(docker-machine env echinoidea)
$ docker container ls -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS
a814293b9f45        armbuild/busybox    "/bin/sh"           18 seconds ago      Up 10 minutes
0caddeed5037        armbuild/alpine     "/bin/sh"           3 weeks ago         Created

On remarque que le client Docker est influencé par l'exécution de notre commande docker-machine env. En effet, cette commande va modifier l'environnement (d'où le besoin d'eval le retour de la commande) pour faire correspondre DOCKER_HOST avec le chemin où le daemon peut être contacté.

Pour reprendre le contrôle de votre environnement local, vous pouvez, soit supprimer manuellement les variables qui ont été ajoutées par l'évaluation, soit lancer eval $(docker machine env -u).

Automanuellement

Si votre environnement ne vous permet pas d'utiliser docker-machine, vous pouvez

https://github.com/boot2docker/boot2docker/releases/latest

Présentation de l'orchestration

Déployer des conteneurs sur sa propre machine, c'est extrêmement simple grâce à Docker. Mais souvent, le passage d'une application en production ou simplement dans un environnement de qualification, n'est pas toujours aisé.

Il n'est pas question pour un administrateur système de faire la répartition de la charge à la main : afin de ne pas trop charger un serveur qui pourrait recevoir des pics, alors que d'autres serveurs attendent des calculs.

Ce processus d'optimisation s'appelle l'orchestration. Il s'agit de réussir à répartir au mieux les conteneurs dans notre environnement de production

Création du cluster Swarm

docker swarm

Le maître

Initialisation du cluster

Présentation des mécanismes de sécurité

Les nodes

Enregistrement d'un esclave

Multi-maître


  1. Vous pouvez aussi vous inscrire sur Amazon Web Services, docker-machine est capable, à partir de vos clefs d'API, de créer et lancer des machines dans le cloud ! Et ce n'est pas le seul service de cloud supporté ! ↩︎