Arrêt en toute sécurité des charges de travail Amazon ECS exécutées sur les instances EC2 - Amazon Elastic Container Service

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.

Arrêt en toute sécurité des charges de travail Amazon ECS exécutées sur les instances EC2

Le drainage d’instance gérée facilite la résiliation progressive des instances Amazon EC2. Cela permet à vos charges de travail de s’arrêter en toute sécurité et d’être reprogrammées vers des instances qui ne sont pas en cours de résiliation. La maintenance et les mises à jour de l’infrastructure sont effectuées sans perturber les charges de travail. En utilisant le drainage d’instance gérée, vous simplifiez les flux de travail de gestion de votre infrastructure qui nécessitent le remplacement des instances Amazon EC2, tout en garantissant la résilience et la disponibilité de vos applications.

Le drainage d’instance gérée Amazon ECS fonctionne avec les remplacements d’instances de groupe Auto Scaling. Sur la base de l’actualisation des instances et de leur durée de vie maximale, les clients peuvent s’assurer qu’ils restent conformes aux dernières réglementations en matière de système d’exploitation et de sécurité en matière de capacité.

Le drainage d’instance gérée ne peut être utilisé qu’avec les fournisseurs de capacité Amazon ECS. Vous pouvez activer le drainage géré des instances lorsque vous créez ou mettez à jour les fournisseurs de capacité de votre groupe Auto Scaling à l'aide de la console Amazon ECS ou du SDK. AWS CLI

Les événements suivants sont couverts par le drainage d’instance gérée Amazon ECS.

  • Actualisation de l’instance du groupe Auto Scaling : utilisez l’actualisation des instances pour effectuer le remplacement progressif de vos instances Amazon EC2 dans votre groupe Auto Scaling au lieu de le faire manuellement par lots. Cette méthode est très utile lorsque vous devez remplacer un grand nombre d’instances. Une actualisation d’instance est lancée via la console Amazon EC2 ou l’API StartInstanceRefresh. Assurez-vous de sélectionner Replace pour la protection contre la réduction horizontale lorsque vous appelez StartInstanceRefresh si vous utilisez une protection contre la résiliation gérée.

  • Durée de vie maximale des instances : vous pouvez définir une durée de vie maximale lorsqu’il s’agit de remplacer les instances du groupe Auto Scaling. Cette méthode est utile pour planifier le remplacement des instances en fonction des politiques de sécurité internes ou de la conformité.

  • Mise à l’échelle du groupe Auto Scaling : sur la base des politiques de mise à l’échelle et des actions de mise à l’échelle planifiées, le groupe Auto Scaling prend en charge la mise à l’échelle automatique des instances. En utilisant un groupe Auto Scaling comme fournisseur de capacité Amazon ECS, vous pouvez intégrer des instances de groupe Auto Scaling lorsqu’aucune tâche n’y est exécutée.

  • Surveillances de l’état du groupe Auto Scaling : le groupe Auto Scaling prend en charge de nombreuses surveillances de l’état pour gérer la résiliation d’instances défectueuses.

  • CloudFormation mises à jour de la pile ‐ Vous pouvez ajouter un UpdatePolicy attribut à votre CloudFormation pile pour effectuer des mises à jour continues lorsque le groupe change.

  • Rééquilibrage de la capacité Spot : le groupe Auto Scaling essaie de remplacer de manière proactive les instances Spot présentant un risque d’interruption plus élevé sur la base de l’évaluation du rééquilibrage de capacité Amazon EC2. Le groupe Auto Scaling résilie l’ancienne instance lorsque la solution de remplacement est lancée et saine. Le drainage d’instance gérée Amazon ECS draine l’instance Spot de la même manière qu’une instance non Spot.

  • Interruption Spot : les instances Spot sont résiliées avec un préavis de deux minutes. Le drainage d’instance gérée Amazon ECS place l’instance en état de drainage en réponse.

Hooks de cycle de vie Amazon EC2 Auto Scaling avec drainage d’instance gérée

Les hooks du cycle de vie du groupe Auto Scaling permettent au client de créer des solutions déclenchées par certains événements du cycle de vie de l’instance et d’effectuer une action personnalisée lorsque cet événement se produit. Un groupe Auto Scaling autorise jusqu’à 50 hooks. Plusieurs hooks de résiliation peuvent exister et être exécutés en parallèle. Le groupe Auto Scaling attend que tous les hooks soient terminés avant de résilier une instance.

En plus de la résiliation de hook gérée par Amazon ECS, vous pouvez également configurer vos propres hooks de résiliation de cycle de vie. Les hooks du cycle de vie ont une default action, et nous vous recommandons de le définir sur continue par défaut pour garantir que les autres hooks, tels que le hook géré par Amazon ECS, ne soient pas affectés par les erreurs provenant des hooks personnalisés.

