Pourquoi Amazon EC2 Auto Scaling a-t-il résilié une instance ?

Date de la dernière mise à jour : 21/09/2021

Mon groupe Amazon Elastic Compute Cloud (Amazon EC2) Auto Scaling a résilié une instance. Cependant, je ne vois pas de raison de la résiliation sur la console Amazon EC2. Comment savoir pourquoi Amazon EC2 Auto Scaling a résilié mon instance ?

Brève description

Amazon EC2 Auto Scaling utilise les vérifications d'état Amazon EC2 ou Elastic Load Balancing (ELB) pour déterminer l'état d'intégrité d'une instance. Toutes les actions de dimensionnement d'un groupe Auto Scaling, y compris les remplacements de vérification de l'état, sont visibles dans la vue Activity History (Historique des activités) de la console Amazon EC2.

Résolution

Utilisez la description d’instance dans l’affichage Historique des activités pour déterminer les étapes à venir.

Avant de poursuivre, trouvez la description et la cause de la résiliation de l’instance :

  1. Ouvrez la console Amazon EC2.
  2. Dans le panneau de navigation, sous Auto Scaling, choisissez Auto Scaling Groups (Groupes Auto Scaling). Puis, choisissez le groupe de l'instance.
  3. Choisissez la vue Activity History (Historique des activités), puis l’événement de résiliation d’instance.
  4. Notez la Description et la Cause de l’événement de résiliation d’instance.

Reportez-vous aux exemples de description qui suivent pour comprendre les raisons sous-jacentes probables de la résiliation de l’instance :

« Une instance a été mise hors service suite à une vérification de l'état EC2 indiquant qu'elle a été résiliée ou arrêtée »

Détectez les défaillances d’instance ou de système avec les métriques Amazon CloudWatch :

  1. Ouvrez la console Amazon CloudWatch.
  2. Dans le volet de navigation de la console, choisissez Metrics (Métriques), puis la vue All Metrics (Toutes les métriques).
  3. Choisissez EC2 dans le volet des métriques, puis choisissez Per-Instance Metrics (Métriques Par instance).
  4. Saisissez l'instance-id, puis choisissez StatusCheckFailed_Instance, StatusCheckFailed_System ou StatusCheckFailed pour afficher les graphiques des métriques.

Amazon EC2 Auto Scaling résilie les instances arrêtées ou redémarrées. Contrôlez l’historique AWS CloudTrail pour déterminer si un utilisateur a arrêté ou redémarré manuellement l’instance :

  1. Ouvrez la console AWS CloudTrail.
  2. Dans le panneau de navigation, choisissez Event history (Historique des événements).
  3. Vérifiez l'historique pour les appels d'API TerminateInstances, StopInstances ou RebootInstances.

Amazon EC2 Auto Scaling résilie les instances Spot lorsque l'une des situations suivantes se produit :

  • La capacité n'est plus disponible
  • Le prix Spot dépasse le prix maximum spécifié pour les instances

L’historique des activités montrera peut-être que l’instance a été mise hors service en raison de la vérification de l’état. Pour vérifier le motif de résiliation, vérifiez le statut de la demande Spot :

  1. Ouvrez la console Amazon EC2.
  2. Dans le panneau de navigation, sous Instances, sélectionnez Spot Requests (Demandes Spot).
  3. Sélectionnez la demande Spot, choisissez la vue Description , puis notez le Satus (État).

Si le type de vérification de l'état d'un groupe Auto Scaling est défini sur ELB, Amazon EC2 Auto Scaling effectue à la fois des vérifications d'état ELB et EC2. Ensuite, le service résilie les instances qui échouent à l'une ou l'autre des vérifications d'état. Pour comprendre pourquoi une instance a été résiliée :

  1. Ouvrez la console Amazon EC2.
  2. Dans le panneau de navigation sous Auto Scaling, choisissez Auto Scaling Groups (Groupes Auto Scaling), puis choisissez le groupe de l'instance.
  3. Choisissez la vue Details (Détails), puis notez le Health Check Type (Type de vérification de l’état).

« Une instance a été mise hors service suite à une demande utilisateur »

Recherchez dans l'historique des événements CloudTrail, dans la période de mise hors service de l'instance, des appels d'API spécifiques.

  1. Ouvrez la console AWS CloudTrail.
  2. Dans le panneau de navigation, choisissez Event history (Historique des événements).
  3. Recherchez dans l'historique des appels d'API TerminateInstances, TerminateInstanceInAutoScalingGroup ou UpdateAutoScalingGroup

« Une instance a été mise hors service suite à un échec de vérification de l'état du système ELB. »

Pour plus d’informations, consultez Une instance a été arrêtée suite à l'échec d'une vérification de l'état du système ELB.

