Bonnes pratiques relatives à Amazon EC2 Spot - Amazon Elastic Compute Cloud

Bonnes pratiques relatives à Amazon EC2 Spot

Amazon EC2 permet d’accéder à la capacité de calcul EC2 disponible par le AWS Cloud biais d’instances Spot, avec des économies pouvant aller jusqu’à 90 % par rapport aux prix à la demande. La seule différence entre les instances à la demande et les instances Spot est que les instances Spot peuvent être interrompues par Amazon EC2, avec un préavis de deux minutes, si Amazon EC2 a besoin de récupérer la capacité. Pour garantir une expérience optimale avec les instances Spot, il est important de comprendre et d’appliquer les meilleures pratiques relatives à leur utilisation.

Les instances Spot sont recommandés pour les applications flexibles sans état, tolérantes aux pannes. Par exemple, instances Spot fonctionne bien pour le Big Data, les charges de travail conteneurisées, les CI/CD, les serveurs Web sans état, le calcul haute performance (HPC) et les charges de travail de rendu.

En cours d’exécution, les instances Spot sont exactement les mêmes que instances à la demande. Toutefois, Spot ne garantit pas que vous pouvez conserver vos instances en cours d’exécution suffisamment longtemps pour terminer vos charges de travail. Spot ne garantit pas non plus que vous pouvez obtenir la disponibilité immédiate des instances que vous recherchez, ou que vous pouvez toujours obtenir la capacité globale que vous avez demandée. De plus, les interruptions et la capacité des instances Spot peuvent changer au fil du temps, car leur disponibilité varie en fonction de l’offre et de la demande, et les performances passées ne sont pas une garantie de résultats futurs.

Les instances Spot ne conviennent pas aux charges de travail inflexibles, dynamiques, intolérantes aux pannes ou étroitement couplées entre des nœuds d’instance. Nous ne recommandons pas les instances Spot pour les charges de travail qui ne tolèrent pas les périodes occasionnelles pendant lesquelles la capacité cible n’est pas entièrement disponible. Bien que le respect des meilleures pratiques Spot en matière de flexibilité en ce qui concerne les types d’instances et les zones de disponibilité donne les meilleures chances d’obtenir une haute disponibilité, rien ne garantit que la capacité sera disponible, car l’augmentation de la demande d’instances à la demande peut perturber les charges de travail sur les instances ponctuelles.

Il est fortement déconseillé d’utiliser des instances Spot pour ces charges de travail ou d’essayer de basculer sur des instances à la demande pour gérer les interruptions ou les périodes d’indisponibilité. Le passage à des instances à la demande peut entraîner des interruptions par inadvertance pour vos autres instances Spot. En outre, si les instances Spot correspondant à une combinaison de type d’instance et de zone de disponibilité sont interrompues, il peut s’avérer difficile pour vous d’obtenir des instances à la demande avec cette même combinaison.

Que vous soyez un utilisateur Spot expérimenté ou un nouvel utilisateur des instances Spot, si vous rencontrez actuellement des problèmes avec les interruptions ou la disponibilité des instances Spot, nous vous recommandons de suivre ces bonnes pratiques pour bénéficier de la meilleure expérience d’utilisation du service Spot.

Préparer des instances individuelles pour les interruptions

La meilleure façon pour vous de gérer fluidement les interruptions d’instance Spot consiste à concevoir votre application pour qu’elle soit tolérante aux pannes. Pour ce faire, vous pouvez tirer parti des recommandations de rééquilibrage d’instance EC2 et des avis d’interruption d’instance Spot.

Le signal de recommandation de rééquilibrage d’instance EC2 vous permet d’être averti lorsqu’une instance Spot présente un risque élevé d’interruption. Le signal vous donne la possibilité de gérer de manière proactive l’instance Spot avant son avis d’interruption à deux minutes. Vous pouvez décider de rééquilibrer votre charge de travail en une instances Spot nouvelle ou existante qui ne présente pas un risque élevé d’interruption. Nous vous avons facilité l’utilisation de ce signal en utilisant la fonctionnalité de rééquilibrage de capacité dans les groupes Auto Scaling et la flotte d’EC2.

Un avis d’interruption d’instance Spot est un avertissement émis deux minutes avant qu’Amazon EC2 l’interrompe. Si votre charge de travail est « flexible dans le temps », vous pouvez configurer vos instances Spot pour qu’elles soient arrêtées ou mises en veille prolongée plutôt que résiliées lorsqu’elles sont interrompues. Amazon EC2 arrête ou met en veille automatiquement vos instances Spot lors de l’interruption et reprend automatiquement les instances lorsque nous disposons de la capacité disponible.

Nous vous recommandons de créer une règle dans Amazon EventBridge qui capture les notifications d’interruption et les recommandations de rééquilibrage, puis déclenche un point de contrôle pour la progression de votre charge de travail ou gère l’interruption de manière gracieuse. Pour plus d’informations, consultez Surveiller les signaux de recommandation de rééquilibrage. Pour obtenir un exemple détaillé qui vous explique comment créer et utiliser des règles d’événement, consultez Tirer parti des avis d’interruption d’instance Spot Amazon EC2.

