Contrôleurs et stratégies de déploiement de service Amazon ECS - Amazon Elastic Container Service

Contrôleurs et stratégies de déploiement de service Amazon ECS

Avant de déployer votre service, déterminez les options de déploiement et les fonctionnalités utilisées par le service.

Stratégie de planification

Deux stratégies de planificateur de service sont disponibles :

  • REPLICA – La stratégie de planification des réplicas place et gère le nombre de tâches souhaité dans votre cluster. Par défaut, le planificateur de service répartit les tâches entre les zones de disponibilité. Vous pouvez utiliser des stratégies et des contraintes de placement des tâches afin de personnaliser la façon dont les tâches sont placées. Pour de plus amples informations, consultez Stratégie de planification de réplica.

  • DAEMON – La stratégie de planification du démon déploie exactement une tâche sur chaque instance de conteneur active qui répond à toutes les contraintes de placement des tâches spécifiées dans votre cluster. Lors de l'utilisation de cette stratégie, il n'est pas nécessaire de spécifier un nombre de tâches souhaité, une stratégie de placement des tâches ou d'utiliser les politiques Service Auto Scaling. Pour de plus amples informations, consultez Stratégie de planification de démon.

    Note

    Les tâches Fargate ne prennent pas en charge la stratégie de planification DAEMON.

Stratégie de planification de réplica

La stratégie de planification de réplica place et gère le nombre de tâches souhaité dans votre cluster.

Pour un service qui exécute des tâches sur Fargate, lorsque le planificateur de service lance de nouvelles tâches ou cesse l'exécution des tâches, le planificateur de service tente de maintenir un équilibre entre les zones de disponibilité de votre service. Vous n'avez pas besoin de préciser les stratégies ou les contraintes de placement des tâches.

