CodeGym /Cours /Docker SELF /Mise à l'échelle des services

Mise à l'échelle des services

Docker SELF
Niveau 16 , Leçon 2
Disponible

8.1 Commande docker compose scale

La mise à l'échelle des services, c'est le processus d'augmentation ou de diminution du nombre d'instances de conteneurs qui exécutent le même service, afin de gérer la charge et d'assurer la résilience de l'application. Dans Docker Compose, pour mettre à l'échelle les services, on utilise la commande docker compose scale (dans les anciennes versions) ou le paramètre --scale dans les nouvelles versions.

Concepts principaux de mise à l'échelle :

  1. Extensibilité : La capacité à augmenter ou réduire facilement le nombre d'instances d'un service en fonction de la charge actuelle.
  2. Résilience : L'exécution de plusieurs instances d'un service permet d'assurer la résilience, car une défaillance d'une instance ne conduit pas à l'arrêt complet du service.
  3. Répartition de la charge : La distribution de la charge entre plusieurs instances d'un service pour optimiser les performances.

Utilisation de la commande docker compose scale

Syntaxe de la commande :


docker compose scale SERVICE=NUM

Où :

  • SERVICE : le nom du service à mettre à l'échelle.
  • NUM : le nombre d'instances qui doivent être exécutées.

Exemple d'utilisation :

Supposons que vous avez un fichier compose.yaml avec la définition du service web.

Yaml

version: '3.8'

services:
  web:
    image: nginx:latest
    ports:
      - "80:80"

Pour démarrer 3 instances du service web, utilisez la commande :

Terminal

docker compose scale web=3

Remarque : Avant d'exécuter la commande docker compose scale, assurez-vous que les services sont démarrés avec la commande docker compose up.

Utilisation du paramètre --scale dans les nouvelles versions

Dans les nouvelles versions de Docker Compose, la commande docker compose scale a été remplacée par le paramètre --scale, utilisé conjointement avec la commande up.

Terminal

docker compose up --scale web=3

Cette approche est préférable, car elle permet de démarrer et de mettre à l'échelle les services en même temps.

8.2 Exemples pratiques

Exemple 1 : Mise à l'échelle du serveur web

Créez un fichier compose.yaml :

Yaml

version: '3.8'

services:
  web:
    image: nginx:latest
    ports:
      - "80-90:80"

Lance et mets à l'échelle le service jusqu'à 3 instances :

Terminal

docker compose up --scale web=3

Maintenant, tu auras 3 instances du serveur web Nginx fonctionnant sur des ports dans la plage 80-90.

Important ! Si le service prévoit une mise à l'échelle sur plusieurs instances, il est nécessaire d'indiquer une plage de ports, par exemple : "80-90:80". Cela « réservera » sur la machine hôte une plage de 10 ports. Lors de l'ajout d'une réplique du service, un port de la plage lui sera attribué. Si cela n'est pas fait, les ports seront choisis au hasard et les répliques deviendront inaccessibles.

Exemple 2 : Mise à l'échelle avec une base de données

Créez un fichier compose.yaml :

Yaml

version: '3.8'

services:
  web:
    image: nginx:latest
    ports:
      - "80-90:80"
    depends_on:
      - db

  db:
    image: postgres:latest
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password

Lance et mets à l'échelle le service web jusqu'à 4 instances :

Terminal

docker compose up --scale web=4

Maintenant, tu auras 4 instances du serveur web Nginx fonctionnant avec une seule base de données PostgreSQL.

8.3 Gestion des services évolutifs

Après avoir mis à l'échelle les services, tu peux utiliser les commandes Docker Compose pour gérer les instances.

Afficher les conteneurs en cours d'exécution

Utilise la commande docker compose ps pour afficher tous les conteneurs en cours d'exécution :

Terminal

docker compose ps

Arrêter et supprimer les services évolutifs

Pour arrêter et supprimer toutes les instances d'un service, utilise la commande docker compose down :

Terminal

docker compose down

Conseils et astuces :

  1. Répartition de charge : utilise des load balancers pour distribuer le trafic entre plusieurs instances d'un service. Par exemple, tu peux utiliser Nginx ou HAProxy pour cette tâche.
  2. Conservation des données : assure-toi que les données générées par les services évolutifs sont sauvegardées dans des volumes ou des stockages externes afin d'éviter toute perte en cas d'arrêt ou de suppression de conteneurs.
  3. Surveillance : utilise des outils de monitoring comme Prometheus ou Grafana pour suivre les performances et l'état des services évolutifs.
  4. Mise à l'échelle automatique : envisage la possibilité de mettre automatiquement à l'échelle les services en fonction de la charge avec des orchestrateurs tels que Kubernetes ou Docker Swarm.
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION