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

Date de la dernière mise à jour : 13/06/2018

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 puis-je corriger cette erreur ?

Brève description

Amazon EC2 Auto Scaling est en mesure de déterminer automatiquement l’état de santé d’une instance à l’aide des vérifications de statut Amazon EC2 et des vérifications de l’état Elastic Load Balancing (ELB). Toutes les actions de mise à l’échelle d’un groupe Auto Scaling d’Amazon EC2 sont consignées dans l’historique des activités sur la console Amazon EC2. Parfois, vous ne pouvez pas déterminer pourquoi Amazon EC2 Auto Scaling n’a pas résilié une instance défectueuse à partir de l’historique des activités uniquement.

Vous trouverez plus de détails sur l’état d’une instance défectueuse et sur la façon de résilier cette instance sur 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

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 Auto Scaling Groups (Groupes Auto Scaling), puis sélectionnez le groupe de l’instance.
  2. Choisissez la vue Instances et notez l’état de santé 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 en fonction des vérifications de statut EC2 et des vérifications de l’état ELB jusqu’à l’expiration de la période de grâce de la vérification de l’état. Pour trouver la durée de la période de grâce :

  1. Dans le volet de navigation de la console Amazon EC2 sous Auto Scaling, choisissez Auto Scaling Groups (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 des instances défectueuses :

  1. Sous Auto Scaling dans le volet de navigation de la console Amazon EC2, choisissez Auto Scaling Groups (Groupes Auto Scaling), puis sélectionnez le groupe de l’instance.
  2. Choisissez la vue Details.
  3. Choisissez Edit (Modifier) et supprimez les processus suivants de Suspended Processes (Processus suspendus), le cas échéant : HealthCheck, ReplaceUnhealthy, ou Terminate.
  4. Choisissez Save (Enregistrer) pour reprendre les processus.

État de l’instance dans la console Amazon EC2

Amazon EC2 Auto Scaling ne résilie pas immédiatement les instances dont le statut est Impaired (Affecté). Au lieu de cela, Amazon EC2 Auto Scaling attend quelques minutes pour que l’instance soit récupérée. Pour vérifier si une instance est affecté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 Status Checks (Vérifications du statut) et notez si le statut de l’instance est Impaired (Affecté).

Amazon EC2 Auto Scaling peut également retarder ou ne pas résilier des instances qui ne parviennent pas à signaler des données pour les vérifications de statut. Cela se produit généralement lorsqu’il y a des données insuffisantes pour les métriques de vérification de statut dans Amazon CloudWatch. Pour résilier ces instances manuellement :

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

État de l’instance dans le groupe Auto Scaling

Amazon EC2 Auto Scaling n’exécute pas de vérifications de l’état pour les instances en veille. Pour rétablir l’état InService (En service) des instances en veille :

  1. Dans le volet de navigation de la console Amazon EC2 sous Auto Scaling Groups (Groupes Auto Scaling), sélectionnez le groupe de l’instance, puis choisissez la vue Instances.
  2. Choisissez le menu de filtre Any Lifecycle State (N’importe quel état de cycle de vie), puis sélectionnez Standby (En veille).
  3. Pour reprendre les vérifications de l’état, ouvrez le menu contextuel (clic droit) d’une instance, puis choisissez Set to InService (Définir sur InService), qui quitte l’état en veille.

Amazon EC2 Auto Scaling attend pour résilier une instance si elle attend la fin d’un hook de cycle de vie. Pour trouver l’état de cycle de vie et terminer le hook du cycle de vie :

  1. Dans le volet de navigation de la console Amazon EC2 sous Auto Scaling, choisissez Auto Scaling Groups (Groupes Auto Scaling), puis sélectionnez le groupe de l’instance.
  2. Choisissez la vue Instances et notez l’état de cycle de vie de l’instance.
  3. Si l’état est terminating:wait, vous pouvez vérifier le délai d’expiration de pulsation, puis exécuter complete-lifecycle-action pour terminer le hook de cycle de vie.

Si Amazon EC2 Auto Scaling attend la fin d’une période Connection Draining ELB, il attend pour résilier l’instance :

  1. Dans le volet de navigation de la console Amazon EC2 sous Auto Scaling, choisissez Auto Scaling Groups (Groupes Auto Scaling), puis sélectionnez le groupe de l’instance.
  2. Choisissez la vue Instances et vérifiez que le cycle de vie de l’instance est défini sur terminating (Résiliation en cours).
  3. Choisissez la vue Historique des activités.
  4. Pour Filter (Filtre), sélectionnez Waiting for ELB connection draining (En attente de Connection Draining ELB) pour confirmer si le groupe attend pour résilier l’instance.

Vérifications de l’état ELB

Les paramètres ELB peuvent affecter les vérifications de l’état et les remplacements d’instance. Notez l’état de l'instance sur la console ELB :

  1. Dans le volet de navigation de la console Amazon EC2 sous Load Balancing (Équilibrage de charge), choisissez Load Balancers (É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 l’état de santé d’une instance lorsque la configuration de vérification de l’état du groupe est définie sur EC2. Par conséquent, Amazon EC2 Auto Scaling ne résilie pas les instances qui échouent aux vérifications de l’état ELB. Si le statut d’une instance est OutofService (Hors service) sur la console ELB, mais que le statut de l’instance est Healthy (Saine) sur la console Auto Scaling d’Amazon EC2, vérifiez que le type de vérification de l’état est défini sur ELB :

  1. Dans le volet de navigation de la console Amazon EC2 sous Auto Scaling, choisissez Auto Scaling Groups (Groupes Auto Scaling), puis sélectionnez le groupe de l’instance.
  2. Choisissez la vue Details (Détails), puis notez le type de vérification de l’état.
  3. Choisissez Edit (Modifier) et sélectionnez ELB pour Health Check Type (Type de vérification de l’état), puis choisissez Save (Enregistrer).

Si le type de vérification de l’état du groupe est déjà défini sur ELB et que le statut de l’instance sur la console ELB est OutofService (Hors service), utilisez la description du statut que vous avez notée précédemment pour déterminer les étapes suivantes :

  • L’enregistrement de l’instance est toujours en cours : attendez que l’équilibreur de charge termine l’enregistrement de l’instance et que l’instance passe à l’état InService (En service).
  • L’instance se trouve dans la zone de disponibilité Amazon EC2 vers laquelle LoadBalancer (l’équilibreur de charge) n’est pas configuré pour acheminer le trafic : modifiez les sous-réseaux du groupe Auto Scaling ou de l’équilibreur de charge pour vous assurer qu’ils sont identiques aux sous-réseaux de l’instance.
  • L’instance n’a pas réussi le nombre consécutif de vérifications de l’état HealthyThreshold (Seuil sain) configuré : attendez qu’ ELB termine les vérifications de l’état et que l’instance passe à l’état InService (En service).