Si plusieurs équilibreurs de charge sont rattachés à un groupe Auto Scaling, tous les équilibreurs de charge doivent déclarer une instance comme étant saine pour qu'Amazon EC2 Auto Scaling la considère comme saine.

  1. Ouvrez la console Amazon EC2.
  2. Dans le panneau de navigation, sous Load Balancing (Équilibrage de charge), choisissez Load Balancers (Équilibreurs de charge), puis Monitoring (Surveillance).
  3. Sélectionnez la représentation graphique d’une métrique Health Hosts Count (Nombre d'hôtes d'état) pour confirmer que l’instance ne réussit pas les vérifications de l’état.
  4. Dans le panneau de navigation, sous Auto Scaling, choisissez Auto Scaling Groups (Groupes Auto Scaling).
  5. Choisissez le groupe de l'instance, puis la vue Details (Détails).
  6. Notez s'il existe plusieurs équilibreurs de charge attachés sous Load Balancers (Équilibreurs de charge) ou Target Groups (Groupes cible).

Contrôlez l’historique CloudTrail pour déterminer si un processus suspendu a retardé la résiliation d’une instance défectueuse :

  1. Ouvrez la console AWS CloudTrail.
  2. Dans le panneau de navigation, choisissez Event history (Historique des événements).
  3. Vérifiez les appels d’API pour SuspendProcesses et ResumeProcesses.

« Une instance a été mise hors service suite à une vérification de l'état par l'utilisateur »

Vous pouvez définir des vérifications de l’état personnalisées dans Amazon EC2 Auto Scaling. Lorsqu’une vérification de l'état personnalisée détermine qu’une instance n'est pas saine, elle démarre manuellement SetInstanceHealth, puis définit l’état de l’instance sur Unhealthy (Défectueuse). Amazon EC2 Auto Scaling résilie l’instance défectueuse lors de l’exécution suivante.

« Une instance a été lancée pour aider à équilibrer les zones du groupe » ou « Des instances ont été lancées pour équilibrer les instances des zones us-east-1a avec d’autres zones »

Par défaut, Amazon EC2 Auto Scaling équilibre les instances entre les différentes zones de disponibilité. Lorsque vous ajoutez une nouvelle zone de disponibilité à un groupe Auto Scaling, Amazon EC2 Auto Scaling lance une nouvelle instance dans cette zone, et le rééquilibrage peut mettre fin à des instances dans d'autres zones.

"Le 2018-02-12T13:48:46Z, une alarme de surveillance XXX-High-CPU-Utilization (Forte utilisation de l'UC XXX) dans l'état ALARM a déclenché la stratégie AAA-scaledown en faisant passer la capacité souhaitée de 2 à 1"

Amazon EC2 Auto Scaling peut résilier des instances de groupe en réponse à une alarme CloudWatch configurée. Vérifiez les stratégies de groupe et l’historique des alarmes CloudWatch :

Pour contrôler les stratégies de groupe Auto Scaling :

  1. Ouvrez la console Amazon EC2.
  2. Dans le volet de navigation, sous Auto Scaling, choisissez Auto Scaling Groups (Groupes Auto Scaling).
  3. Choisissez le groupe de l’instance.
  4. Choisissez le volet Scaling Policies (Stratégies de mise à l'échelle) pour afficher et modifier les stratégies.

Pour afficher l'historique des alarmes CloudWatch :

  1. Ouvrez la console Amazon CloudWatch.
  2. Dans le panneau de navigation, choisissez Alarms (Alarmes).
  3. Choisissez l’alarme, puis la vue History (Historique).
  4. Dans l'historique, vérifiez les changements d'état de l'alarme ou les modifications de la configuration de l'alarme.

« Le 2018-02-12T13:49:12Z, le remplacement par min : 1, max : 9, souhaité : 1 d'une mise à jour d'action planifiée des contraintes AutoScalingGroup a provoqué le passage de la capacité souhaitée de 2 à 1. [...] »

Vous pouvez configurer des actions planifiées qui modifient la capacité minimale, maximale ou souhaitée d'un groupe Auto Scaling. Lorsque l’opération planifiée réduit la capacité souhaitée, Amazon EC2 Auto Scaling met fin à une ou plusieurs instances pour qu’elle corresponde à la nouvelle capacité.

« Le remplacement par min : 0, max : 2, souhaité : 1 d'une mise à jour de demande utilisateur des contraintes AutoScalingGroup a fait passer la capacité souhaitée de 2 à 1 »

Lorsque vous modifiez manuellement les contraintes d'un groupe Auto Scaling, par exemple en réduisant la capacité souhaitée, Amazon EC2 Auto Scaling peut résilier les instances pour qu'elles correspondent aux nouveaux paramètres.