Utiliser le rééquilibrage de la capacité pour gérer les interruptions Spot Amazon EC2 - 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.

Utiliser le rééquilibrage de la capacité pour gérer les interruptions Spot Amazon EC2

Vous pouvez configurer Amazon EC2 Auto Scaling de manière à contrôler et à réagir automatiquement aux modifications qui affectent la disponibilité de vos instances Spot. Le Rééquilibrage de capacité vous permet de maintenir la disponibilité de la charge de travail en augmentant de manière proactive votre flotte avec une nouvelle instance Spot avant qu'une instance en cours d'exécution ne soit interrompue par Amazon EC2.

L'objectif du rééquilibrage de la capacité est de continuer à traiter votre charge de travail sans interruption. Lorsque les instances Spot présentent un risque élevé d'interruption, le service Spot Amazon EC2 signale à Amazon EC2 Auto Scaling avec une recommandation de rééquilibrage d'instance EC2.

Lorsque vous activez le rééquilibrage de la capacité pour votre groupe Auto Scaling, Amazon EC2 Auto Scaling tente de remplacer de manière proactive les instances Spot de votre groupe qui ont reçu une recommandation de rééquilibrage. Cela vous permet de rééquilibrer votre charge de travail en de nouvelles instances Spot qui ne présentent pas un risque élevé d'interruption. Votre charge de travail peut continuer à traiter le travail pendant qu'Amazon EC2 Auto Scaling lance de nouvelles instances Spot et avant que vos instances existantes ne soient interrompues.

Si vous n’utilisez pas le rééquilibrage de la capacité, Amazon EC2 Auto Scaling ne remplace les instances Spot qu’après l’interruption du service Spot d’Amazon EC2 et l’échec de la surveillance d’état correspondante. Avant d'interrompre une instance, Amazon EC2 émet toujours une recommandation de rééquilibrage d'instance EC2 et un préavis d'interruption de deux minutes.

Présentation

Pour utiliser le rééquilibrage de la capacité avec votre groupe Auto Scaling, suivez les étapes de base suivantes :

  1. Configurez votre groupe Auto Scaling pour utiliser plusieurs types d’instance et zones de disponibilité. Amazon EC2 Auto Scaling peut ainsi examiner la capacité disponible pour les instances Spot dans chaque zone de disponibilité. Pour plus d’informations, consultez Groupes Auto Scaling combinant plusieurs types d'instances et options d'achat.

  2. Ajoutez des hooks de cycle de vie si nécessaire pour arrêter progressivement votre application dans les instances qui reçoivent la notification de rééquilibrage. Pour plus d’informations, consultez Hooks de cycle de vie Amazon EC2 Auto Scaling.

    Les raisons suivantes expliquent pourquoi vous pouvez utiliser un hook de cycle de vie :

    • Pour un arrêt en douceur des employés Amazon SQS

    • Pour finaliser le désenregistrement depuis le système de noms de domaine (DNS)

    • Pour extraire les journaux système ou les journaux d’application et les charger sur Amazon Simple Storage Service (Amazon S3)

  3. Développez une action personnalisée pour le hook de cycle de vie. Pour invoquer votre action personnalisée dès que possible, vous devez savoir quand une instance est prête à être résiliée. Pour cela, détectez l’état du cycle de vie de l’instance.

    • Pour invoquer une action en dehors de l'instance, rédigez une EventBridge règle et automatisez l'action à entreprendre lorsqu'un modèle d'événement correspond à la règle.

    • Pour invoquer une action dans l’instance, configurez l’instance afin d’exécuter un script d’arrêt et récupérer l’état du cycle de vie grâce aux métadonnées de l’instance.

    Il est essentiel de concevoir l’action personnalisée pour terminer en moins de deux minutes. Cela permet de disposer de suffisamment de temps pour terminer les tâches avant la résiliation de l’instance.

Après avoir effectué ces étapes, vous pouvez commencer à utiliser le rééquilibrage de la capacité.

Comportement de rééquilibrage de la capacité

