Passer au contenu

Comment résoudre les problèmes de résiliation d'instances EC2 dans Amazon ECS ?

Lecture de 4 minute(s)
0

Mes instances de conteneur Amazon Elastic Container Service (Amazon ECS) qui s'exécutent sur Amazon Elastic Cloud Compute (Amazon EC2) sont résiliées de manière inattendue.

Résolution

Pour identifier la cause de la résiliation de l'instance, examinez vos événements AWS CloudTrail pour l'appel d'API TerminateInstances. Dans les détails de l'événement, notez la valeur de userAgent pour l'utilisateur ou le rôle AWS Identity and Access Management (IAM) qui a invoqué l'API. Notez également les valeurs de SourceIPaddress, eventTime, errorCode et errorMessage.

En fonction de la cause des problèmes de résiliation de l'instance, effectuez les actions de dépannage suivantes.

Examiner les métriques relatives aux problèmes de vérification de l’état

Vérifiez les paramètres CPUUtilization et StatusCheckFailed_Instance de vos métriques Amazon CloudWatch pour l'instance résiliée. Les anomalies peuvent indiquer des problèmes de performance ou des défauts matériels. Pour plus d'informations, consultez la section Vérifications de statut pour les instances Amazon EC2. Si vous avez activé CloudWatch Container Insights, vérifiez également les métriques de Container Insights.

Consultez les journaux d'instance pour savoir si votre instance dispose d’une connexion réseau, si elle manque de mémoire (Out Of Memory) ou si elle présente d'autres problèmes sous-jacents. Une utilisation élevée des ressources peut entraîner des problèmes de résiliation d'instance. Redimensionnez votre type d'instance de conteneur en fonction des charges de travail requises.

Rechercher d’éventuels problèmes dans l'historique d’Auto Scaling

Consultez l'historique des activités de votre groupe Amazon EC2 Auto Scaling pour vérifier si un événement EC2 Auto Scaling planifié a résilié l'instance. Si une action Auto Scaling inattendue s'est produite, vérifiez votre configuration d’Auto Scaling, vos politiques de mise à l’échelle et vos seuils.

Pour éviter une résiliation inattendue des instances, utilisez une protection contre la résiliation gérée pour conserver les instances de conteneur Amazon ECS qui contiennent des tâches en cours d'exécution.

Vous pouvez également activer la protection contre la résiliation pour vos instances afin d'éviter toute résiliation accidentelle. Si vous avez activé la protection contre la résiliation et que vous rencontrez toujours des problèmes, consultez la section Comment résoudre le paramètre de protection contre la résiliation gérée pour l'erreur du fournisseur de capacité dans Amazon ECS ?

Vérifier les interruptions d’instance Spot

Si vous utilisez des instances Spot pour votre cluster, vérifiez pourquoi votre instance Spot a été résiliée ou interrompue. Déterminez si Amazon EC2 a résilié l'instance Spot. Si Amazon EC2 interrompt votre instance Spot, vous recevez une notification 2 minutes avant l'interruption.

Il est recommandé d'utiliser des instances à la demande pour les applications dont les charges de travail critiques ne peuvent pas être interrompues.

Configurer des moniteurs pour votre instance

Créez des alarmes CloudWatch pour surveiller quand vos instances s'arrêtent, se terminent, redémarrent ou se rétablissent automatiquement afin d'identifier les problèmes de manière proactive. Créez également une alarme CloudWatch pour des métriques importantes comme CPUUtilization, DiskReadOps, DiskWriteOps, NetworkIn ou NetWorkout.

Utilisez Amazon Simple Notification Service (Amazon SNS) et Amazon EventBridge pour recevoir des alertes concernant des changements d'état des instances, tels que des arrêts, des résiliations et des échecs de vérification de l’état. Vous pouvez également créer une alarme qui envoie un e-mail lorsqu'une instance change d'état.

Pour collecter des métriques au niveau du cluster, de l'instance, du service et de la tâche, configurez Container Insights.

Configurer la haute disponibilité

Utilisez des stratégies de placement de tâches, telles que les tâches réparties et groupées, afin de ne pas concentrer un trop grand nombre de tâches sur une seule instance.

Répartissez également vos instances de conteneur dans plusieurs zones de disponibilité afin de réduire les effets d'une résiliation accidentelle d’instances. Pour plus d'informations, consultez les bonnes pratiques en matière de disponibilité d'Amazon ECS.

AWS OFFICIELA mis à jour il y a un an