Pour plus d’informations, consultez Recommandations de rééquilibrage des instances EC2 et Interruptions d’instance Spot.

Soyez flexible en ce qui concerne les types d’instance et les zones de disponibilité

Un groupe de capacités Spot est un ensemble d’instances EC2 inutilisées avec le même type d’instance (par exemple, m5.large) et la même zone de disponibilité (par exemple, us-east-1a). Vous devez être flexible quant aux types d’instance que vous demandez et aux zones de disponibilité dans lesquelles vous pouvez déployer votre charge de travail. Cela donne à Spot une meilleure chance de trouver et d’allouer la quantité requise de capacité de calcul. Par exemple, ne demandez pas simplement c5.large si vous seriez prêt à utiliser des larges des familles c4, m5 et m4.

En fonction de vos besoins spécifiques, vous pouvez évaluer les types d’instance que vous pouvez utiliser pour répondre à vos besoins de calcul. Si une charge de travail peut être mise à l’échelle verticale, vous devez inclure des types d’instance plus importants (plus de vCPU et de mémoire) dans vos requêtes. Si vous ne pouvez évoluer qu’horizontalement, vous devez inclure des types d’instance de génération plus ancienne car ils sont moins demandés par les clients à la demande.

Une bonne règle générale est d’être flexible sur au moins 10 types d’instance pour chaque charge de travail. En outre, assurez-vous que toutes les zones de disponibilité sont configurées pour être utilisées dans votre VPC et sélectionnées pour votre charge de travail.

Utilisation d’une sélection de type d’instance basée sur des attributs

Grâce à la sélection de type d’instance basée sur les attributs, vous pouvez préciser les attributs de l’instance, tels que les vCPU, la mémoire et le stockage, pour la charge de travail que vous souhaitez exécuter. EC2 autoscaling ou EC2 flotte identifiera et lancera automatiquement les instances qui correspondent aux attributs que vous avez précisés. Cela élimine l’effort requis pour sélectionner manuellement des types d’instance spécifiques, ce qui nécessite une compréhension approfondie de l’offre de chaque type d’instance.

En outre, la sélection des types d’instance basée sur les attributs vous permet d’utiliser automatiquement les nouveaux types d’instance dès qu’ils sont disponibles. Cela garantit un accès sans faille à une gamme de plus en plus large de capacités d’instances Spot.

La sélection de type d’instance basée sur les attributs est idéale pour les charges de travail et les cadres qui peuvent être flexibles quant aux types d’instance sur lesquels ils s’exécutent, tels que les charges de travail de calcul haute performance (HPC) et de big data.

Pour plus d’informations, consultez la section Créer un groupe d’instances mixtes à l’aide de la sélection de type d’instance basée sur les attributs dans le Guide de l’utilisateur Amazon EC2 autoscaling et Spécifiez des attributs pour la sélection de type d’instance pour la flotte EC dans ce guide.

Utilisez les scores de placement Spot pour identifier les régions et les zones de disponibilité optimales

Les instances Spot sont des capacités EC2 inutilisées, et cette capacité varie en fonction de l’offre et de la demande EC2. Par conséquent, il se peut que vous n’obteniez pas toujours la capacité Spot exacte dont vous avez besoin à un endroit et à un moment précis. Pour atténuer cette imprévisibilité, vous pouvez utiliser la fonctionnalité de score de placement Spot. Cette fonctionnalité fournit des recommandations pour les régions ou les zones de disponibilité les plus susceptibles de disposer d’une capacité suffisante pour répondre à vos besoins en matière de capacité Spot, sans que vous ayez à lancer d’abord des instances Spot dans ces zones.

Il est préférable d’utiliser le score de placement Spot pour les charges de travail qui peuvent être flexibles quant aux types d’instances et à la région ou à la zone de disponibilité qu’elles peuvent utiliser. Il vous suffit de préciser la capacité Spot dont vous avez besoin, les exigences relatives au type d’instance et si vous souhaitez des recommandations pour les régions ou les zones de disponibilité. En contrepartie, vous recevez une note allant de 1 à 10 pour chaque région ou zone de disponibilité, indiquant la probabilité de provisionner avec succès la capacité Spot que vous avez demandée dans cet endroit. Un score de 10 indique que votre demande de Spot a de fortes chances d’aboutir.

Il est important de noter qu’un score de placement Spot est une recommandation ponctuelle, car la capacité peut évoluer dans le temps. La capacité disponible n’est pas garantie et le risque d’interruption n’est pas prévisible.

Vous pouvez utiliser la fonctionnalité de score de placement Spot dans la console Amazon EC2, AWS CLI, ou un SDK. Pour en savoir plus, consultez Score de placement Spot.

Utiliser les groupes Auto Scaling EC2 ou la flotte d’EC2 pour gérer votre capacité agrégée

