Creare una politica di scalabilità graduale per Application Auto Scaling utilizzando AWS CLI - Application Auto Scaling

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Creare una politica di scalabilità graduale per Application Auto Scaling utilizzando AWS CLI

Questo esempio utilizza AWS CLI i comandi per creare una politica di scalabilità a fasi per un servizio Amazon ECS. Per un target scalabile diverso, specifica il relativo spazio dei nomi in--service-namespace, la dimensione scalabile in e l'ID della risorsa in--scalable-dimension. --resource-id

Quando usi il AWS CLI, ricorda che i comandi vengono eseguiti nella Regione AWS configurazione per il tuo profilo. Per eseguire i comandi in un'altra regione, modificare la regione predefinita per il profilo oppure utilizzare il parametro --region con il comando.

Fase 1: Registrare un target scalabile

Se non lo hai ancora fatto, registra l'obiettivo scalabile. Utilizza il register-scalable-targetcomando per registrare una risorsa specifica nel servizio di destinazione come destinazione scalabile. Nell'esempio seguente viene registrato un servizio Amazon ECS con Application Auto Scaling. Application Auto Scaling può dimensionare il numero di attività a un minimo di 2 e un massimo di 10 attività. Sostituisci ciascun placeholder input dell'utente con le tue informazioni.

Linux, macOS o Unix

aws application-autoscaling register-scalable-target --service-namespace ecs \ --scalable-dimension ecs:service:DesiredCount \ --resource-id service/my-cluster/my-service \ --min-capacity 2 --max-capacity 10

Windows

aws application-autoscaling register-scalable-target --service-namespace ecs ^ --scalable-dimension ecs:service:DesiredCount ^ --resource-id service/my-cluster/my-service ^ --min-capacity 2 --max-capacity 10
Output

In caso di esito positivo, il comando restituisce l'ARN dell'obiettivo scalabile. Di seguito è riportato un output di esempio.

{ "ScalableTargetARN": "arn:aws:application-autoscaling:region:account-id:scalable-target/1234abcd56ab78cd901ef1234567890ab123" }

Fase 2: Creare una politica di scalabilità graduale

Per creare una politica di scalabilità graduale per il tuo obiettivo scalabile, puoi utilizzare i seguenti esempi per iniziare.

Scale out
Per creare una politica di scalabilità graduale per la scalabilità orizzontale (aumento della capacità)
  1. Utilizzate il cat comando seguente per memorizzare una configurazione della politica di scalabilità dei passaggi in un file JSON denominato config.json nella vostra home directory. Di seguito è riportato un esempio di configurazione con un tipo di regolazione PercentChangeInCapacity che aumenta la capacità del target scalabile in base alle seguenti regolazioni della fase (presupponendo una soglia di CloudWatch allarme di 70):

    • Aumenta la capacità del 10 percento quando il valore della metrica è maggiore o uguale a 70 ma inferiore a 85

    • Aumenta la capacità del 20 percento quando il valore della metrica è maggiore o uguale a 85 ma inferiore a 95

    • Aumenta la capacità del 30 percento quando il valore della metrica è maggiore o uguale a 95

    $ cat ~/config.json { "AdjustmentType": "PercentChangeInCapacity", "MetricAggregationType": "Average", "Cooldown": 60, "MinAdjustmentMagnitude": 1, "StepAdjustments": [ { "MetricIntervalLowerBound": 0.0, "MetricIntervalUpperBound": 15.0, "ScalingAdjustment": 10 }, { "MetricIntervalLowerBound": 15.0, "MetricIntervalUpperBound": 25.0, "ScalingAdjustment": 20 }, { "MetricIntervalLowerBound": 25.0, "ScalingAdjustment": 30 } ] }

    Per ulteriori informazioni, consulta StepScalingPolicyConfigurationl'Application Auto Scaling API Reference.

  2. Utilizzate il put-scaling-policycomando seguente, insieme al config.json file creato, per creare una politica di scalabilità denominata. my-step-scaling-policy

    Linux, macOS o Unix

    aws application-autoscaling put-scaling-policy --service-namespace ecs \ --scalable-dimension ecs:service:DesiredCount \ --resource-id service/my-cluster/my-service \ --policy-name my-step-scaling-policy --policy-type StepScaling \ --step-scaling-policy-configuration file://config.json

    Windows

    aws application-autoscaling put-scaling-policy --service-namespace ecs ^ --scalable-dimension ecs:service:DesiredCount ^ --resource-id service/my-cluster/my-service ^ --policy-name my-step-scaling-policy --policy-type StepScaling ^ --step-scaling-policy-configuration file://config.json
    Output

    L'output include l'ARN utilizzato come nome univoco per la policy. Ne hai bisogno per creare un CloudWatch allarme per la tua politica. Di seguito è riportato un output di esempio.

    { "PolicyARN": "arn:aws:autoscaling:region:123456789012:scalingPolicy:ac542982-cbeb-4294-891c-a5a941dfa787:resource/ecs/service/my-cluster/my-service:policyName/my-step-scaling-policy" }
