Pourquoi Amazon EC2 Auto Scaling n’a-t-il pas résilié une instance défectueuse ?

Dernière mise à jour : 20/07/2022

J’ai configuré un groupe Auto Scaling Amazon Elastic Compute Cloud (Amazon EC2), mais il ne résilie pas une instance Amazon EC2 défectueuse. Comment résoudre ce problème ?

Brève description

Amazon EC2 Auto Scaling peut déterminer automatiquement l’état d’une instance en utilisant des contrôles de statut Amazon EC2 et des vérifications de l'état Elastic Load Balancing (ELB). Toutes les opérations de mise à l’échelle du groupe Amazon EC2 Auto Scaling sont consignées dans l’historique des activités de la console Amazon EC2. Il arrive que vous ne puissiez pas trouver la raison pour laquelle Amazon EC2 Auto Scaling n’a pas mis fin à cette instance défectueuse simplement en consultant l’historique des activités.

Vous pouvez alors trouver d’autres détails sur l’état d’une instance défectueuse, et sur la manière de mettre fin à cette dernière en utilisant la console Amazon EC2. Vérifiez les paramètres suivants :

  • Période de grâce de la vérification de l’état
  • Processus suspendus
  • État de l’instance dans la console EC2
  • État de l’instance dans les groupes Auto Scaling
  • Vérifications de l’état ELB

Résolution

Tout d’abord, notez l’état de l’instance dans Amazon EC2 Auto Scaling :

  1. Connectez-vous à la console Amazon EC2. Dans le volet de navigation, sous Auto Scaling, choisissez Groupes Auto Scaling, puis sélectionnez le groupe de l’instance.
  2. Sélectionnez la vue Instances et notez l’état de l’instance.

Période de grâce de la vérification de l'état

Amazon EC2 Auto Scaling ne résilie pas une instance mise en service après les contrôles de statut EC2 et les vérifications d’état ELB avant que la période de grâce de la vérification de l'état ait expiré. Pour connaitre la durée de la période de grâce :

  1. Dans le volet navigation de la console Amazon EC2 sous Auto Scaling, choisissez Groupes Auto Scaling, puis sélectionnez le groupe de l'instance.
  2. Choisissez la vue Détails et notez la durée de la Période de grâce de la vérification de l'état.

Processus suspendus

La suspension de processus tels que HealthCheck, ReplaceUnhealthy ou Terminate affecte la capacité d’Amazon EC2 Auto Scaling à détecter, remplacer ou résilier les instances défectueuses :

  1. Sous Auto Scaling, dans le volet de navigation de la console Amazon EC2, choisissez Groupes Auto Scaling, puis sélectionnez le groupe de l’instance.
  2. Choisissez la vue Détails.
  3. Choisissez Modifier, puis supprimez les processus suivants de la section Processus suspendus s’ils y sont répertoriés : HealthCheck, ReplaceUnhealthy ou Terminate.
  4. Choisissez Enregistrer pour reprendre les processus.

État de l’instance dans la console Amazon EC2

Amazon EC2 Auto Scaling ne met pas immédiatement fin aux instances dont le statut est dégradé. Au lieu de ça, Amazon EC2 Auto Scaling attend quelques minutes pour que l’instance soit rétablie. Pour contrôler si une instance est dégradée :

  1. Dans le volet de navigation de la console Amazon EC2, sous Instances, choisissez Instances, puis sélectionnez l’instance.
  2. Choisissez la vue Contrôles de statut et notez si le statut de l’instance est Dégradé.

Amazon EC2 Auto Scaling peut également retarder ou ne pas mettre fin aux instances qui ne fournissent pas des données pour le contrôle des statuts. Cela se produit généralement lorsque les données sont insuffisantes pour les métriques de vérification d’intégrité dans Amazon CloudWatch. Pour mettre fin manuellement à ces instances :

  1. Dans le volet de navigation de la console Amazon EC2, sous Instances, choisissez Instances, puis sélectionnez l’instance.
  2. Choisissez la vue Surveillance et notez le statut de l’instance.
  3. Si le statut obtenu est Données insuffisantes, choisissez de nouveau l’instance, sélectionnez le menu Actions et choisissez État de l’instance, puis Résilier.

État de l’instance dans le groupe Auto Scaling