Avec le rééquilibrage de la capacité, Amazon EC2 Auto Scaling se comporte de la manière suivante lorsqu’une instance reçoit une recommandation de rééquilibrage de la capacité :

  • Lors du lancement d’une nouvelle instance Spot, Amazon EC2 Auto Scaling attend que celle-ci réussisse sa surveillance de l’état avant de résilier l’ancienne instance. Lors du remplacement de plusieurs instances, la résiliation de chacune des anciennes instances commence une fois que la nouvelle instance a été lancée et qu'elle a réussi sa surveillance d'état.

  • Comme Amazon EC2 Auto Scaling tente de lancer de nouvelles instances avant de résilier les anciennes, le fait d'atteindre ou de s'approcher de la capacité maximale spécifiée peut entraver ou stopper les activités de rééquilibrage. Pour contourner ce problème, Amazon EC2 Auto Scaling peut temporairement dépasser la taille maximale du groupe jusqu’à 10 % de la capacité souhaitée.

  • Si vous n’avez pas ajouté un hook de cycle de vie à votre groupe Auto Scaling, Amazon EC2 Auto Scaling commence à résilier les anciennes instances dès que les nouvelles réussissent leur surveillance de l’état.

  • Si vous avez ajouté un hook de cycle de vie, cela prolonge le temps nécessaire avant que nous ne commencions à résilier les instances précédentes en fonction de la valeur de délai que vous avez indiquée pour le hook de cycle de vie.

  • Si vous utilisez des politiques de mise à l’échelle ou une mise à l’échelle planifiée, les activités de mise à l’échelle s’exécutent en parallèle. Si une activité de mise à l'échelle est en cours et que votre groupe Auto Scaling est en dessous de sa nouvelle capacité souhaitée, Amazon EC2 Auto Scaling procède d'abord à la montée en puissance avant de résilier les anciennes instances.

S’il n’y a pas de capacité pour vos types d’instances dans une zone de disponibilité, Amazon EC2 Auto Scaling poursuivra ses tentatives de lancement des instances Spot dans d’autres zones de disponibilité activées jusqu’à ce qu’il y parvienne.

Dans le pire des cas, si le lancement des nouvelles instances échoue, ou si leurs surveillances de l’état échouent, Amazon EC2 Auto Scaling poursuit ses tentatives de lancement. Pendant ce temps, les anciennes finissent par être interrompues et résiliées de force avec un avis d’interruption de deux minutes.

Considérations

Prenez les points suivants en compte lors de l’utilisation du rééquilibrage de capacité :

Concevez votre application de manière à ce qu’elle soit tolérante aux interruptions Spot

Votre application doit être capable de gérer les modifications dynamiques dans le nombre d’instances et la possibilité d’une interruption prématurée d’une instance Spot. Par exemple, si le groupe Auto Scaling se trouve derrière un équilibreur de charge Elastic Load Balancing, Amazon EC2 Auto Scaling attend que l’instance se désenregistre de l’équilibreur de charge avant d’appeler votre hook de cycle de vie. Si le temps nécessaire à l’annulation de l’enregistrement de l’instance et à l’exécution de l’action de cycle de vie complet est trop long, l’instance pourrait être interrompue pendant qu’Amazon EC2 Auto Scaling attend la fin de l’action de cycle de vie pour résilier l’instance.

Amazon EC2 n’est pas toujours capable d’envoyer le signal de recommandation de rééquilibrage avant l’avis d’interruption d’instance Spot de deux minutes. Parfois, le signal de recommandation de rééquilibrage arrive en même temps que l’avis d’interruption de deux minutes. Lorsque cela se produit, Amazon EC2 Auto Scaling appelle le hook de cycle de vie et tente immédiatement de lancer une nouvelle instance Spot.

Éviter un risque élevé d’interruption des instances Spot de remplacement

Vos instances Spot de remplacement peuvent présenter un risque élevé d’interruption si vous utilisez la stratégie d’allocation lowest-price. En effet, nous lançons des instances dans le groupe le moins cher qui dispose de capacités disponibles à ce moment, même si vos instances Spot de remplacement risquent d’être interrompues peu après leur lancement. Pour éviter un risque d’interruption élevé, nous vous recommandons vivement de ne pas utiliser la stratégie d’allocation lowest-price. Nous recommandons plutôt la stratégie d’allocation price-capacity-optimized. Cette stratégie lance des instances Spot de remplacement dans les groupes Spot les moins susceptibles d’être interrompus et dont le prix est le plus bas possible. Elles sont donc moins susceptibles d’être interrompues dans un futur proche.

