Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Contrôles et stratégies de déploiement des services 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, veuillez consulter Stratégie de planification des répliques. -
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, veuillez consulter Stratégie de planification des démons.Note
Les tâches Fargate ne prennent pas en charge la stratégie de planification
DAEMON
.
Stratégie de planification des répliques
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 EC2 instances, vous pouvez éventuellement définir des stratégies et des contraintes de placement des tâches afin de personnaliser les décisions relatives au placement des tâches. 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éplication dépend d'un service démon (par exemple, une tâche daemon log router 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 daemon sont placées sur l' EC2 instance avant les tâches du service de réplique. Pour de plus amples informations, veuillez consulter Exemple de contraintes de placement de tâches 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 REPLICA
stratégie, car elle permet de garantir la haute disponibilité de votre service.
Stratégie de planification des démons
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 services é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 répondent pas aux contraintes de placement. Lorsque vous utilisez cette stratégie, vous n'avez pas besoin de spécifier le nombre de tâches souhaité, de stratégie de placement des tâches ou d'utiliser les politiques de 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 daemon est la première tâche à être lancée sur les instances et la dernière à s'arrêter une fois que toutes les tâches de réplication ont été arrêtées. 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 maximumPercent
paramètre 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 minimumHealthyPercent
paramètre 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 CloudWatch événement 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 le type de lancement 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 les suivantes :
-
ECS
Lorsque vous créez un service qui utilise le contrôleur de
ECS
déploiement, vous pouvez choisir entre les stratégies de déploiement suivantes :ROLLING
: Lorsque vous créez un service qui utilise la stratégie de déploiement rolling update (ROLLING
), le planificateur de services Amazon ECS remplace les tâches en cours d'exécution par de nouvelles tâches. Le nombre de tâches ajoutées au service ou supprimées du service par Amazon ECS 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 progressivement sans mettre l'ensemble du service hors ligne en une seule fois.
-
Besoins en ressources limités : vous souhaitez éviter les coûts de ressources supplémentaires liés à l'exécution simultanée de deux environnements complets (comme l'exigent les déploiements bleu/vert).
-
Temps de déploiement acceptable : votre application peut tolérer un processus de déploiement plus long, car les mises à jour continues remplacent les tâches une par une.
-
Pas besoin d'annulation instantanée : 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 directe, sans la complexité liée à la gestion de plusieurs environnements, groupes cibles et auditeurs.
-
Aucun équilibreur de charge requis : votre service n'utilise ni n'exige d'équilibreur de charge, d'Application Load Balancer, de Network Load Balancer ou de Service Connect (qui sont nécessaires pour les déploiements). blue/green
-
Applications dynamiques : 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 dupliqués pendant le déploiement.
Les mises à jour continues constituent la stratégie de déploiement par défaut des services et fournissent un équilibre entre la sécurité du déploiement et l'efficacité des ressources pour de nombreux scénarios d'applications courants.
-
BLUE_GREEN
: Une stratégie de déploiement bleu/vert (BLUE_GREEN
) est une méthodologie de publication qui réduit les temps d'arrêt et les risques en exécutant deux environnements de production identiques appelés bleu et vert. Avec les blue/green déploiements Amazon ECS, vous pouvez valider les nouvelles révisions des services avant de diriger le trafic de production vers celles-ci. 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 blue/green déploiements Amazon ECS sont parfaitement adaptés aux scénarios suivants :
-
Validation des services : lorsque vous devez valider de nouvelles révisions de service avant de diriger le trafic de production vers celles-ci
-
Aucun temps d'arrêt : lorsque votre service nécessite des déploiements sans interruption
-
Annulation instantanée : lorsque vous avez besoin de pouvoir revenir rapidement en arrière si des problèmes sont détectés
-
Exigence en matière d'équilibreur de charge : lorsque votre service utilise Application Load Balancer, Network Load Balancer ou Service Connect
-
-
Externe
Utilisez 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 nouvel ensemble de tâches de remplacement et redirige le trafic de production de l'ensemble 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 du trafic de production.