Amazon EC2 Auto Scaling n’exécute pas les vérifications d’état sur les instances à l’état Veille. Pour faire passer les instances en Veille à l’état InService (En service) :

  1. Dans le volet de navigation de la console Amazon EC2, sous Groupes Auto Scaling, sélectionnez le groupe de l’instance, puis choisissez la vue Instances.
  2. Choisissez le menu de filtre Tous les états de cycle de vie, puis sélectionnez Veille.
  3. Pour reprendre les surveillances de l’état, ouvrez le menu contextuel (clic droit) pour une instance, puis sélectionnez Régler sur En Service, ce qui permet de quitter l’état de Veille.

Amazon EC2 Auto Scaling attend pour résilier une instance si elle est en attente d’achèvement d’un hook de cycle de vie. Pour trouver le statut de cycle de vie et achever le hook de cycle de vie :

  1. Dans le volet navigation de la console Amazon EC2 sous Auto Scaling, choisissez Groupes Auto Scaling, puis sélectionnez le groupe de l'instance.
  2. Choisissez la vue Instances, notez le statut de cycle de vie de l'instance.
  3. Si le statut est ​​terminating:wait, vous pouvez contrôler le délai de pulsation, puis exécuter la commande completing-lifecycle-action, pour achever le hook de cycle de vie.

Si Amazon EC2 Auto Scaling attend la fin de la période de drainage de connexion ELB, il attend pour résilier l’instance :

  1. Dans le volet navigation de la console Amazon EC2 sous Auto Scaling, choisissez Groupes Auto Scaling, puis sélectionnez le groupe de l'instance.
  2. Sélectionnez la vue Instance et vérifiez que le Cycle de vie de l’instance est En cours de mise hors service.
  3. Choisissez la vue Historique des activités.
  4. Pour Filtre, sélectionnez Attente du drainage de la connexion ELB pour vérifier si le groupe est en attente de la résiliation de l’instance.

Vérifications de l'état de santé ELB

Les paramètres ELB peuvent avoir un impact sur les vérifications et les remplacements d’instance. Notez le statut de l’instance sur la console ELB :

  1. Dans le volet de navigation de la console Amazon EC2, sous Équilibrage de charge, choisissez Équilibreurs de charge, puis sélectionnez l’équilibreur de charge dans lequel l’instance est enregistrée.
  2. Choisissez la vue Instances et notez le statut et la description de l'instance.

Amazon EC2 Auto Scaling n’utilise pas les résultats des vérifications de l'état ELB pour déterminer le statut d’une instance quand la configuration de vérification de l'état du groupe est définie sur EC2. Résultat : Amazon EC2 Auto Scaling ne résilie pas les instances qui échouent aux vérifications d’état ELB. Si un statut d’instance de la console ELB est OutofService (Hors service), mais que le statut de l’instance est Correct sur la console Amazon EC2 Auto Scaling, confirmez que le type de vérification est bien défini sur ELB :

  1. Dans le volet navigation de la console Amazon EC2 sous Auto Scaling, choisissez Groupes Auto Scaling, puis sélectionnez le groupe de l'instance.
  2. Choisissez la vue Détails et notez le Type de vérification de l’état.
  3. Choisissez Modifier, sélectionnez ELB comme Type de surveillance de l’état, puis choisissez Enregistrer.

Si le Type de vérification de l’état est déjà défini sur ELB et si le statut de l’instance de la console ELB est OutofService (hors service), utilisez la description de l’état notée au préalable pour déterminer les opérations suivantes :

  • L’enregistrement de l’instance est toujours en cours : attendez que l’équilibreur de charge achève l’enregistrement de l’instance pour que celle-ci passe à l’état InService (En service).
  • L’instance se trouve dans la zone de disponibilité Amazon EC2 vers laquelle la configuration de l’équilibreur de charge (LoadBalancer) ne permet pas d’acheminer le trafic : modifiez les sous-réseaux du groupe Auto Scaling ou chargez l’équilibreur de charge pour être sûr que ce sont les mêmes que les sous-réseaux de l'instance.
  • L’instance n’a pas réussi le nombre configuré de vérifications d’état de bonne santé (HealthyThreshold) consécutives : attendez qu’ELB ait terminé les vérifications de l’état et que l’instance soit passée à l’état InService.