Spot vous permet de penser en termes de capacité agrégée, dans des unités comprenant des vCPUs, de la mémoire, du stockage ou du débit réseau, plutôt que de penser en termes d’instances individuelles. Les groupes Auto Scaling et la flotte d’EC2 vous permettent de lancer et de gérer une capacité cible, et de demander automatiquement des ressources pour remplacer celles qui sont interrompues ou résiliées manuellement. Lorsque vous configurez un groupe Auto Scaling ou une flotte d’EC2, il vous suffit de spécifier les types d’instance et la capacité cible en fonction des besoins de votre application. Pour plus d’informations, consultez la section Groupes Auto Scaling du Amazon EC2 Auto Scaling Guide de l’utilisateur et la section Créer une flotte EC2 de ce guide de l’utilisateur.

Utiliser la stratégie d’allocation optimisée pour le prix et la capacité

Les stratégies d’allocation dans les groupes Auto Scaling vous aident à provisionner votre capacité cible sans avoir à rechercher manuellement des groupes de capacités Spot avec une capacité de réserve. Nous vous recommandons d’utiliser la stratégie price-capacity-optimized, car elle alloue automatiquement les instances des groupes de capacités Spot les plus disponibles qui présentent également le prix le plus bas. Vous pouvez également profiter de la stratégie d’allocation price-capacity-optimized dans la flotte d’EC2. Étant donné que votre capacité d’instance Spot provient de pools avec une capacité optimale, cela réduit la possibilité que vos instances Spot soient demandées. Pour plus d’informations sur les stratégies d’allocation, consultez Instances Spot dans le Amazon EC2 Auto Scaling Guide de l’utilisateur et Lorsque les charges de travail ont un coût d’interruption élevé dans ce guide de l’utilisateur.

Utiliser des services AWS intégrés pour gérer vos instances Spot

D’autres services AWS s’intègrent à Spot pour réduire les coûts de calcul globaux sans avoir à gérer les instances individuelles ou les flottes. Nous vous recommandons d’envisager les solutions suivantes pour vos charges de travail applicables : Amazon EMR, Amazon Elastic Container Service, AWS Batch, Amazon Elastic Kubernetes Service, Amazon SageMaker IA, AWS Elastic Beanstalk et Amazon GameLift. Pour plus d’informations sur les meilleures pratiques Spot avec ces services, consultez le site Web sur les ateliers Amazon EC2 instances Spot.

Quelle est la meilleure méthode de demande Spot à utiliser ?

Utilisez le tableau suivant pour déterminer quelle API utiliser pour les demandes d’instances Spot.

API Quand l’utiliser ? Cas d’utilisation Devrais-je utiliser cette API ?

CreateAutoScalingGroup

  • Vous avez besoin de plusieurs instances avec une configuration unique ou une configuration mixte.

  • Vous voulez automatiser la gestion du cycle de vie via une API configurable.

Créez un groupe Auto Scaling qui gère le cycle de vie de vos instances tout en gardant le nombre d’instances souhaité. Prend en charge la mise à l’échelle horizontale (ajout d’instances supplémentaires) entre les limites minimale et maximale spécifiées.

Oui
CreateFleet
  • Vous avez besoin de plusieurs instances avec une configuration unique ou une configuration mixte.

  • Vous voulez gérer vous-même le cycle de vie de vos instances.

  • Si vous n’avez pas besoin de scalabilité automatique, nous vous recommandons d’utiliser une flotte de type instant.

Créez une flotte d’instances à la demande et d’instances Spot dans une seule demande, avec plusieurs spécifications de lancement qui varient selon le type d’instance, l’AMI, la zone de disponibilité ou le sous-réseau. La stratégie d’allocation d’instances Spot est définie par défaut sur lowest-price par unité, mais vous pouvez la modifier en price-capacity-optimized, capacity-optimized ou diversified.

Oui – en mode instant si vous n’avez pas besoin de scalabilité automatique

RunInstances
  • Vous utilisez déjà l’API RunInstances pour lancer des instances à la demande, et vous voulez simplement passer au lancement d’instances Spot en modifiant un seul paramètre.

  • Vous n’avez pas besoin de plusieurs instances avec des types d’instance différents.

Lancez un nombre spécifié d’instances en utilisant un AMI et un type d’instance.

Non – parce que RunInstances n’autorise pas les types d’instance mixtes dans une seule demande

RequestSpotFleet
  • Nous déconseillons fortement l’utilisation de l’API RequestSpotFleet car il s’agit d’une API héritée qui ne fait l’objet d’aucun investissement prévu.

  • Si vous voulez gérer le cycle de vie de votre instance, utilisez l’API CreateFleet.

  • Si vous ne voulez pas gérer le cycle de vie de votre instance, utilisez l’API CreateAutoScalingGroup.

NE PAS UTILISER. RequestSpotFleet est une API héritée qui ne fait l’objet d’aucun investissement prévu.

Non
RequestSpotInstances
  • Nous déconseillons fortement l’utilisation de l’API RequestSpotInstances car il s’agit d’une API héritée qui ne fait l’objet d’aucun investissement prévu.

NE PAS UTILISER. RequestSpotInstances est une API hérité qui ne fait l’objet d’aucun investissement prévu.

Non