Amazon EC2 Auto Scaling ne lancera une nouvelle instance que si la disponibilité est identique ou meilleure

L'un des objectifs du rééquilibrage de capacité est d'améliorer la disponibilité d'une instance Spot. Si une instance Spot existante reçoit une recommandation de rééquilibrage, Amazon EC2 Auto Scaling ne lancera une nouvelle instance que si la nouvelle instance offre une disponibilité supérieure ou égale à celle de l'instance existante. Si le risque d'interruption d'une nouvelle instance est plus important que celui de l'instance existante, Amazon EC2 Auto Scaling ne lancera pas de nouvelle instance. Amazon EC2 Auto Scaling continuera toutefois à évaluer les pools de capacité Spot sur la base des informations fournies par le service Amazon EC2 Spot, et lancera une nouvelle instance si la disponibilité s'améliore.

Il est possible que votre instance existante soit interrompue sans qu'Amazon EC2 Auto Scaling ne lance une nouvelle instance de manière proactive. Lorsque cela se produit, Amazon EC2 Auto Scaling essaye de lancer une nouvelle instance dès qu’il recevra l’avis d’interruption de l’instance Spot. Cela se produit indépendamment du fait que la nouvelle instance présente un risque élevé d’interruption.

Le rééquilibrage de capacité n’augmente pas le taux d’interruption de votre instance Spot

Lorsque vous activez le rééquilibrage de la capacité, cette action n'augmente pas votre Taux d'interruption d'instance Spot.(le nombre d'instances Spot qui sont récupérées lorsqu'Amazon EC2 doit récupérer de l'espace. Toutefois, si le rééquilibrage de la capacité détecte une potentielle interruption d'instance, Amazon EC2 Auto Scaling essayera instantanément de lancer une nouvelle instance. Ainsi, un nombre supérieur d’instances pourraient être remplacées, comparativement au scénario où vous attendez qu’Amazon EC2 Auto Scaling lance une nouvelle instance après l’interruption de l’instance à risque.

Bien que vous puissiez remplacer davantage d’instances lorsque le rééquilibrage de la capacité est activé, vous gagnerez davantage à faire preuve de proactivité que de réactivité. Cela vous donne plus de temps pour agir avant que vos instances ne soient interrompues. En général, après un Avis d’interruption d’instance Spot., vous ne disposez que deux minutes pour arrêter correctement votre instance. Comme le rééquilibrage de la capacité lance une nouvelle instance à l’avance, vous donnez aux processus existants de plus grandes chances de se terminer sur votre instance à risque. Vous pouvez également démarrer les procédures d’arrêt de votre instance, empêcher la planification de nouveaux travaux sur votre instance à risque et préparer l’instance nouvellement lancée à prendre le contrôle de l’application. Grâce au remplacement proactif dans le rééquilibrage de la capacité, vous bénéficiez d’une continuité.

L’exemple théorique suivant illustre les risques et les avantages liés au rééquilibrage des capacités :

  • 14 h 00 – Une recommandation de rééquilibrage est reçue pour l’instance A, et Amazon EC2 Auto Scaling essaye instantanément de lancer une instance B de remplacement, ce qui vous laisse le temps de démarrer vos procédures d’arrêt.

  • 14 h 30 – Une recommandation de rééquilibrage est reçue pour l’instance B, remplacée par l’instance C, ce qui vous donne le temps de démarrer vos procédures d’arrêt.

  • 14 h 32 – Si le rééquilibrage de la capacité n’était pas activé, et si un avis d’interruption d’instance Spot avait été reçu à 14 h 32 pour l’instance A, vous n’auriez disposé que de deux minutes pour agir. Cependant, l’instance-A aurait été en cours d’exécution jusqu’à ce moment.