Comment configurer et gérer des clusters Docker Swarm

DockerBeginner
Pratiquer maintenant

Introduction

Docker Swarm est une solution puissante d'orchestration de conteneurs qui permet aux développeurs de transformer plusieurs hôtes Docker en une infrastructure unifiée et évolutive. Ce tutoriel complet fournit des informations approfondies sur la création, la configuration et la gestion des clusters Docker Swarm, couvrant les concepts essentiels, les types de nœuds, les stratégies de déploiement de services et les meilleures pratiques pour la construction d'environnements conteneurisés robustes.

Notions de base de Docker Swarm

Introduction à Docker Swarm

Docker Swarm est une solution native de clustering et d'orchestration de conteneurs pour les environnements Docker. Elle permet aux développeurs de créer et de gérer un cluster de nœuds Docker, transformant plusieurs hôtes Docker en un seul hôte Docker virtuel.

Concepts fondamentaux

Architecture du cluster Swarm

graph TD A[Gestionnaire Swarm] --> B[Nœud Travailleur 1] A --> C[Nœud Travailleur 2] A --> D[Nœud Travailleur 3]

Types de nœuds Swarm

Type de nœud Description Responsabilités
Nœud Manager Contrôle l'état du cluster Orchestration, Planification
Nœud Travailleur Exécute les charges de travail des conteneurs Exécution des services

Initialisation d'un cluster Swarm

## Initialiser Swarm sur le nœud principal
docker swarm init --advertise-addr 192.168.1.100

## Générer le jeton de connexion pour les nœuds travailleurs
docker swarm join-token worker

## Joindre les nœuds travailleurs au cluster
docker swarm join --token < token > 192.168.1.100:2377

Fonctionnalités clés

  • Conception décentralisée
  • Modèle de service déclaratif
  • Mise à l'échelle et mises à jour incrémentales
  • Découverte de services
    -équilibrage de charge
  • Communication sécurisée

Exemple de déploiement de service

## Créer un service répliqué
docker service create --replicas 3 --name web nginx

## Mettre à l'échelle le service
docker service scale web=5

## Mettre à jour le service
docker service update --image nginx:latest web

Configuration du cluster

Topologie du cluster Swarm

graph TD A[Nœud Manager] --> B[Nœud Travailleur 1] A --> C[Nœud Travailleur 2] A --> D[Nœud Travailleur 3]

Stratégies d'initialisation des nœuds

Configuration du nœud Manager

## Initialiser le cluster Swarm sur le nœud Manager principal
docker swarm init --advertise-addr 192.168.1.100

## Afficher les jetons de connexion au cluster
docker swarm join-token manager
docker swarm join-token worker

Configuration du nœud Travailleur

## Joindre le nœud Travailleur au cluster
docker swarm join \
  --token SWMTKN-1-xxxxxxxxxxxxxxxxxxxxx \
  192.168.1.100:2377

Paramètres de configuration du cluster

Paramètre Description Valeur par défaut
Adresse d'annonce Interface réseau du nœud IP principale
Port d'écoute Port de communication Swarm 2377
Étiquettes de nœud Métadonnées pour la sélection des nœuds Aucune

Configuration avancée du cluster

## Ajouter des étiquettes de nœud personnalisées
docker node update --label-add type=frontend worker1

## Définir la disponibilité du nœud
docker node update --availability drain worker2

Configuration du réseau

## Créer un réseau overlay
docker network create \
  --driver overlay \
  --subnet 10.0.0.0/24 \
  my-network

Gestion des services

Flux de déploiement des services

graph LR A[Créer le service] --> B[Déployer les conteneurs] B --> C[Mettre à l'échelle le service] C --> D[Mettre à jour le service] D --> E[Surveiller les performances]

Création de base de service

## Déployer le service nginx avec 3 répliques
docker service create \
  --name web-service \
  --replicas 3 \
  --publish 80:80 \
  nginx:latest

Options de configuration du service

Option Description Exemple
--replicas Nombre d'instances de conteneurs 3
--update-parallelism Mises à jour simultanées 2
--constraint Règles de placement des nœuds node.labels.type==frontend

Stratégies de mise à l'échelle des services

## Mettre à l'échelle le service dynamiquement
docker service scale web-service=5

## Mise à l'échelle horizontale
docker service update \
  --replicas-max-per-node 2 \
  web-service

Configuration de l'équilibrage de charge

## Créer un service avec un équilibrage de charge personnalisé
docker service create \
  --name api-service \
  --replicas 4 \
  --publish mode=host,target=8080,published=80 \
  --update-delay 10s \
  api-image:latest

Mécanismes de mise à jour des services

## Stratégie de mise à jour progressive
docker service update \
  --image nginx:latest \
  --update-parallelism 2 \
  --update-delay 10s \
  web-service

Surveillance des services

## Lister les services actifs
docker service ls

## Inspecter un service spécifique
docker service ps web-service

Résumé

En maîtrisant Docker Swarm, les développeurs et les administrateurs système peuvent gérer efficacement les applications conteneurisées sur des systèmes distribués. Ce tutoriel présente les techniques clés pour initialiser les clusters, configurer les topologies de nœuds, déployer des services et exploiter des fonctionnalités avancées telles que la découverte de services, l'équilibrage de charge et la communication sécurisée. La compréhension de ces fondements permet aux équipes de construire des infrastructures de conteneurs évolutives, résilientes et offrant une efficacité opérationnelle accrue.