Comment fonctionnent les nœuds
Le mode Swarm vous permet de créer un cluster d'un ou plusieurs Docker Engines appelé un swarm. Un swarm consiste en un ou plusieurs nœuds : des machines physiques ou virtuelles exécutant Docker Engine.
Il y a deux types de nœuds : gestionnaires et travailleurs.


Si vous ne l'avez pas déjà fait, lisez la vue d'ensemble du mode Swarm et les concepts clés.
Nœuds gestionnaires
Les nœuds gestionnaires gèrent les tâches de gestion de cluster :
- Maintenir l'état du cluster
- Planifier les services
- Servir les points de terminaison de l'API HTTP du mode Swarm
En utilisant une implémentation Raft, les gestionnaires maintiennent un état interne cohérent de l'ensemble du swarm et de tous les services qui s'exécutent dessus. À des fins de test, il est acceptable d'exécuter un swarm avec un seul gestionnaire. Si le gestionnaire dans un swarm à gestionnaire unique échoue, vos services continuent de s'exécuter, mais vous devez créer un nouveau cluster pour récupérer.
Pour tirer parti des fonctionnalités de tolérance aux pannes du mode Swarm, nous recommandons d'implémenter un nombre impair de nœuds selon les exigences de haute disponibilité de votre organisation. Lorsque vous avez plusieurs gestionnaires, vous pouvez récupérer de la défaillance d'un nœud gestionnaire sans temps d'arrêt.
-
Un swarm à trois gestionnaires tolère une perte maximale d'un gestionnaire.
-
Un swarm à cinq gestionnaires tolère une perte simultanée maximale de deux nœuds gestionnaires.
-
Un nombre impair
N
de nœuds gestionnaires dans le cluster tolère la perte d'au plus(N-1)/2
gestionnaires. Docker recommande un maximum de sept nœuds gestionnaires pour un swarm.ImportantAjouter plus de gestionnaires ne signifie PAS une évolutivité accrue ou de meilleures performances. En général, c'est l'inverse qui est vrai.
Nœuds travailleurs
Les nœuds travailleurs sont également des instances de Docker Engine dont le seul but est d' exécuter des conteneurs. Les nœuds travailleurs ne participent pas à l'état distribué Raft, ne prennent pas de décisions de planification, et ne servent pas l'API HTTP du mode swarm.
Vous pouvez créer un swarm d'un nœud gestionnaire, mais vous ne pouvez pas avoir un nœud travailleur
sans au moins un nœud gestionnaire. Par défaut, tous les gestionnaires sont également des travailleurs.
Dans un cluster à nœud gestionnaire unique, vous pouvez exécuter des commandes comme docker service create
et le planificateur place toutes les tâches sur le moteur local.
Pour empêcher le planificateur de placer des tâches sur un nœud gestionnaire dans un swarm
multi-nœuds, définissez la disponibilité pour le nœud gestionnaire sur Drain
. Le planificateur
arrête gracieusement les tâches sur les nœuds en mode Drain
et planifie les tâches sur un
nœud Active
. Le planificateur n'assigne pas de nouvelles tâches aux nœuds avec une disponibilité Drain
.
Référez-vous à la référence de la ligne de commande
docker node update
pour voir comment changer la disponibilité d'un nœud.
Changer les rôles
Vous pouvez promouvoir un nœud travailleur pour qu'il soit un gestionnaire en exécutant docker node promote
.
Par exemple, vous pourriez vouloir promouvoir un nœud travailleur lorsque vous
mettez un nœud gestionnaire hors ligne pour maintenance. Voir
node promote.
Vous pouvez également rétrograder un nœud gestionnaire en nœud travailleur. Voir node demote.