Échelle de compose docker

Échelle de compose docker
Les conteneurs Docker sont censés être traités comme du bétail, pas des animaux de compagnie. Cela signifie que leur création, leur configuration, leur gestion et leur élimination doivent être automatisées de haut en bas. Nous ne créons pas et ne configurons pas les conteneurs individuels. Nous évanouissons plutôt horizontalement en faisant tourner plus de conteneurs.

La mise à l'échelle horizontale fait référence à la rotation de plus d'ordinateurs, je.E, machines virtuelles, conteneurs ou serveurs physiques afin de répondre à toute augmentation des demandes. Ceci contraste avec la mise à l'échelle 'verticalement', qui fait généralement référence au remplacement d'une machine plus lente (par une mémoire et un stockage plus petites) par un plus rapide 'plus grand' un.

Avec la mise à l'échelle des conteneurs des deux types est devenu très dynamique. Vous pouvez définir des quotas pour des applications spécifiques définissant la quantité de processeur, de mémoire ou de stockage à laquelle ils peuvent avoir accès. Ce quota peut être modifié pour évoluer ou vers le bas si nécessaire. De même, vous pouvez mettre à l'échelle horizontalement en faisant tourner plus de conteneurs qui s'adapteront à une augmentation de la demande, et plus tard en détruisant l'excès de conteneurs que vous avez créés. Si vous utilisez des services hébergés cloud qui vous facturent à l'heure (ou à la minute), cela peut réduire considérablement vos factures d'hébergement.

Dans cet article, nous nous concentrerons uniquement sur la mise à l'échelle horizontale qui n'est pas aussi dynamique que la description ci-dessus, mais c'est un bon point de départ pour quelqu'un qui apprend les bases. Alors commençons.

Échelle via la CLI Docker-Compose

Lorsque vous démarrez votre pile d'application en passant votre fichier de composition à la CLI composer docker vous pouvez utiliser le drapeau -escalader Pour spécifier l'évolutivité d'un service particulier spécifié là-dedans.

Par exemple, pour mon fichier docker-compose:

Version: "3"
prestations de service:
la toile:
Image: "nginx: dernier"
PORTS:
- "80-85: 80"
$ docker-compose up -d --échelle web = 5

Ici, le service s'appelle Web dans la déclaration YML mais il peut être n'importe quel composant individuel de votre déploiement, je.E, Web frontal, base de données, surveillance du démon, etc. La syntaxe générale vous oblige à choisir l'un des éléments dans la section des services de niveau supérieur. En fonction également de votre service, vous devrez peut-être modifier d'autres parties du script. Par exemple, la gamme 80-85 de ports hôtes est donnée pour accueillir 5 instances de conteneurs Nginx qui écoutent tous sur leur port interne 80, mais l'hôte écoute les ports allant de 80 à 85 et redirige le trafic de chaque port unique vers l'un des ports Instances Nginx.

Pour voir quel conteneur obtient le numéro de port où vous pouvez utiliser la commande:

$ docker ps -a
Commande d'image d'ID de conteneur créé
D02E19D1B688 Nginx: Dernier "nginx -g 'démon de…" il y a environ une minute
34b4dd74352d nginx: dernier "nginx -g 'démon de…" il y a environ une minute
98549c0f3dcf nginx: dernier "nginx -g 'démon de…" il y a environ une minute
Noms des ports d'état
Environ une minute 0.0.0.0: 83-> 80 / TCP Project_web_1
Environ une minute 0.0.0.0: 82-> 80 / TCP Project_web_3
Environ une minute 0.0.0.0: 81-> 80 / TCP Project_web_2

Pour mettre à l'échelle plus d'un service, vous devez les mentionner individuellement avec l'indicateur d'échelle et le paramètre de nombre pour vous assurer que le nombre d'instances souhaité est créé. Par exemple, si vous avez deux services différents, vous devez faire quelque chose comme ceci:

$ docker-compose up -d --cale Service1 = 5 - Service à échelle2 = 6

C'est la seule façon de le faire, car vous ne pouvez pas exécuter la commande docker-compose up -Scale deux fois pour chaque service. Cela réduirait le service précédent à un seul conteneur.

Plus tard, nous verrons comment vous pouvez définir la valeur d'échelle pour une image donnée, de l'intérieur du compose docker.YML. Dans le cas où il y a une option d'échelle définie dans le fichier, l'équivalent CLI pour l'option d'échelle remplacera la valeur dans le fichier.

Escalader

Cette option a été ajoutée dans le fichier docker-compose version 2.2 et peut être techniquement utilisé, bien que je ne recommande pas de l'utiliser. Il est mentionné ici pour un bien de l'exhaustivité.

Pour mon docker-compose.Fichier YML:

version 2.2 "
prestations de service:
la toile:
Image: "nginx: dernier"
PORTS:
- "80-85: 80"
Échelle: 3

Ceci est une option parfaitement valable. Bien que cela fonctionne pour le moteur Docker 1.13.0 et plus.

Utiliser des répliques en production

Au lieu d'utiliser la commande d'échelle ou la valeur d'échelle obsolète dans votre fichier de composition, vous devez utiliser la variable de réplique. Il s'agit d'un entier simple associé à un service donné et fonctionne à peu près de la même manière que la variable d'échelle. La différence cruciale est que Docker Swarm est explicitement destiné au système distribué.

Cela signifie que vous pouvez faire déployer votre application sur plusieurs machines virtuelles de nœuds ou serveurs physiques exécutant plusieurs régions différentes et plusieurs centres de données différents. Cela vous permet vraiment de bénéficier de la multitude d'instances de service qui s'exécutent.

Il vous permet d'étendre votre application de haut en bas en modifiant une seule variable en outre, il offre une plus grande résilience contre les temps d'arrêt. Si un centre de données est en panne ou si un lien réseau échoue, les utilisateurs peuvent toujours accéder à l'application car une autre instance s'exécute ailleurs. Si vous diffusez votre déploiement de demande sur plusieurs régions géographiques, E.G, UE, États-Unis et Asie-Pacifique, cela réduira la latence pour les utilisateurs qui essaient d'accéder à votre application à partir de ladite région.

Conclusion

Alors que l'échelle Docker-Compose est utile pour de petits environnements comme un seul hôte Docker en production. Il est également très utile pour les développeurs qui dirigent Docker sur leur poste de travail. Cela peut les aider à tester la façon dont l'application évoluera en production et dans des circonstances différentes. L'utilisation de la commande d'échelle contourne les tracas de la configuration d'un nouvel essaim docker.

Si vous avez une instance d'essaim Docker en cours d'exécution, n'hésitez pas à jouer avec des répliques. Voici la documentation à ce sujet,