Lorsque vous créez un service qui exécute des tâches sur des instances EC2, vous pouvez, si vous le souhaitez, spécifier des stratégies et des contraintes de placement de tâches afin de personnaliser les décisions relatives à cette opération. Si aucune stratégie ou contrainte de placement de tâche n'est spécifiée, le planificateur de service répartit les tâches entre les zones de disponibilité par défaut. Le planificateur de service utilise la logique suivante :

  • Détermine les instances de conteneur de votre cluster susceptibles de prendre en charge la définition de tâche de votre service (par exemple, avec le processeur, la mémoire, les ports et les attributs d'instances de conteneur exigés).

  • Détermine les instances de conteneur qui respectent les contraintes de placement éventuellement définies pour le service.

  • Lorsqu'un service de réplica dépend d'un service démon (par exemple, une tâche de routeur de journaux démon qui doit être exécutée avant que les tâches puissent utiliser la journalisation), créez une contrainte de placement des tâches qui garantit que les tâches du service démon sont placées sur l'instance EC2 avant les tâches du service de réplica. Pour de plus amples informations, consultez Exemple de contraintes de placement de tâche Amazon ECS.

  • Lorsqu'une stratégie de placement est définie, utilisez-la pour sélectionner une instance parmi les candidats restants.

  • Lorsqu'aucune stratégie de placement n'est définie, utilisez la logique suivante pour équilibrer les tâches entre les zones de disponibilité (Availability Zones) de votre cluster :

    • Trie les instances de conteneur valides. Accorde la priorité aux instances ayant le plus petit nombre de tâches en cours d'exécution pour ce service dans leur zone de disponibilité respective. Par exemple, si la zone A comporte une tâche de service en cours d'exécution tandis que les zones B et C n'en ont pas, les instances de conteneur valides des zones B ou C sont considérées comme optimales pour le placement.

    • Place la nouvelle tâche de service sur une instance de conteneur valide dans une zone de disponibilité optimale basée sur les étapes précédentes. Privilégie les instances de conteneur ayant le plus petit nombre de tâches en cours d'exécution pour ce service.

Nous vous recommandons d’utiliser la fonctionnalité de rééquilibrage des services lorsque vous utilisez la stratégie REPLICA, car elle permet de garantir la haute disponibilité de votre service.

Stratégie de planification de démon

La stratégie de planification du démon déploie exactement une tâche sur chaque instance de conteneur active qui répond à toutes les contraintes de placement des tâches spécifiées dans votre cluster. Le planificateur de service évalue les contraintes de placement des tâches pour les tâches en cours d’exécution et arrête les tâches qui ne respectent pas les contraintes de placement. Lorsque vous utilisez cette stratégie, vous n’avez pas besoin de spécifier un nombre souhaité de tâches, une stratégie de placement des tâches ou d’utiliser des politiques Service Auto Scaling.

Amazon ECS réserve des ressources de calcul d'instance de conteneur, y compris le CPU, la mémoire et l'interface réseau pour les tâches de démon. Lorsque vous lancez un service de démon sur un cluster avec d'autres services de réplica, Amazon ECS accorde la priorité à la tâche de démon. Cela signifie que la tâche démon est la première tâche à être lancée sur les instances et la dernière tâche à être arrêtée après l’arrêt de toutes les tâches réplica. Cette stratégie garantit que les ressources ne sont pas utilisées par les tâches de réplica en attente et sont disponibles pour les tâches de démon.

Le planificateur de service du démon ne place aucune tâche sur les instances qui ont un statut DRAINING. Si une instance de conteneur passe au statut DRAINING, les tâches du démon sont arrêtées. Le planificateur de service surveille également l'ajout de nouvelles instances de conteneur à votre cluster et leur ajoute les tâches du démon.

Lorsque vous spécifiez une configuration de déploiement, la valeur du paramètre maximumPercent doit être 100 (spécifiée sous forme de pourcentage), qui est la valeur par défaut utilisée si elle n’est pas définie. La valeur par défaut du paramètre minimumHealthyPercent est 0 (spécifiée sous forme de pourcentage).

Vous devez redémarrer le service lorsque vous modifiez les contraintes de placement pour le service de démon. Amazon ECS met à jour dynamiquement les ressources qui sont réservées sur les instances éligibles pour la tâche démon. Pour les instances existantes, le planificateur tente de placer la tâche sur l'instance.

Un nouveau déploiement démarre lorsqu'il existe une modification de la taille de la tâche ou de la réservation de ressource de conteneur dans la définition de tâche. Un nouveau déploiement démarre également lors de la mise à jour d’un service ou lors de la définition d’une révision différente de la définition de tâche. Amazon ECS récupère les réservations de CPU et de mémoire mises à jour pour le démon, puis bloque cette capacité pour la tâche démon.

Si les ressources sont insuffisantes pour l'un ou l'autre des cas ci-dessus, l'une des situations suivantes se produit :

  • Le placement de la tâche échoue.

  • Un événement CloudWatch est généré.

  • Amazon ECS continue d'essayer de planifier la tâche sur l'instance en attendant que les ressources soient disponibles.

  • Amazon ECS libère toutes les instances réservées qui ne répondent plus aux critères de contrainte de placement et arrête les tâches démon correspondantes.

La stratégie de planification de démon peut être utilisée dans les cas suivants :

  • Exécution de conteneurs d'applications

  • Exécution de conteneurs de support pour les tâches de journalisation, de surveillance et de suivi

Les tâches qui utilisent Fargate ou les types de contrôleur de déploiement CODE_DEPLOY ou EXTERNAL ne prennent pas en charge la stratégie de planification de démon.

Lorsque le planificateur de service arrête d'exécuter les tâches, il tente de conserver un équilibre entre les zones de disponibilité de votre cluster. Le planificateur utilise la logique suivante :

  • Si une stratégie de placement est définie, utilisez cette stratégie pour sélectionner les tâches à résilier. Par exemple, si une stratégie de répartition par zone de disponibilité est définie pour un service, une tâche est sélectionnée, laissant ainsi aux tâches restantes la meilleure répartition.

  • Si aucune stratégie de placement n'est définie, maintenez l'équilibre entre les zones de disponibilité de votre cluster selon la logique suivante :

    • Triez les instances de conteneur valides. Accordez la priorité aux instances ayant le plus grand nombre de tâches en cours d'exécution pour ce service dans leur zone de disponibilité respective. Par exemple, si la zone A comporte une tâche de service en cours d'exécution tandis que les zones B et C en ont chacune deux tâches de service en cours d'exécution, les instances de conteneur des zones B ou C sont considérées comme optimales pour la mise hors service.

    • Arrêtez la tâche sur une instance de conteneur dans une zone de disponibilité optimale basée sur les étapes précédentes. Privilégier les instances de conteneur ayant le plus grand nombre de tâches en cours d'exécution pour ce service.

Contrôleurs de déploiement

Le contrôleur de déploiement est le mécanisme qui détermine la manière dont les tâches sont déployées pour votre service. Les options valides sont :

  • ECS

    Lorsque vous créez un service qui utilise le contrôleur de déploiement ECS, vous pouvez choisir entre les stratégies de déploiement suivantes :

    • ROLLING : lorsque vous démarrez un service qui utilise la stratégie de déploiement Mise à jour propagée (ROLLING), le planificateur de service Amazon ECS remplace les tâches en cours d’exécution par de nouvelles tâches. Le nombre de tâches ajoutées par Amazon ECS au service ou supprimées du service lors d'une mise à jour propagée est contrôlé par la configuration de déploiement du service.

      Les déploiements de mises à jour continues sont les mieux adaptés aux scénarios suivants :

      • Mises à jour progressives du service : vous devez mettre à jour votre service de manière incrémentielle sans mettre l’ensemble du service hors ligne en une seule fois.

      • Besoins en ressources limités : vous souhaitez éviter les coûts supplémentaires liés à l’exploitation simultanée de deux environnements complets (comme l’exigent les déploiements bleu/vert).

      • Durée de déploiement acceptable : votre application peut tolérer un processus de déploiement plus long, car les mises à jour progressives remplacent les tâches une par une.

      • Restauration instantanée non requise : votre service peut tolérer un processus de restauration qui prend quelques minutes au lieu de quelques secondes.

      • Processus de déploiement simple : vous préférez une approche de déploiement simple, sans la complexité liée à la gestion de plusieurs environnements, groupes cibles et écouteurs.

      • Aucun équilibreur de charge requis : votre service n’utilise ni ne nécessite d’équilibreur de charge, d’Application Load Balancer, de Network Load Balancer ou de Service Connect (qui sont requis pour les déploiements bleu/vert).

      • Applications avec état : votre application conserve un état qui rend difficile l’exécution de deux environnements parallèles.

      • Sensibilité aux coûts : vous souhaitez minimiser les coûts de déploiement en évitant d’exécuter des environnements en double pendant le déploiement.

      Les mises à jour propagées constituent la stratégie de déploiement par défaut pour les services et fournissent un équilibre entre la sécurité du déploiement et l’efficacité des ressources pour de nombreux scénarios d’application courants.

    • BLUE_GREEN : une stratégie de déploiement bleu/vert (BLUE_GREEN) est une méthodologie de mise en production qui réduit la durée d’indisponibilité et les risques en exécutant deux environnements de production identiques appelés bleu et vert. Avec les déploiements bleu/vert Amazon ECS, vous pouvez valider les nouvelles révisions de service avant de leur diriger le trafic de production. Cette approche fournit un moyen plus sûr de déployer les modifications avec la possibilité de revenir rapidement en arrière si nécessaire.

      Les déploiements bleu/vert Amazon ECS sont les mieux adaptés aux scénarios suivants :

      • Validation des services : lorsque vous devez valider les nouvelles révisions de service avant de leur diriger le trafic de production.

      • Aucune durée d’indisponibilité : lorsque votre service nécessite des déploiements sans interruption

      • Restauration instantanée : lorsque vous avez besoin de pouvoir restaurer rapidement votre système si des problèmes sont détectés.

      • Exigence relative à l’équilibreur de charge : lorsque votre service utilise Application Load Balancer, Network Load Balancer ou Service Connect.

  • Externe

    Utilisation d’un contrôleur de déploiement tiers.

  • Déploiement bleu/vert (alimenté par AWS CodeDeploy)

    CodeDeploy installe une version mise à jour de l’application en tant que nouveau jeu de tâches de remplacement et redirige le trafic de production du jeu de tâches d’application d’origine vers le jeu de tâches de remplacement. L'ensemble de tâches d'origine est arrêté une fois le déploiement terminé. Utilisez ce contrôleur de déploiement pour vérifier le nouveau déploiement d’un service avant de lui envoyer un trafic de production.