Si vous avez déjà configuré un hook de fin de cycle de vie de groupe Auto Scaling et que vous avez également activé le drainage d’instance gérée Amazon ECS, les deux hooks de cycle de vie sont exécutés. Les horaires relatifs ne sont toutefois pas garantis. Les hooks du cycle de vie disposent d’un paramètre default action permettant de spécifier l’action à entreprendre lorsque le délai expire. En cas d’échec, nous vous recommandons d’utiliser continue comme résultat par défaut votre hook personnalisé. Cela garantit que les autres hooks, en particulier les hooks gérés par Amazon ECS, ne sont pas affectés par des erreurs dans votre hook de cycle de vie personnalisé. Le résultat alternatif abandon provoque l’ignorance de tous les autres hooks et doit être évité. Pour plus d’informations sur les hooks du cycle de vie des groupes Auto Scaling, consultez la section Hooks du cycle de vie Amazon EC2 Auto Scaling dans le Guide de l’utilisateur Amazon EC2 Auto Scaling.

Tâches et drainage d’instance gérée

Le drainage d’instance gérée Amazon ECS utilise la fonctionnalité de drainage existante présente dans les instances de conteneur. La fonctionnalité de drainage des instances de conteneur remplace et arrête les tâches de réplica appartenant à un service Amazon ECS. Une tâche autonome, telle qu’une tâche invoquée par RunTask, qui est à l’état PENDING ou RUNNING reste inchangée. Vous devez attendre qu’elles soient terminées ou qu’elles soient arrêtées manuellement. L’instance de conteneur reste dans l’état DRAINING jusqu’à ce que toutes les tâches soient arrêtées ou jusqu’à ce que 48 heures se soient écoulées. Les tâches du démon sont les dernières à s’arrêter après l’arrêt de toutes les tâches de réplica.

Drainage d’instance gérée et protection contre la résiliation gérée

Le drainage d’instance gérée fonctionne même si la résiliation gérée est désactivée. Pour plus d’informations sur la protection contre la résiliation gérée, consultez la section Contrôle des instances résiliées par Amazon ECS.

Le tableau suivant récapitule le comportement des différentes combinaisons de résiliation gérée et de drainage géré.

Résiliation gérée Drainage géré Outcome

Activé

Activé Amazon ECS empêche les instances Amazon EC2 qui exécutent des tâches d’être résiliées par des événements de réduction horizontale. Toutes instances en cours de résiliation, telles que celles pour lesquelles la protection contre la résiliation n’est pas définie, celles qui font l’objet d’une interruption Spot ou qui sont forcées par une actualisation de l’instance, sont drainées progressivement.

Désactivé

Activé Amazon ECS ne protège pas les instances Amazon EC2 exécutant des tâches contre la réduction horizontale. Cependant, toutes les instances résiliées sont drainées progressivement.

Activé

Désactivé Amazon ECS empêche les instances Amazon EC2 qui exécutent des tâches d’être résiliées par des événements de réduction horizontale. Cependant, les instances peuvent toujours être résiliées en cas d’interruption Spot ou d’actualisation forcée de l’instance, ou si elles n’exécutent aucune tâche. Amazon ECS n’effectue pas de drainage progressif pour ces instances et lance des tâches de service de remplacement après leur arrêt.

Désactivé

Désactivé Les instances Amazon EC2 peuvent faire l’objet d’une réduction horizontale ou être résiliées à tout moment, même si elles exécutent des tâches Amazon ECS. Amazon ECS lancera les tâches de service de remplacement après leur arrêt.
Drainage d’instance gérée et drainage d’instance Spot

Avec le drainage d’instance Spot, vous pouvez définir une variable d’environnement ECS_ENABLE_SPOT_INSTANCE_DRAINING sur l’agent Amazon ECS permettant à Amazon ECS de placer une instance en état de drainage en réponse à une interruption Spot de deux minutes. Le drainage d’instance gérée Amazon ECS facilite l’arrêt progressif des instances Amazon EC2 en cours de résiliation pour de nombreuses raisons, et pas uniquement pour une interruption Spot. Par exemple, vous pouvez utiliser le rééquilibrage de capacité d’Amazon EC2 Auto Scaling pour remplacer de manière proactive une instance Spot en cas de risque élevé d’interruption, et le drainage d’instance gérée permet d’arrêter progressivement l’instance Spot remplacée. Lorsque vous utilisez le drainage d’instance gérée, il n’est pas nécessaire d’activer le drainage d’instance Spot séparément. Par conséquent, la spécification de ECS_ENABLE_SPOT_INSTANCE_DRAINING dans les données utilisateur du groupe Auto Scaling est redondant. Pour plus d’informations sur les instances Spot, consultez la section Instances Spot.

Comment fonctionne le drainage géré des instances avec EventBridge

Les événements de vidange des instances gérées par Amazon ECS sont publiés sur Amazon EventBridge, et Amazon ECS crée une règle EventBridge gérée dans le bus par défaut de votre compte pour prendre en charge le drainage des instances gérées. Vous pouvez filtrer ces événements vers d'autres AWS services tels que Lambda, Amazon SNS et Amazon SQS à des fins de surveillance et de résolution des problèmes.

  • Amazon EC2 Auto Scaling envoie un événement EventBridge lorsqu'un hook du cycle de vie est invoqué.

  • Les avis d'interruption ponctuelle sont publiés à EventBridge.

  • Amazon ECS génère des messages d'erreur que vous pouvez récupérer via la console Amazon ECS et APIs.

  • EventBridge comporte des mécanismes de réessai intégrés pour atténuer les défaillances temporaires.

