Remplacer les volumes racines lors de l'actualisation de l'instance - Amazon EC2 Auto Scaling

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Remplacer les volumes racines lors de l'actualisation de l'instance

Comment ça marche

Le remplacement du volume racine met à jour vos instances en remplaçant uniquement le volume EBS racine tout en maintenant l'instance en cours d'exécution. Cela élimine le besoin de lancer de nouvelles instances et évite d'éventuelles contraintes de capacité. Ce processus préserve toutes les autres ressources de l'instance, notamment :

  • Interfaces réseau et adresses IP

  • Volumes EBS autres que root

  • Volumes et données de stockage d'instance

  • Groupes de sécurité et rôles IAM

Pendant le remplacement du volume racine, votre application continue de s'exécuter sur l'instance existante. Le volume racine d'origine est détaché, un nouveau volume racine est créé à partir de l'AMI que vous avez spécifiée, puis attaché à la même instance. Les volumes racine d'origine sont automatiquement supprimés après un remplacement réussi.

Lorsque vous utilisez la stratégie de remplacement du volume racine, les instances passent par les états de cycle de vie suivants :

  1. ReplacingRootVolume- Le remplacement du volume racine commence

  2. ReplacingRootVolume:Wait- Attend la fin du cycle de vie du hook (si configuré)

  3. ReplacingRootVolume:Proceed- Procède du remplacement

  4. RootVolumeReplaced- Le remplacement a été effectué avec succès

Une fois le remplacement du volume racine terminé, Auto Scaling effectue des contrôles de santé sur les instances mises à jour. Si le remplacement du volume racine échoue pour une instance, Auto Scaling marque cette instance pour arrêt et la remplace par une nouvelle instance.

Exigences

  • Votre groupe Auto Scaling doit utiliser une politique d'instances mixtes

  • Toutes les dérogations prévues dans la politique des instances mixtes doivent spécifier un ImageId

  • AMIs ne doit contenir qu'un seul volume racine

  • Toutes les instances doivent correspondre à la configuration du modèle de lancement du groupe

  • Vous devez démarrer l'actualisation de l'instance avec la configuration souhaitée comportant une politique d'instances mixtes contenant des ImageId remplacements.

Lancer une actualisation d'instance avec Replace Root Volume

Pour démarrer l'actualisation d'une instance avec Replace Root Volume (AWS CLI)

Utilisez la start-instance-refreshcommande suivante pour démarrer une actualisation d'instance à partir du AWS CLI. Vous pouvez spécifier les préférences que vous souhaitez modifier dans un fichier de configuration JSON. Lorsque vous référencez le fichier de configuration, indiquez le chemin d'accès et le nom du fichier comme indiqué dans l'exemple suivant.

aws autoscaling start-instance-refresh --cli-input-json file://config.json

Contenu de config.json :

Exemple
{ "AutoScalingGroupName": "my-asg", "Strategy" : "ReplaceRootVolume", "DesiredConfiguration":{ "MixedInstancesPolicy":{ "LaunchTemplate": { "LaunchTemplateSpecification": { "LaunchTemplateId":"my-launch-template", "Version": "1" }, "Overrides": [ { "InstanceType":"c5.large", "ImageId":"ami-1234example" }, { "InstanceType":"m5.large", "ImageId":"ami-2345example" } ] } } }, "Preferences": { "InstanceWarmup": 60, "MinHealthyPercentage": 90, "AutoRollback": true, "ScaleInProtectedInstances": Ignore, "StandbyInstances": Ignore } }

Si les préférences ne sont pas fournies, les valeurs par défaut sont utilisées. Pour de plus amples informations, veuillez consulter Comprendre les valeurs par défaut d'une actualisation d'instance.

Exemple de sortie :

{ "InstanceRefreshId": "08b91cf7-8fa6-48af-b6a6-d227f40f1b9b" }

Limitations

  • Vous ne pouvez pas démarrer une actualisation d'instance avec Replace Root Volume si le groupe EC2 Auto Scaling ou la configuration d'actualisation d'instance souhaitée utilise $Latest la version $Default ou le modèle de lancement.

  • Vous ne pouvez pas démarrer une actualisation d'instance avec Replace Root Volume sur un groupe Amazon EC2 Auto Scaling s'il contient des instances dont le type d'instance n'est pas présent dans la politique relative aux instances mixtes.

  • Lors d'une actualisation d'instance avec Replace Root Volume, vous ne pouvez associer que des instances dont les types sont présents dans la politique d'instances mixtes de la configuration souhaitée.

  • Vous ne pouvez pas démarrer une actualisation d'instance avec Replace Root Volume sur un groupe EC2 Auto Scaling doté d'un pool de chaleur.

  • Vous ne pouvez pas ajouter un pool de chaleur à un groupe Amazon EC2 Auto Scaling dont l'instance est actualisée activement avec Replace Root Volume.

Utilisez des hooks de cycle de vie pour remplacer le volume racine

Les instances en cours de remplacement du volume racine suivent leurs propres transitions de cycle de vie, ce qui vous permet d'invoquer des actions (par exemple, une fonction Lambda) avant and/or le remplacement. Pour plus d'informations sur les états du cycle de vie lors du remplacement du volume racine, consultezTransitions d'état du cycle de vie pour les instances en cours de remplacement du volume racine.

Pour plus d'informations sur l'ajout d'un hook de cycle de vie, consultez Ajoutez des hooks de cycle de vie à votre groupe Auto Scaling. Pour plus d'informations sur l'exécution d'une action de cycle de vie, consultez Réaliser une action du cycle de vie dans un groupe Auto Scaling.

Avant le remplacement du volume racine, un hook du cycle de vie peut être utile dans les scénarios suivants :

  • Vous souhaitez arrêter correctement votre application avant que le volume racine ne soit remplacé et que l'instance ne soit redémarrée.

  • Vous souhaitez déplacer les données du volume racine vers un autre emplacement avant que le volume ne soit remplacé.

Après le remplacement du volume racine, un hook de cycle de vie peut être utile dans les scénarios suivants :

  • Vous souhaitez vérifier que votre instance est entièrement prête avec la nouvelle AMI avant qu'elle ne commence à recevoir du trafic.

  • Vous souhaitez amorcer des données d'application qui existaient auparavant sur le volume racine.

Lorsque vous ajoutez des hooks de cycle de vie, tenez compte des éléments suivants :

  • Lorsqu'un hook du cycle de vie est configuré pour l'action autoscaling:EC2_INSTANCE_TERMINATING du cycle de vie, une instance sur le point de subir le remplacement du volume racine fait une pause pour effectuer une action personnalisée lorsqu'elle atteint ReplacingRootVolume:Wait cet état.

  • Lorsqu'un hook de cycle de vie est configuré pour l'action autoscaling:EC2_INSTANCE_LAUNCHING du cycle de vie, une instance dont le volume racine vient d'être remplacé fait une pause pour exécuter une action personnalisée lorsqu'elle atteint Pending:Wait cet état.

Lorsque les instances atteignent un état d'attente, Amazon EC2 Auto Scaling envoie une notification. Les notifications relatives au cycle de vie d'Auto Scaling contiennent un Action champ dont la valeur ReplaceRootVolume indique que l'instance est en cours de remplacement du volume racine.

Des exemples de ces notifications sont disponibles dans la EventBridge section de ce guide. Pour de plus amples informations, veuillez consulter Actualisation des instances : remplacement des événements du cycle de vie du volume racine.