Swarm

Qu’est-ce que Docker Swarm

Docker Swarm est un système de management et d’orchestration de cluster, intégré au moteur Docker. Il est disponible avec Docker Community Edition et Enterprise Edition, sur toutes les plateformes.

Un swarm (essaim en français) de noeuds est un ensemble de serveurs hautement disponibles. Docker se charge du load balancing à travers ces différents hôtes pour garantir que vos applications et services puissent être toujours disponibles. Lorsque de nouvelles charges de travail sont ajoutées, elles sont automatiquement réparties dans le cluster, sur les hôtes disponibles. EtsSi vous avez besoin de mettre à jour Docker sur un noeud en particulier, les charges de travil sont automatiquement déplacées vers d’autres noeuds. Chaque noeud du cluster communique de manière crypté avec les autres noeuds.

Le cluster swarm est géré par un manager tandis que les services tournent sur des workers. Par défaut, un manager est également worker.


Créer un swarm

Pour activer l’autolock sur un Swarm pré-existant:

  docker swarm update --autolock=true

Pour activer le manager après un redémarrage:

  docker swarm unlock

Rejoindre le swarm


Déployer un service

Un service est réparti sur le swarm de serveurs.
Chaque serveur exécute une tâche — une instance de service.


Quorum

Les noeuds manager s’assurent que l’état du cluster est intact, que les services déployés restent disponibles et déployés sur les différents noeuds. Ajouter de nouveaux managers rend le cluster plus tolérant aux pannes, mais réduit les performances d’écriture car davantage de noeuds doivent reconnaître les demandes de mise à jour — et il y a plus de traffic sur le réseau.

Lorsqu’il existe plusieurs managers, ils doivent se mettre d’accord pour toute mise à jour sur le cluster — par exemple lorsqu’on veut ajouter ou supprimer des noeuds. Pour ce faire, Swarm utilise l’algorithme de consensus Raft (Raft Consensus Algorithm), lequel requiert qu’une majorité de managers (dit quorum). Si le cluster perd le quorum de managers, alors il ne peut plus effectuer de tâches de gestion: les tâches continuent de tourner sur les hôtes, mais il n’est plus possible d’en lancer de nouvelles, de les arrêter ou de les mettre à jour.

Ainsi, si votre cluster a plusieurs managers, il est recommandé d’avoir un nombre impir de managers, car un nombre pair rend le quorum plus difficile. Pour s’assurer que votre cluster puisse toujours maintenir le quorum, vous pouvez vider les charges de travail des managers avec la commande suivante:

docker node update --availability drain <NODE>

De cette manière, vous aurez toujours des managers pour prendre des décisions critiques dans le cluster.

Administer and maintain a swarm of Docker Engines


Stacks

Les stacks sont utilisées pour définir des applications complètes, par exemple un service web + base de données + apt. Une stack Docker permet de définir des services, avec l’ensemble des containers devant fonctionner à l’intérieur, ainsi que la manière dont les services réseau et de stockage sont exposés et sont en relation.

Un stack est définie par un fichier texte écrit au format YAML. C’est à peu près la même chose que docker-compose.yml, sauf qu’on ajoute une section deploy à chaque service.


Secrets

Un secret est un blob de données, comme un mot de passe, une clé privée SSH, un certificat SSL ou tout autre élément qui ne doit pas être transmis sur le réseau ou être stocké non encrypté sur le disque (Docker >= 1.13).

Les secrets sont encryptés dns le swarm. Les services n’y ont accès que si l’accès leur a été explicitement donné.