Résolution des problèmes liés au drainage d’instance gérée Amazon ECS

Il se peut que vous deviez résoudre les problèmes liés au drainage d’instance gérée. Vous trouverez ci-dessous un exemple de problème et de résolution que vous pourriez rencontrer lors de son utilisation.

Les instances ne s’arrêtent pas après avoir dépassé leur durée de vie maximale lors de l’utilisation de l’autoscaling.

Si vos instances ne s’arrêtent pas même après avoir atteint ou dépassé la durée de vie maximale lors de l’utilisation d’un groupe Auto Scaling, c’est peut-être parce qu’elles sont protégées contre la réduction horizontale. Vous pouvez désactiver la gestion de la résiliation et autoriser le drainage géré pour gérer le recyclage des instances.

Comportement du drainage pour les instances gérées Amazon ECS

La résiliation des instances gérées Amazon ECS garantit des transitions de charge de travail harmonieuses tout en optimisant les coûts et en préservant l'intégrité du système. Le système de résiliation offre trois voies décisionnelles distinctes pour la résiliation d’instance, chacune présentant des caractéristiques différentes en termes de délais et d’impact sur le client.

Voies de décision en matière de résiliation

Résiliation initiée par le client

Permet de contrôler directement la suppression des instances lorsque vous devez immédiatement retirer des instances de conteneur du service. Vous appelez l' DeregisterContainerInstance API avec l'indicateur de force défini sur true, ce qui indique qu'une résiliation immédiate est requise malgré les charges de travail en cours.

Résiliation initiée par le système en cas d’inactivité

Amazon ECS Managed Instances surveille en permanence et optimise les coûts de manière proactive en mettant fin aux instances de conteneur Amazon ECS inactives qui n'exécutent aucune tâche. ECS utilise un délai heuristique pour donner aux instances de conteneur la possibilité d'acquérir des tâches nouvellement lancées avant d'être interrompues. Cela peut être personnalisé à l'aide du paramètre de configuration du fournisseur de capacité scaleInAfter Amazon ECS Managed Instances.

Résiliation provoquée par l’actualisation de l’infrastructure

Amazon ECS Managed Instances gère et met à jour automatiquement le logiciel sur les instances de conteneur gérées afin de garantir la sécurité et la conformité tout en préservant la disponibilité de la charge de travail. Pour plus d'informations, consultez la section relative aux correctifs dans les instances gérées Amazon ECS.

Drainage progressif et migration de la charge de travail

Le système de drainage progressif met en œuvre une coordination sophistiquée avec la gestion des services Amazon ECS afin de garantir que les tâches gérées par les services sont correctement migrées hors des instances dont l’arrêt est prévu.

Coordination du drainage des tâches de service

Lorsqu’une instance passe à l’état DRAINAGE, le planificateur Amazon ECS arrête automatiquement de placer de nouvelles tâches sur l’instance tout en mettant en œuvre des procédures d’arrêt progressif pour les tâches de service existantes. Le drainage des tâches de service inclut la coordination avec les stratégies de déploiement de service, les exigences en matière de surveillance de l’état et vos préférences en matière de drainage, afin de garantir un calendrier de migration et des taux de réussite optimaux.

Gestion autonome des tâches

Les tâches autonomes nécessitent un traitement différent, car elles ne bénéficient pas de la gestion automatique des services. Le système évalue les caractéristiques des tâches autonomes, notamment les estimations de durée des tâches, l’analyse des probabilités d’achèvement et l’évaluation de l’impact sur le client. La stratégie d’exécution progressive permet aux tâches autonomes de s’exécuter naturellement pendant une période de grâce prolongée, tandis que la résiliation forcée garantit que l’actualisation de l’infrastructure se produit dans des délais acceptables lorsque les tâches ne se sont pas résiliées naturellement.

Stratégie de réalisation en deux phases

Le système de résiliation met en œuvre une approche en deux phases qui équilibre la continuité de la charge de travail avec les exigences de gestion de l’infrastructure.

Phase 1 : période d’achèvement progressif

Au cours de cette phase, le système met en œuvre des stratégies de drainage progressif qui privilégient la continuité de la charge de travail. Les tâches de service sont progressivement drainées par le biais des processus de planification habituels d’Amazon ECS, les tâches autonomes continuent de s’exécuter et peuvent se terminer naturellement, et le système surveille que toutes les tâches atteignent l’état d’arrêt grâce à des processus d’achèvement naturels.

Phase 2 : application stricte des délais

Lorsque l’achèvement progressif ne permet pas d’atteindre les objectifs de résiliation dans des délais acceptables, le système met en œuvre une application stricte des délais. Le délai strict est généralement fixé à la date de début du drainage plus sept jours, ce qui laisse suffisamment de temps pour mener à bien l’opération tout en respectant les exigences opérationnelles. L’application de ce délai comprend l’invocation automatique des procédures de désinscription forcée et l’arrêt immédiat de toutes les tâches restantes, quel que soit le statut d’achèvement.