Comment puis-je mettre à jour correctement mon groupe Auto Scaling lorsque je mets à jour ma pile AWS CloudFormation ?

Date de la dernière mise à jour : 11/03/2020

J'ai apporté des mises à jour à mon groupe Auto Scaling, mais je n'ai pas obtenu les résultats attendus lors d'une mise à jour de pile AWS CloudFormation.

Brève description

La ressource AWS::AutoScaling::AutoScalingGroup utilise l' attribut UpdatePolicy pour définir la façon dont une ressource de groupe Auto Scaling est mise à jour lorsque la pile AWS CloudFormation est mise à jour. Si vous ne disposez pas des paramètres corrects configurés pour l'attribut UpdatePolicy votre mise à jour continue peut produire des résultats inattendus.

Vous pouvez utiliser la stratégie AutoScalingRollingUpdate pour contrôler la façon dont AWS CloudFormation gère les mises à jour continues pour un groupe Auto Scaling. Cette approche courante conserve le même groupe Auto Scaling, puis remplace les anciennes instances en fonction des paramètres que vous définissez.

Remarque : la résolution suivante se concentre uniquement sur la stratégie AutoScalingRollingUpdate. Vous pouvez utiliser la stratégie AutoScalingReplacingUpdate pour restaurer immédiatement la pile sans échec.

La stratégie AutoScalingRollingUpdate prend en charge les options de configuration suivantes :

"UpdatePolicy": {
  "AutoScalingRollingUpdate": {
    "MaxBatchSize": Integer,
    "MinInstancesInService": Integer,
    "MinSuccessfulInstancesPercent": Integer,
    "PauseTime": String,
    "SuspendProcesses": [ List of processes ],
    "WaitOnResourceSignals": Boolean
  }
}

Solution

Pour découvrir ce qui empêche la bonne mise à jour de votre groupe Auto Scaling lors d'une mise à jour de la pile, parcourez les scénarios de dépannage suivants si nécessaire :

Configurez WaitOnResourceSignals et PauseTime pour éviter les problèmes avec les signaux de réussite

Dans votre stratégie AutoScalingRollingUpdate définissez la propriété WaitOnResourceSignals sur false.

Remarque : si WaitOnResourceSignals est défini sur true, PauseTime passe à une valeur de délai d'expiration. AWS CloudFormation attend de recevoir un signal de réussite jusqu'à la durée maximale spécifiée par la valeur PauseTime. Si aucun signal n'est reçu, AWS CloudFormation annule la mise à jour. Ensuite, AWS CloudFormation restaure la pile avec les mêmes paramètres, y compris la même valeur PauseTime. Pour plus d'informations, consultez Ajout d'un attribut UpdatePolicy à un groupe Auto Scaling.

Configurer MinSuccessfulInstancesPercent pour éviter la restauration de la pile

Si vous remplacez un grand nombre d'instances au cours d'une mise à jour continue et que vous attendez un signal de réussite pour chaque instance, définissez la valeur de la propriété MinSuccessfulInstancesPercent dans votre stratégie AutoScalingRollingUpdate.

Remarque : la définition de la propriété MinSuccessfulInstancesPercent empêche AWS CloudFormation de rétablir la totalité de la pile si le lancement d'une seule instance échoue. Pour plus d'informations, consultez Attribut UpdatePolicy.

Configurer SuspendProcesses pour éviter les modifications inattendues apportées au groupe Auto Scaling

Lors d'une mise à jour continue, suspendez les processus Auto Scaling suivants :

  • Vérification de l'état
  • ReplaceUnhealthy
  • AZRebalance
  • AlarmNotification
  • ScheduledActions

Important : si vous utilisez votre groupe Auto Scaling avec Elastic Load Balancing, ne suspendez pas les processus suivants : Launch, Terminate et AddToLoadBalancer. Ces processus sont requis pour effectuer des mises à jour continues.

Remarque : si une action de dimensionnement inattendue modifie l'état du groupe Auto Scaling pendant une mise à jour continue, la mise à jour peut échouer. L'échec peut résulter d'une vue incohérente du groupe Auto Scaling par AWS CloudFormation.


Cet article vous a-t-il été utile ?

Cette page peut-elle être améliorée ?


Vous avez besoin d’aide ?