Scale in
Per creare una politica di scalabilità graduale per la scalabilità in entrata (riduzione della capacità)
  1. Utilizzate il cat comando seguente per memorizzare una configurazione della politica di scalabilità dei passaggi in un file JSON denominato config.json nella vostra home directory. Di seguito è riportato un esempio di configurazione con un tipo di regolazione ChangeInCapacity che riduce la capacità del target scalabile in base alle seguenti regolazioni della fase (presupponendo una soglia di CloudWatch allarme di 50):

    • Riduci la capacità di 1 quando il valore della metrica è inferiore o uguale a 50 ma maggiore di 40

    • Riduci la capacità del 2% quando il valore della metrica è inferiore o uguale a 40 ma maggiore di 30

    • Riduci la capacità del 3% quando il valore della metrica è inferiore o uguale a 30

    $ cat ~/config.json { "AdjustmentType": "ChangeInCapacity", "MetricAggregationType": "Average", "Cooldown": 60, "StepAdjustments": [ { "MetricIntervalUpperBound": 0.0, "MetricIntervalLowerBound": -10.0, "ScalingAdjustment": -1 }, { "MetricIntervalUpperBound": -10.0, "MetricIntervalLowerBound": -20.0, "ScalingAdjustment": -2 }, { "MetricIntervalUpperBound": -20.0, "ScalingAdjustment": -3 } ] }

    Per ulteriori informazioni, consulta StepScalingPolicyConfigurationl'Application Auto Scaling API Reference.

  2. Utilizzate il put-scaling-policycomando seguente, insieme al config.json file creato, per creare una politica di scalabilità denominata. my-step-scaling-policy

    Linux, macOS o Unix

    aws application-autoscaling put-scaling-policy --service-namespace ecs \ --scalable-dimension ecs:service:DesiredCount \ --resource-id service/my-cluster/my-service \ --policy-name my-step-scaling-policy --policy-type StepScaling \ --step-scaling-policy-configuration file://config.json

    Windows

    aws application-autoscaling put-scaling-policy --service-namespace ecs ^ --scalable-dimension ecs:service:DesiredCount ^ --resource-id service/my-cluster/my-service ^ --policy-name my-step-scaling-policy --policy-type StepScaling ^ --step-scaling-policy-configuration file://config.json
    Output

    L'output include l'ARN utilizzato come nome univoco per la policy. Hai bisogno di questo ARN per creare un CloudWatch allarme per la tua polizza. Di seguito è riportato un output di esempio.

    { "PolicyARN": "arn:aws:autoscaling:region:123456789012:scalingPolicy:ac542982-cbeb-4294-891c-a5a941dfa787:resource/ecs/service/my-cluster/my-service:policyName/my-step-scaling-policy" }

Fase 3: Crea un allarme che richiami una politica di scalabilità

Infine, usa il seguente CloudWatch put-metric-alarmcomando per creare un allarme da utilizzare con la tua politica di scalabilità dei passaggi. In questo esempio, si dispone di un allarme basato sull'utilizzo medio della CPU. L'allarme viene configurato per essere in stato ALARM se raggiunge una soglia del 70% per almeno due periodi di valutazione consecutivi di 60 secondi. Per specificare una CloudWatch metrica diversa o utilizzare una metrica personalizzata, specificane il nome in --metric-name e il relativo spazio dei nomi in. --namespace

Linux, macOS o Unix

aws cloudwatch put-metric-alarm --alarm-name Step-Scaling-AlarmHigh-ECS:service/my-cluster/my-service \ --metric-name CPUUtilization --namespace AWS/ECS --statistic Average \ --period 60 --evaluation-periods 2 --threshold 70 \ --comparison-operator GreaterThanOrEqualToThreshold \ --dimensions Name=ClusterName,Value=default Name=ServiceName,Value=sample-app-service \ --alarm-actions PolicyARN

Windows

aws cloudwatch put-metric-alarm --alarm-name Step-Scaling-AlarmHigh-ECS:service/my-cluster/my-service ^ --metric-name CPUUtilization --namespace AWS/ECS --statistic Average ^ --period 60 --evaluation-periods 2 --threshold 70 ^ --comparison-operator GreaterThanOrEqualToThreshold ^ --dimensions Name=ClusterName,Value=default Name=ServiceName,Value=sample-app-service ^ --alarm-actions PolicyARN