Configurer un groupe Auto Scaling pour utiliser les poids d'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.

Configurer un groupe Auto Scaling pour utiliser les poids d'instance

Lorsque vous utilisez plusieurs types d'instances, vous pouvez spécifier le nombre d'unités à associer à chaque type d'instance, puis spécifier la capacité de votre groupe avec la même unité de mesure. Cette option de spécification de capacité est connue sous le nom de poids.

Par exemple, supposons que vous exécutez une application gourmande en calcul qui fonctionne mieux avec au moins 8 vCPU et 15 Go de RAM. Si vous utilisez c5.2xlarge comme unité de base, l'un des types d'instance EC2 suivants répondrait aux besoins de votre application.

Exemple de types d'instances
Type d’instance vCPU Mémoire (Gio)
c5.2xlarge 8 16
c5.4xlarge 16 32
c5.12xlarge 48 96
c5.18xlarge 72 144
c5.24xlarge 96 192

Par défaut, tous les types d’instances ont le même poids, quelle que soit leur taille. En d’autres termes, quelle que soit la taille du type d’instance lancé par Amazon EC2 Auto Scaling, chaque instance est comptabilisée de la même façon dans la capacité souhaitée du groupe Auto Scaling.

Cependant, avec les pondérations, vous attribuez une valeur numérique qui indique le nombre d'unités à associer à chaque type d'instance. Par exemple, si les instances sont de tailles différentes, une instance c5.2xlarge peut avoir un poids de 2, et une c5.4xlarge (qui est deux fois plus grande) peut avoir un poids de 4, et ainsi de suite. Ensuite, lorsqu’Amazon EC2 Auto Scaling redimensionne le groupe, ces pondérations se traduisent par le nombre d’unités que chaque instance compte pour votre capacité souhaitée.

Les pondérations ne changent pas les types d’instance qu’Amazon EC2 Auto Scaling choisit de lancer ; ce choix revient aux stratégies d’allocation. Pour plus d’informations, consultez Stratégies d’allocation.

Important

Pour configurer un groupe Auto Scaling afin qu’il atteigne la capacité souhaitée en fonction du nombre de vCPU ou de la quantité de mémoire de chaque type d’instance, nous vous recommandons d’utiliser la sélection du type d’instance basée sur les attributs. La définition du DesiredCapacityType paramètre indique automatiquement le nombre d'unités à associer à chaque type d'instance en fonction de la valeur que vous avez définie pour ce paramètre. Pour plus d’informations, consultez Créer un groupe d’instances mixtes en utilisant la sélection du type d’instance basée sur des attributs.

Considérations

Cette section aborde les principales considérations relatives à la mise en œuvre efficace des pondérations.

  • Choisissez quelques types d'instances qui répondent aux besoins de performance de votre application. Déterminez le poids que chaque type d'instance doit prendre en compte dans la capacité souhaitée de votre groupe Auto Scaling en fonction de ses capacités. Ces pondérations s'appliquent aux instances actuelles et futures.

  • Évitez les grandes plages de poids. Par exemple, ne spécifiez pas un poids de 1 pour un type d'instance lorsque le type d'instance le plus important suivant a un poids de 200. La différence entre les pondérations des plus petites et des plus grandes ne doit pas non plus être extrême. Les différences de poids extrêmes peuvent avoir un impact négatif sur l'optimisation des coûts et des performances.

  • Spécifiez la capacité souhaitée du groupe en unités et non en instances. Par exemple, si vous utilisez des pondérations basées sur le processeur virtuel, définissez le nombre de cœurs souhaité ainsi que le minimum et le maximum.

  • Définissez vos pondérations et la capacité souhaitée de sorte que cette dernière soit au moins deux à trois fois supérieure à votre pondération la plus importante.

Lorsque vous mettez à jour des groupes existants, tenez compte des points suivants :

  • Lorsque vous ajoutez des pondérations à un groupe existant, incluez des pondérations pour tous les types d'instances actuellement utilisés.

  • Lorsque vous ajoutez ou modifiez des poids, Amazon EC2 Auto Scaling lance ou arrête des instances pour atteindre la capacité souhaitée en fonction des nouvelles valeurs de pondération.

  • Si vous supprimez un type d'instance, les instances de ce type en cours d'exécution conservent leur dernier poids, même si elles ne sont plus définies.

Comportements de poids des instances

Lorsque vous utilisez des pondérations d’instance, Amazon EC2 Auto Scaling se comporte de la manière suivante :

  • La capacité actuelle sera soit à la capacité désirée, soit au-dessus. La capacité actuelle peut dépasser la capacité souhaitée si les instances lancées dépassent les unités de capacité souhaitées restantes. Supposons que vous spécifiez deux types d'instance c5.2xlarge et c5.12xlarge, et que vous affectez des pondérations d'instance de 2 pour c5.2xlarge et de 12 pour c5.12xlarge. S’il reste cinq unités pour satisfaire la capacité souhaitée, et qu’Amazon EC2 Auto Scaling approvisionne une instance c5.12xlarge, la capacité souhaitée est dépassée de sept unités.

  • Lors du lancement d'instances, Amazon EC2 Auto Scaling donne la priorité à la distribution de la capacité entre les zones de disponibilité et au respect des stratégies d'allocation plutôt qu'au dépassement de la capacité souhaitée.

  • Amazon EC2 Auto Scaling peut dépasser la limite de capacité maximale afin de maintenir l'équilibre entre les zones de disponibilité, en utilisant vos stratégies d'allocation préférées. La limite stricte imposée par Amazon EC2 Auto Scaling est la capacité souhaitée plus votre poids le plus élevé.

Configurer un groupe Auto Scaling pour utiliser des pondérations

Vous pouvez configurer un groupe Auto Scaling afin d’utiliser des pondérations, comme indiqué dans les exemples AWS CLI suivants. Pour des instructions sur l'utilisation de la console, consultez Créer un groupe d’instances mixtes en choisissant manuellement les types d’instances.

Pour configurer un nouveau groupe Auto Scaling afin d’utiliser des pondérations (AWS CLI)

Utilisez la commande create-auto-scaling-group. Par exemple, la commande suivante crée un nouveau groupe Auto Scaling et attribue des pondérations en spécifiant ce qui suit :

  • Pourcentage du groupe à lancer en tant qu'instances à la demande (0)

  • Stratégie d'allocation des instances Spot dans chaque zone de disponibilité (capacity-optimized)

  • Types d'instance à lancer par ordre de priorité (m4.16xlarge, m5.24xlarge)

  • Pondérations d'instance correspondant à la différence de taille relative (vCPU) entre les types d'instance (16, 24)

  • Sous-réseaux dans lesquels lancer les instances (subnet-5ea0c127, subnet-6194ea3b, subnet-c934b782) chacun correspondant à une zone de disponibilité différente

  • Modèle de lancement (my-launch-template) et version du modèle de lancement ($Latest)

aws autoscaling create-auto-scaling-group --cli-input-json file://~/config.json

Le fichier config.json contient le contenu suivant.

{ "AutoScalingGroupName": "my-asg", "MixedInstancesPolicy": { "LaunchTemplate": { "LaunchTemplateSpecification": { "LaunchTemplateName": "my-launch-template", "Version": "$Latest" }, "Overrides": [ { "InstanceType": "m4.16xlarge", "WeightedCapacity": "16" }, { "InstanceType": "m5.24xlarge", "WeightedCapacity": "24" } ] }, "InstancesDistribution": { "OnDemandPercentageAboveBaseCapacity": 0, "SpotAllocationStrategy": "capacity-optimized" } }, "MinSize": 160, "MaxSize": 720, "DesiredCapacity": 480, "VPCZoneIdentifier": "subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782", "Tags": [] }
Pour configurer un groupe Auto Scaling existant afin d’utiliser des pondérations (AWS CLI)

Utilisez la commande update-auto-scaling-group. Par exemple, la commande suivante attribue des pondérations aux types d’instances d’un groupe Auto Scaling existant en spécifiant ce qui suit :

  • Types d'instance à lancer par ordre de priorité (c5.18xlarge, c5.24xlarge, c5.2xlarge, c5.4xlarge)

  • Pondérations d'instance correspondant à la différence de taille relative (vCPU) entre les types d'instance (18, 24, 2, 4)

  • Le nouveau, augmentation de la capacité désirée, qui est plus important que le pondération la plus importante

aws autoscaling update-auto-scaling-group --cli-input-json file://~/config.json

Le fichier config.json contient le contenu suivant.

{ "AutoScalingGroupName": "my-existing-asg", "MixedInstancesPolicy": { "LaunchTemplate": { "Overrides": [ { "InstanceType": "c5.18xlarge", "WeightedCapacity": "18" }, { "InstanceType": "c5.24xlarge", "WeightedCapacity": "24" }, { "InstanceType": "c5.2xlarge", "WeightedCapacity": "2" }, { "InstanceType": "c5.4xlarge", "WeightedCapacity": "4" } ] } }, "MinSize": 0, "MaxSize": 100, "DesiredCapacity": 100 }
Pour vérifier les pondérations à l’aide de la ligne de commande

Utilisez l’une des commandes suivantes :

Exemple de prix Spot par heure d’unité

Le tableau suivant compare le prix horaire des instances Spot dans différentes zones de disponibilité de la région USA Est (Virginie du Nord) avec le prix des instances à la demande dans la même région. Les prix affichés sont des exemples de prix et non des prix en réels. Ce sont vos coûts par heure d'instance.

Exemple : prix Spot par heure d'instance
Type d’instance us-east-1a us-east-1b us-east-1c Tarification à la demande
c5.2xlarge $0.180 $0.191 $0.170 $0.34
c5.4xlarge $0.341 $0.361 $0.318 $0.68
c5.12xlarge $0.779 $0.777 $0.777 $2.04
c5.18xlarge $1.207 $1.475 $1.357 $3.06
c5.24xlarge $1.555 $1.555 $1.555 $4.08

Avec les pondérations d’instance, vous pouvez évaluer vos coûts en fonction de ce que vous utilisez par heure d’unité. Vous pouvez déterminer le prix par heure d'unité en divisant le prix pour un type d'instance par le nombre d'unités qu'il représente. Pour les instances à la demande, le prix par heure d'unité est le même lors du déploiement d'un type d'instance que lors du déploiement d'une taille différente du même type d'instance. Par contre, le prix Spot par heure d'unité varie en fonction du groupe d'instances Spot.

L’exemple suivant montre comment le calcul du prix Spot par unité d’heure fonctionne avec les pondérations d’instance. Pour faciliter le calcul, supposons que vous souhaitez lancer des instances Spot uniquement dans la région us-east-1a. Le prix par heure unitaire est indiqué dans le tableau suivant.

Exemple : prix Spot par heure d'unité
Type d’instance us-east-1a Pondération de l’instance Prix par heure d’unité
c5.2xlarge $0.180 2 $0.090
c5.4xlarge $0.341 4 $0.085
c5.12xlarge $0.779 12 $0.065
c5.18xlarge $1.207 18 $0.067
c5.24xlarge $1.555 24 $0.065