- Expert
- Orchestration avec Swarm
Comment ça marche
docker node update --label-add pgdata=true worker-1 étiquette un nœud ; node.labels.pgdata == true, node.role == worker ou node.hostname != manager-1 sont des contraintes. Si aucun nœud ne correspond, la tâche reste Pending avec no suitable node. placement.preferences répartit les répliques selon une étiquette (zones, baies) ; max_replicas_per_node les plafonne par nœud.
Ce qui casse
Les volumes sont locaux à un nœud. Une base sans contrainte est replanifiée sur un autre nœud quand le sien tombe, démarre sur un nouveau volume vide, et l'application y écrit comme si de rien n'était : les vraies données sont restées sur le nœud mort. Une contrainte échange cette perte silencieuse contre une indisponibilité visible.
Dans un terminal
docker node update --label-add pgdata=true worker-1
# stack.yaml
# db:
# deploy:
# placement:
# constraints:
# - node.labels.pgdata == true
Regarde-le casser, puis répare-le
Écris le Dockerfile ou le fichier compose, tape les commandes docker, et regarde un serveur simulé les exécuter à travers redémarrages, mises à jour et trafic. Gratuit pour commencer.