Tutoriel : Configurer la scalabilité automatique pour gérer une charge de travail importante - Application Autoscaling

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.

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-targetcommande 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-dimension dimension \ --resource-id identifier \ --min-capacity 0 --max-capacity 0

    Windows

    aws application-autoscaling register-scalable-target --service-namespace namespace --scalable-dimension dimension --resource-id identifier --min-capacity 0 --max-capacity 0

    En 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-actioncommande pour créer des actions planifiées configurées pour répondre aux besoins de votre entreprise. Dans ce tutoriel, nous nous concentrons sur une configuration qui arrête la consommation des ressources en dehors des heures de travail en réduisant la capacité à 0.

Pour créer une action planifiée augmente la capacité le matin
  1. Pour augmenter la taille de la cible évolutive, utilisez la put-scheduled-actioncommande 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 et MaxCapacity 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-dimension dimension \ --resource-id identifier \ --scheduled-action-name my-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-dimension dimension --resource-id identifier --scheduled-action-name my-first-scheduled-action --schedule "cron(0 9 * * ? *)" --scalable-target-action MinCapacity=1,MaxCapacity=5

    Cette commande ne renvoie pas de sortie lorsqu'elle aboutit.

  2. Pour vérifier que l'action planifiée existe, utilisez la describe-scheduled-actionscommande 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
  1. 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 cible MaxCapacity à 0, comme indiqué dans la put-scheduled-actioncommande suivante.

    Linux, macOS ou Unix

    aws application-autoscaling put-scheduled-action \ --service-namespace namespace \ --scalable-dimension dimension \ --resource-id identifier \ --scheduled-action-name my-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-dimension dimension --resource-id identifier --scheduled-action-name my-second-scheduled-action --schedule "cron(0 20 * * ? *)" --scalable-target-action MinCapacity=0,MaxCapacity=0
  2. Pour vérifier que l'action planifiée existe, utilisez la describe-scheduled-actionscommande 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
  1. 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-dimension dimension \ --resource-id identifier \ --policy-name my-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-dimension dimension --resource-id identifier --policy-name my-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.

  2. Pour vérifier que l'action planifiée existe, utilisez la describe-scaling-policiescommande 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-activitiescommande suivante.

Linux, macOS ou Unix

aws application-autoscaling describe-scaling-activities --service-namespace namespace \ --scalable-dimension dimension \ --resource-id identifier

Windows

aws application-autoscaling describe-scaling-activities --service-namespace namespace --scalable-dimension dimension --resource-id identifier

É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 suivante supprime une action planifiée spécifique. Vous pouvez ignorer cette étape si vous souhaitez conserver les actions planifiées que vous avez créées.

Linux, macOS ou Unix

aws application-autoscaling delete-scheduled-action \ --service-namespace namespace \ --scalable-dimension dimension \ --resource-id identifier \ --scheduled-action-name my-second-scheduled-action

Windows

aws application-autoscaling delete-scheduled-action --service-namespace namespace --scalable-dimension dimension --resource-id identifier --scheduled-action-name my-second-scheduled-action
Pour supprimer la politique de mise à l'échelle

La delete-scaling-policycommande suivante supprime une politique de dimensionnement du suivi des cibles spécifiée. Vous pouvez ignorer cette étape si vous souhaitez conserver la politique de mise à l'échelle que vous avez créée.

Linux, macOS ou Unix

aws application-autoscaling delete-scaling-policy \ --service-namespace namespace \ --scalable-dimension dimension \ --resource-id identifier \ --policy-name my-scaling-policy

Windows

aws application-autoscaling delete-scaling-policy --service-namespace namespace --scalable-dimension dimension --resource-id identifier --policy-name my-scaling-policy
Pour annuler l'inscription d'une cible évolutive

Utilisez la commande deregister-scalable-target suivante pour annuler l'enregistrement de la cible scalable. Si vous avez créé des stratégies de dimensionnement ou si vous avez des actions planifiées qui n'ont pas encore été supprimées, cette commande les supprime. Vous pouvez omettre cette étape si vous souhaitez conserver la cible scalable enregistrée pour une utilisation ultérieure.

Linux, macOS ou Unix

aws application-autoscaling deregister-scalable-target \ --service-namespace namespace \ --scalable-dimension dimension \ --resource-id identifier

Windows

aws application-autoscaling deregister-scalable-target --service-namespace namespace --scalable-dimension dimension --resource-id identifier