Création d’une stratégie de mise à l’échelle pour l’autoscaling d’un service Amazon ECS
Créez une stratégie de mise à l’échelle prédictive pour qu’Amazon ECS augmente ou diminue le nombre de tâches exécutées par votre service en fonction de données historiques.
Note
Un nouveau service doit fournir au moins 24 heures de données avant de pouvoir générer une prévision.
-
En plus des autorisations IAM standard pour créer et mettre à jour des services, vous avez besoin d’autorisations supplémentaires. Pour de plus amples informations, consultez Autorisations IAM requises pour l’autoscaling d’un service Amazon ECS.
-
Déterminez les métriques à utiliser pour la stratégie. Les mesures suivantes sont disponibles :
-
ECSServiceAverageCPUUtilization : l’utilisation moyenne de l’UC que le service devrait utiliser.
-
ECSServiceAverageMemoryUtilization : l’utilisation moyenne de la mémoire que le service devrait utiliser.
-
ALBRequestCountPerTarget : le nombre moyen de requêtes par minute que la tâche devrait idéalement recevoir.
Vous pouvez également utiliser une métrique personnalisée. Vous devez définir les valeurs suivantes :
-
Charge : métrique qui représente avec précision la charge totale de votre application et qui constitue l’aspect le plus important à prendre en compte pour la mise à l’échelle de votre application.
-
Métrique de mise à l’échelle : le meilleur indicateur pour déterminer le niveau d’utilisation idéal pour votre application.
-
Ouvrez la console à partir de l'adresse https://console.aws.amazon.com/ecs/v2
. -
Sur la page Clusters, choisissez le cluster.
-
Sur la page des détails du cluster, dans la section Services, choisissez le service.
La page de détails du service s’affiche.
-
Choisissez Autoscaling du service, puis sélectionnez Définir le nombre de tâches.
-
Sous Nombre de tâches du service Amazon ECS, sélectionnez Utiliser l’autoscaling.
La section Nombre de tâches s’affiche.
-
Pour Nombre minimum de tâches, saisissez la limite inférieure du nombre de tâches à utiliser pour l’autoscaling du service. Le nombre souhaité ne sera pas inférieur à ce nombre.
-
Pour Nombre maximal de tâches, saisissez la limite supérieure du nombre de tâches à utiliser pour l’autoscaling du service. Le nombre souhaité ne sera pas supérieur à ce nombre.
-
Choisissez Enregistrer.
La page des stratégies s’affiche.
-
-
Choisissez Créer une stratégie de mise à l’échelle.
La page Créer une stratégie s’affiche.
-
Pour Type de stratégie de mise à l’échelle, choisissez Mise à l’échelle prédictive.
-
Pour Nom de la stratégie, saisissez le nom de la stratégie.
-
Sous Paire de métriques, choisissez vos métriques dans la liste des options.
Si vous avez choisi Nombre de requêtes Application Load Balancer par cible, choisissez un groupe cible dans le champ Groupe cible. L’option Nombre de requêtes Application Load Balancer par cible n’est prise en charge que si vous avez attaché un groupe cible Application Load Balancer à votre service.
Si vous avez choisi Paire de métriques personnalisées, sélectionnez les métriques individuelles dans les listes déroulantes Métrique de charge et Métrique de mise à l’échelle.
-
Pour Utilisation cible, saisissez la valeur cible pour le pourcentage de tâches qu’Amazon ECS doit gérer. L’autoscaling du service augmente horizontalement votre capacité jusqu’à ce que l’utilisation moyenne corresponde à l’objectif, ou jusqu’à ce qu’elle atteigne le nombre maximal de tâches que vous avez spécifié.
-
Choisissez Créer une stratégie de mise à l’échelle.
Utilisez l’AWS CLI comme suit afin de configurer des stratégies de mise à l’échelle prédictive pour votre service Amazon ECS. Remplacez chaque espace réservé à la saisie de l’utilisateur par vos propres informations.
Pour plus d’informations sur les métriques CloudWatch que vous pouvez spécifier, consultez la section PredictiveScalingMetricSpecification dans la Référence de l’API Amazon EC2 Auto Scaling.
Exemple 1 : stratégie de mise à l’échelle prédictive avec mémoire prédéfinie.
Voici un exemple de stratégie avec une configuration mémoire prédéfinie.
cat policy.json { "MetricSpecifications": [ { "TargetValue":40, "PredefinedMetricPairSpecification": { "PredefinedMetricType": "ECSServiceMemoryUtilization" } } ], "SchedulingBufferTime":3600, "MaxCapacityBreachBehavior": "HonorMaxCapacity", "Mode": "ForecastOnly" }
L’exemple suivant illustre la création de la stratégie en exécutant la commande put-scaling-policy avec le fichier de configuration spécifié.
aws application-autoscaling put-scaling-policy \ --service-namespaceecs\ --regionus-east-1\ --policy-namepredictive-scaling-policy-example\ --resource-idservice/MyCluster/test\ --policy-type PredictiveScaling \ --scalable-dimension ecs:service:DesiredCount \ --predictive-scaling-policy-configuration file://policy.json
Si elle aboutit, cette commande renvoie l’ARN de la stratégie.
{
"PolicyARN": "arn:aws:autoscaling:us-east-1:012345678912:scalingPolicy:d1d72dfe-5fd3-464f-83cf-824f16cb88b7:resource/ecs/service/MyCluster/test:policyName/predictive-scaling-policy-example",
"Alarms": []
}
Exemple 2 : stratégie de mise à l’échelle prédictive avec UC prédéfinie.
Voici un exemple de stratégie avec une configuration UC prédéfinie.
cat policy.json { "MetricSpecifications": [ { "TargetValue":0.00000004, "PredefinedMetricPairSpecification": { "PredefinedMetricType": "ECSServiceCPUUtilization" } } ], "SchedulingBufferTime":3600, "MaxCapacityBreachBehavior": "HonorMaxCapacity", "Mode": "ForecastOnly" }
L’exemple suivant illustre la création de la stratégie en exécutant la commande put-scaling-policy avec le fichier de configuration spécifié.
aws aas put-scaling-policy \ --service-namespaceecs\ --regionus-east-1\ --policy-namepredictive-scaling-policy-example\ --resource-idservice/MyCluster/test\ --policy-type PredictiveScaling \ --scalable-dimension ecs:service:DesiredCount \ --predictive-scaling-policy-configuration file://policy.json
Si elle aboutit, cette commande renvoie l’ARN de la stratégie.
{
"PolicyARN": "arn:aws:autoscaling:us-east-1:012345678912:scalingPolicy:d1d72dfe-5fd3-464f-83cf-824f16cb88b7:resource/ecs/service/MyCluster/test:policyName/predictive-scaling-policy-example",
"Alarms": []
}