Monter un cluster swarm

Salut
Aujourd’hui par curiosité j’ai décidé de tester SWARM qui est un orchestrateur de containers DOCKER.

“Swarm est l’orchestrateur historiquement intégré dans docker. Il permet de distribuer automatiquement les containers sur l’un ou l’autre des noeuds du cluster en fonction de l’indisponibilité ou de la charge d’un noeud. Docker inc a été testé pour scaller jusqu’à 1 000 nœuds et 50 000 conteneurs sans dégradation de performance.
Il existe deux types de noeuds, les managers et les workers. Pour faire simple, les managers peuvent administrer ce qui tourne sur le cluster et répartir le travail sur les workers tandis que les workers sont de simples exécutants qui lancent des containers.
De base, le cluster va faire du mesh routing. Cela signifie, par exemple, que si vous lancez un serveur web sur le port 80 quelque part sur votre cluster, vous pourrez y accéder en attaquant n’importe quelle machine (worker ou manager) qui compose le cluster. Swarm va aussi nous proposer un système de load balancing afin de pouvoir distribuer la charge entre différentes instances d’un service.”
Merci Arnaud LAHAXE pour cette présentation claire de swarm 🙂

Swarm étant intégré dans docker, il va falloir commencé par installer celui-ci. Je vais travailler sur 3 vm debian pour avoir un master et deux workers. Il faut donc faire ce qui suit sur les 3 vm.

$ sudo apt install apt-transport-https software-properties-common ca-certificates curl gnupg2
$ wget https://download.docker.com/linux/ubuntu/gpg
$ sudo apt-key add gpg
$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
$ sudo apt update
$ sudo apt install docker-ce

Pour ne pas devoir mettre sudo devant chaque commande docker :
$ usermod -aG docker $USER

Voilà nous avons maintenant 3 machines docker prête à servir.
Il faut donc se connecter sur le master et initialiser swarm avec la commande suivante :
$ docker swarm init
Ce qui va créer le cluster, annoncer cette machine comme leader et nous donner la commande à taper sur les workers pour rejoindre le cluster.
$ docker swarm join --token SWMTKN-1-666ryxioz666fhii66s666exbyw7cxztt666of666oiq666w666-dr666c666mwf2wjqf666sr666 [ip_master]:[port]
Si jamais vous perdez votre token il vous suffit de taper cette commande sur le master :
$ docker swarm join-token worker

Toujours sur le master il maintenant possible de voir les nœuds disponibles avec :
$ docker node ls

Maintenant que tout est OK, nous allons déployer notre premier service.
Sur le master :
$ docker service create --name tutos --mount type=bind,source=/home/bizbi/docker/tutos/,destination=/var/www/html/ --publish 8080:80 --publish 8081:443 wordpress
Cette commande va créer un nouveau service ayant pour nom “tutos”, avec un dossier commun entre ma machine (/home/bizbi/docker/tutos) et le service (/var/www/html) permettant des modifications faciles des fichiers qui nous intéresse.  Nous effectuons un PAT du 8080 vers 80 et de 8081 vers 443 et nous signalons l’image que nous voulons utiliser : wordpress.

On peut joindre notre service sur l’ip du master ou des workers sans distinction. Pour éviter la perte de donnés si jamais le service change de machine, tout mes dossiers communs entre les services et mes machines sont dans le dossier docker. C’est un dossier monter en NFS présent sur toutes les machines.

Dans le prochain article on va tester Portainers histoire d’avoir une interface web qui nous offre un visuel sur tout ça.

Source : outweb

Taggé , , , , , , , , , .Mettre en favori le Permaliens.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *