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.
Tutoriel : Configurer la scalabilité automatique pour gérer une charge de travail importante
Dans ce tutoriel, vous apprendrez comment effectuer une mise à l'échelle horizontale en fonction des fenêtres de temps où votre application aura une charge de travail plus importante que la normale. Ceci est utile lorsque vous avez une application qui peut soudainement avoir un grand nombre de visiteurs sur une base régulière ou saisonnière.
Vous pouvez utiliser une politique de suivi des cibles et d'échelonnement avec la mise à l'échelle planifiée pour gérer la charge supplémentaire. La mise à l'échelle planifiée initie automatiquement les changements de votre MinCapacity
et MaxCapacity
en votre nom, en fonction d'une planification que vous spécifiez. Lorsqu'une politique de suivi des cibles et d'échelonnement est active sur la ressource, elle peut être mise à l'échelle de façon dynamique en fonction de l'utilisation actuelle de la ressource, dans la nouvelle plage de capacité minimale et maximale.
Après avoir terminé ce tutoriel, vous saurez comment :
-
Utiliser la mise à l'échelle planifiée pour ajouter une capacité supplémentaire afin de répondre à une charge importante avant qu'elle n'arrive, puis retirer la capacité supplémentaire lorsqu'elle n'est plus nécessaire.
-
Utilisez une politique de suivi des cibles et d'échelonnement pour mettre à l'échelle votre application en fonction de l'utilisation actuelle des ressources.
Table des matières
Prérequis
Le didacticiel présume que vous avez déjà effectué les étapes suivantes :
-
A créé un Compte AWS.
-
A installé et configuré le AWS CLI.
-
Vous avez obtenu les autorisations nécessaires pour enregistrer et désenregistrer les ressources en tant que cibles évolutives avec Application Auto Scaling. En outre, a accordé les autorisations nécessaires pour créer des politiques de dimensionnement et des actions planifiées. Pour de plus amples informations, veuillez consulter Gestion des identités et des accès pour Application Auto Scaling.
-
Création d'une ressource prise en charge dans un environnement hors production disponible pour ce didacticiel. Si vous n'en avez pas déjà, créez-en un dès maintenant. Pour obtenir des informations sur les services et ressources AWS qui fonctionnent avec Application Auto Scaling, consultez la section Services AWS que vous pouvez utiliser avec Application Auto Scaling.
Note
Au cours de ce tutoriel, il y a deux étapes dans lesquelles vous définissez les valeurs de capacité minimale et maximale de votre ressource sur 0 pour réinitialiser la capacité actuelle à 0. Selon la ressource que vous utilisez avec Application Auto Scaling, il se peut que vous ne puissiez pas réinitialiser la capacité actuelle à 0 pendant ces étapes. Pour vous aider à résoudre le problème, un message dans la sortie indiquera que la capacité minimale ne peut pas être inférieure à la valeur spécifiée et indiquera la valeur de capacité minimale que la AWS ressource peut accepter.
Étape 1 : Enregistrer votre cible évolutive
Commencez par enregistrer votre ressource en tant que cible évolutive avec Application Auto Scaling. Une cible évolutive est une ressource qu'Application Auto Scaling peut augmenter et diminuer.
Pour enregistrer votre cible évolutive avec Application Auto Scaling
-
Utilisez la register-scalable-target
commande suivante pour enregistrer une nouvelle cible évolutive. Définissez les valeurs --min-capacity
et--max-capacity
à 0 pour réinitialiser la capacité actuelle à 0.Remplacer l'exemple de texte pour
--service-namespace
avec l'espace de nom du service AWS que vous utilisez avec Application Auto Scaling,--scalable-dimension
avec la dimension évolutive associée à la ressource que vous enregistrez et--resource-id
avec un identifiant pour la ressource. Ces valeurs varient en fonction de la ressource utilisée et de la manière dont l'ID de ressource est construit. Consultez les rubriques dans la section Services AWS que vous pouvez utiliser avec Application Auto Scaling pour plus d'informations. Ces rubriques incluent des exemples de commandes qui vous montrent comment enregistrer des cibles évolutives avec Application Auto Scaling.Linux, macOS ou Unix
aws application-autoscaling register-scalable-target \ --service-namespace
namespace
\ --scalable-dimensiondimension
\ --resource-ididentifier
\ --min-capacity 0 --max-capacity 0Windows
aws application-autoscaling register-scalable-target --service-namespace
namespace
--scalable-dimensiondimension
--resource-ididentifier
--min-capacity 0 --max-capacity 0En cas de réussite, cette commande renvoie l'ARN de la cible évolutive.
{ "ScalableTargetARN": "arn:aws:application-autoscaling:
region
:account-id
:scalable-target/1234abcd56ab78cd901ef1234567890ab123" }
Étape 2 : Configurer les actions planifiées en fonction de vos besoins
Vous pouvez utiliser la put-scheduled-action
Pour créer une action planifiée augmente la capacité le matin
-
Pour augmenter la taille de la cible évolutive, utilisez la put-scheduled-action
commande suivante. Incluez le paramètre --schedule
avec une planification récurrente, en UTC, en utilisant une expression cron.Selon la planification spécifiée (tous les jours à 9 h 00 UTC), Application Auto Scaling met à jour les valeurs
MinCapacity
etMaxCapacity
dans la plage souhaitée de 1 à 5 unités de capacité.Linux, macOS ou Unix
aws application-autoscaling put-scheduled-action \ --service-namespace
namespace
\ --scalable-dimensiondimension
\ --resource-ididentifier
\ --scheduled-action-namemy-first-scheduled-action
\ --schedule "cron(0 9 * * ? *
)" \ --scalable-target-action MinCapacity=1
,MaxCapacity=5
Windows
aws application-autoscaling put-scheduled-action --service-namespace
namespace
--scalable-dimensiondimension
--resource-ididentifier
--scheduled-action-namemy-first-scheduled-action
--schedule "cron(0 9 * * ? *
)" --scalable-target-action MinCapacity=1
,MaxCapacity=5
Cette commande ne renvoie pas de sortie lorsqu'elle aboutit.
-
Pour vérifier que l'action planifiée existe, utilisez la describe-scheduled-actions
commande suivante. Linux, macOS ou Unix
aws application-autoscaling describe-scheduled-actions \ --service-namespace
namespace
\ --query 'ScheduledActions[?ResourceId==`identifier
`]'Windows
aws application-autoscaling describe-scheduled-actions --service-namespace
namespace
--query "ScheduledActions[?ResourceId==`identifier
`]"Voici un exemple de sortie.
[ { "ScheduledActionName": "my-first-scheduled-action", "ScheduledActionARN": "
arn
", "Schedule": "cron(0 9 * * ? *)", "ScalableTargetAction": { "MinCapacity": 1, "MaxCapacity": 5 }, ... } ]
Pour créer une action planifiée qui diminue la capacité la nuit
-
Répétez la procédure précédente pour créer une autre action planifiée que Application Auto Scaling utilise pour effectuer une diminution de capacité en fin de journée.
Selon le calendrier spécifié (tous les jours à 20 h 00 UTC), Application Auto Scaling met à jour le
MinCapacity
and de la cibleMaxCapacity
à 0, comme indiqué dans la put-scheduled-actioncommande suivante. Linux, macOS ou Unix
aws application-autoscaling put-scheduled-action \ --service-namespace
namespace
\ --scalable-dimensiondimension
\ --resource-ididentifier
\ --scheduled-action-namemy-second-scheduled-action
\ --schedule "cron(0 20 * * ? *
)" \ --scalable-target-action MinCapacity=0
,MaxCapacity=0
Windows
aws application-autoscaling put-scheduled-action --service-namespace
namespace
--scalable-dimensiondimension
--resource-ididentifier
--scheduled-action-namemy-second-scheduled-action
--schedule "cron(0 20 * * ? *
)" --scalable-target-action MinCapacity=0
,MaxCapacity=0
-
Pour vérifier que l'action planifiée existe, utilisez la describe-scheduled-actions
commande suivante. Linux, macOS ou Unix
aws application-autoscaling describe-scheduled-actions \ --service-namespace
namespace
\ --query 'ScheduledActions[?ResourceId==`identifier
`]'Windows
aws application-autoscaling describe-scheduled-actions --service-namespace
namespace
--query "ScheduledActions[?ResourceId==`identifier
`]"Voici un exemple de sortie.
[ { "ScheduledActionName": "my-first-scheduled-action", "ScheduledActionARN": "
arn
", "Schedule": "cron(0 9 * * ? *)", "ScalableTargetAction": { "MinCapacity": 1, "MaxCapacity": 5 }, ... }, { "ScheduledActionName": "my-second-scheduled-action", "ScheduledActionARN": "arn
", "Schedule": "cron(0 20 * * ? *)", "ScalableTargetAction": { "MinCapacity": 0, "MaxCapacity": 0 }, ... } ]
Étape 3 : Ajouter une politique de suivi des cibles et d'échelonnement
Maintenant que vous avez mis en place la planification de base, ajoutez une politique de suivi des cibles et d'échelonnement afin de mettre à l'échelle en fonction de l'utilisation actuelle des ressources.
Avec le suivi de cible, Application Auto Scaling compare la valeur cible de la politique à la valeur actuelle de la métrique spécifiée. Lorsqu'elles sont inégales pendant un certain temps, Application Auto Scaling ajoute ou retire de la capacité pour maintenir des performances stables. Lorsque la charge de votre application et la valeur métrique augmentent, Application Auto Scaling ajoute de la capacité aussi vite que possible sans dépasser MaxCapacity
. Lorsque Application Auto Scaling supprime de la capacité parce que la charge est minimale, elle le fait sans dépasser MinCapacity
. En ajustant la capacité en fonction de l'utilisation, vous ne payez que ce dont votre application a besoin.
Si la métrique ne contient pas suffisamment de données parce que votre application n'a pas de charge, Application Auto Scaling n'ajoute ni ne supprime de capacité. Autrement dit, Application Auto Scaling donne la priorité à la disponibilité dans les situations où il n'y a pas assez d'informations disponibles.
Vous pouvez ajouter plusieurs politiques de mise à l'échelle, mais veillez à ne pas ajouter des politiques de mise à l'échelle par étapes conflictuelles qui pourraient entraîner un comportement indésirable. Par exemple, si la politique de mise à l'échelle par étapes lance une activité de mise à l'échelle horizontale avant que la politique de suivi des objectifs et d'échelonnement ne soit prête pour la mise à l'échelle horizontale, l'activité de mise à l'échelle horizontale ne sera pas bloquée. Une fois l'activité de diminution de capacité terminée, la politique de suivi de cible peut demander à Application Auto Scaling de procéder de nouveau à une augmentation de capacité.
Pour créer une politique de suivi des objectifs et d'échelonnement
-
Utilisez la commande put-scaling-policy
suivante pour créer la politique. Les métriques les plus fréquemment utilisées pour le suivi des cibles sont prédéfinies, et vous pouvez les utiliser sans fournir la spécification complète de la métrique depuis CloudWatch. Pour plus d'informations sur les métriques prédéfinies disponibles, consultez Politique de suivi des cibles et d'échelonnement pour Application Auto Scaling.
Avant d'exécuter cette commande, assurez-vous que votre métrique prédéfinie attend la valeur cible. Par exemple, pour une montée en puissance lorsque le CPU atteint une utilisation de 50 %, spécifiez une valeur cible de 50,0. Ou, pour augmenter la concurrence allouée à Lambda lorsque l'utilisation atteint 70 %, spécifiez une valeur cible de 0,7. Pour plus d'informations sur les valeurs cibles pour une ressource particulière, reportez-vous à la documentation fournie par le service sur la façon de configurer le suivi de cible. Pour de plus amples informations, veuillez consulter Services AWS que vous pouvez utiliser avec Application Auto Scaling.
Linux, macOS ou Unix
aws application-autoscaling put-scaling-policy \ --service-namespace
namespace
\ --scalable-dimensiondimension
\ --resource-ididentifier
\ --policy-namemy-scaling-policy
--policy-type TargetTrackingScaling \ --target-tracking-scaling-policy-configuration '{ "TargetValue":50.0
, "PredefinedMetricSpecification": { "PredefinedMetricType": "predefinedmetric
" }}'Windows
aws application-autoscaling put-scaling-policy --service-namespace
namespace
--scalable-dimensiondimension
--resource-ididentifier
--policy-namemy-scaling-policy
--policy-type TargetTrackingScaling --target-tracking-scaling-policy-configuration "{ \"TargetValue\":50.0
, \"PredefinedMetricSpecification\": { \"PredefinedMetricType\": \"predefinedmetric
\" }}"En cas de succès, cette commande renvoie les noms ARNs et des deux CloudWatch alarmes créées en votre nom.
-
Pour vérifier que l'action planifiée existe, utilisez la describe-scaling-policies
commande suivante. Linux, macOS ou Unix
aws application-autoscaling describe-scaling-policies --service-namespace
namespace
\ --query 'ScalingPolicies[?ResourceId==`identifier
`]'Windows
aws application-autoscaling describe-scaling-policies --service-namespace
namespace
--query "ScalingPolicies[?ResourceId==`identifier
`]"Voici un exemple de sortie.
[ { "PolicyARN": "
arn
", "TargetTrackingScalingPolicyConfiguration": { "PredefinedMetricSpecification": { "PredefinedMetricType": "predefinedmetric
" }, "TargetValue": 50.0 }, "PolicyName": "my-scaling-policy", "PolicyType": "TargetTrackingScaling", "Alarms": [], ... } ]
Étape 4 : étapes suivantes
Lorsqu'une activité de dimensionnement se produit, vous voyez un enregistrement de celle-ci dans la sortie des activités de dimensionnement de la cible évolutive, par exemple :
Successfully set desired count to 1. Change successfully fulfilled by ecs.
Pour surveiller vos activités de dimensionnement avec Application Auto Scaling, vous pouvez utiliser la describe-scaling-activities
Linux, macOS ou Unix
aws application-autoscaling describe-scaling-activities --service-namespace
namespace
\ --scalable-dimensiondimension
\ --resource-ididentifier
Windows
aws application-autoscaling describe-scaling-activities --service-namespace
namespace
--scalable-dimensiondimension
--resource-ididentifier
Étape 5 : nettoyer
Pour empêcher votre compte d'accumuler des frais pour les ressources créées lors de la mise à l'échelle active, vous pouvez nettoyer la configuration de mise à l'échelle associée comme suit.
La suppression de la configuration de dimensionnement ne supprime pas la AWS ressource sous-jacente. Elle ne la ramène pas non plus à sa capacité d'origine. Vous pouvez utiliser la console du service où vous avez créé la ressource pour la supprimer ou ajuster sa capacité.
Pour supprimer les actions planifiées
La commande delete-scheduled-action
Linux, macOS ou Unix
aws application-autoscaling delete-scheduled-action \ --service-namespace
namespace
\ --scalable-dimensiondimension
\ --resource-ididentifier
\ --scheduled-action-namemy-second-scheduled-action
Windows
aws application-autoscaling delete-scheduled-action --service-namespace
namespace
--scalable-dimensiondimension
--resource-ididentifier
--scheduled-action-namemy-second-scheduled-action
Pour supprimer la politique de mise à l'échelle
La delete-scaling-policy
Linux, macOS ou Unix
aws application-autoscaling delete-scaling-policy \ --service-namespace
namespace
\ --scalable-dimensiondimension
\ --resource-ididentifier
\ --policy-namemy-scaling-policy
Windows
aws application-autoscaling delete-scaling-policy --service-namespace
namespace
--scalable-dimensiondimension
--resource-ididentifier
--policy-namemy-scaling-policy
Pour annuler l'inscription d'une cible évolutive
Utilisez la commande deregister-scalable-target
Linux, macOS ou Unix
aws application-autoscaling deregister-scalable-target \ --service-namespace
namespace
\ --scalable-dimensiondimension
\ --resource-ididentifier
Windows
aws application-autoscaling deregister-scalable-target --service-namespace
namespace
--scalable-dimensiondimension
--resource-ididentifier