Tutorial: configura il dimensionamento automatico per gestire un carico di lavoro pesante - 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à.

Tutorial: configura il dimensionamento automatico per gestire un carico di lavoro pesante

Importante

Prima di esplorare questo tutorial, ti suggeriamo di esaminare il seguente tutorial introduttivo: Tutorial: Guida di base su dimensionamento pianificato utilizzando  AWS CLI.

In questo tutorial imparerai ad aumentare o ridurre orizzontalmente in base a finestre temporali quando l'applicazione si troverà a gestire un carico di lavoro più pesante del normale. Ciò sarà di particolare utilità quando si lavora con un'applicazione che improvvisamente si trova a ospitare un gran numero di visitatori, o normalmente oppure su base stagionale.

Per gestire tale carico aggiuntivo, insieme al dimensionamento pianificato, si può utilizzare una policy di dimensionamento con monitoraggio degli obiettivi. Il dimensionamento pianificato avvia in automatico le modifiche ai valori MinCapacity e MaxCapacity per conto tuo sulla base della pianificazione specificata. Quando una policy di dimensionamento con monitoraggio degli obiettivi è attiva sulla risorsa, essa può dimensionare dinamicamente in base al corrente utilizzo della risorsa nel rispetto del nuovo intervallo che prevede un minimo e un massimo in termini di capacità.

Dopo aver completato il tutorial, saprai come:

  • Utilizzare il dimensionamento pianificato per aggiungere l'ulteriore capacità necessaria a gestire un carico di lavoro pesante prima che si manifesti, e successivamente a ridurla quando non serve più.

  • Utilizzare una policy di dimensionamento con monitoraggio degli obiettivi per dimensionare l'applicazione in base all'utilizzo corrente della risorsa.

Prerequisiti

Il tutorial presuppone che tu abbia già:

  • Ha creato un Account AWS.

  • Installato e configurato il AWS CLI.

  • Sono state concesse le autorizzazioni necessarie per registrare e annullare la registrazione delle risorse come obiettivi scalabili con Application Auto Scaling. Inoltre, ha concesso le autorizzazioni necessarie per creare politiche di scalabilità e azioni pianificate. Per ulteriori informazioni, consulta Identity and Access Management per Application Auto Scaling.

  • Ha creato una risorsa supportata in un ambiente non di produzione disponibile per questo tutorial. Se non disponi già dell'account, creane uno. Per informazioni sui servizi e risorse AWS che funzionano con Application Auto Scaling, consulta la sezione Servizi AWS che puoi usare con Application Auto Scaling.

Nota

Quando avrai completato il tutorial, ci saranno due fasi in cui occorrerà impostare su 0 i valori massimi e minimi di capacità per ripristinare la capacità iniziale a 0. A seconda della risorsa che stai utilizzando con Application Auto Scaling, potrebbe non essere possibile reimpostare la capacità iniziale a 0 durante tali fasi. Per aiutarti a risolvere il problema, un messaggio nell'output indicherà che la capacità minima non può essere inferiore al valore specificato e fornirà il valore di capacità minima che la AWS risorsa può accettare.

Fase 1: registrazione dell'obiettivo scalabile

Inizia registrando la risorsa come obiettivo scalabile tramite Application Auto Scaling. Un obiettivo scalabile è una risorsa la cui dimensione può essere aumentata e ridotta orizzontalmente da Application Auto Scaling.

Per registrare un obiettivo scalabile tramite Application Auto Scaling
  • Utilizza il comando register-scalable-target per registrare un nuovo obiettivo scalabile. Imposta i valori --min-capacity e --max-capacity su 0 per ripristinare la capacità corrente su 0.

    Sostituisci il testo di esempio di --service-namespace con lo spazio dei nomi del servizio AWS che stai utilizzando con Application Auto Scaling, --scalable-dimension con la dimensione scalabile associata alla risorsa che stai registrando e --resource-id con un identificatore per la risorsa. Questi valori variano in base alla risorsa utilizzata e alla modalità di costruzione dell'ID della risorsa. Consulta gli argomenti nella sezione Servizi AWS che puoi usare con Application Auto Scaling per ulteriori informazioni. Questi argomenti includono comandi di esempio che mostrano come registrare obiettivi scalabili con Application Auto Scaling.

    Linux, macOS o 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

    In caso di esito positivo, il comando restituisce l'ARN dell'obiettivo scalabile.

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

Fase 2: impostazione delle operazioni pianificate in base ai requisiti

Puoi utilizzare il comando put-scheduled-action per creare operazioni pianificate che soddisfino le tue esigenze di lavoro. In questo tutorial ci concentreremo su una configurazione che interrompe l'utilizzo di risorse fuori dall'orario di lavoro riducendo la capacità a 0.

Per creare un'operazione pianificata che aumenta orizzontalmente la capacità la mattina
  1. Per aumentare orizzontalmente l'obiettivo scalabile, utilizza il comando put-scheduled-action. Includi il parametro --schedule prevedendo una pianificazione ricorrente espressa in UTC utilizzando un'espressione cron.

    Nella pianificazione specificata (ogni giorno alle 9:00 AM UTC), Application Auto Scaling aggiornerà i valori MinCapacity e MaxCapacity nell'intervallo desiderato di 1-5 unità di capacità.

    Linux, macOS o 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

    Questo comando non restituisce alcun output se va a buon fine.

  2. Per confermare l'esistenza dell'operazione pianificata, utilizza il comando describe-scheduled-actions.

    Linux, macOS o 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`]"

    Di seguito è riportato un output di esempio.

    [ { "ScheduledActionName": "my-first-scheduled-action", "ScheduledActionARN": "arn", "Schedule": "cron(0 9 * * ? *)", "ScalableTargetAction": { "MinCapacity": 1, "MaxCapacity": 5 }, ... } ]
Per creare un'operazione pianificata che riduce orizzontalmente la capacità durante la notte
  1. Ripeti la procedura precedente per creare un'altra operazione pianificata che Application Auto Scaling utilizzerà per diminuire orizzontalmente la capacità al termine della giornata.

    Con la pianificazione specificata (ogni giorno alle 20:00 UTC), Application Auto Scaling aggiornerà i valori MinCapacity e MaxCapacity portandoli su 0, come richiesto dal comando put-scheduled-action.

    Linux, macOS o 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. Per confermare l'esistenza dell'operazione pianificata, utilizza il comando describe-scheduled-actions.

    Linux, macOS o 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`]"

    Di seguito è riportato un output di esempio.

    [ { "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 }, ... } ]

Fase 3: creazione di una policy di dimensionamento con monitoraggio degli obiettivi

Ora che esiste una pianificazione di base, aggiungi una policy di dimensionamento con monitoraggio degli obiettivi da dimensionare in base al corrente utilizzo della risorsa.

Tramite il monitoraggio degli obiettivi, Application Auto Scaling confronta il valore dell'obiettivo nella policy con quello corrente del parametro specificato. Se non sono uguali per un determinato periodo di tempo, Application Auto Scaling aggiunge o rimuove capacità per mantenere le prestazioni costanti. Man mano che il carico di lavoro sull'applicazione e il valore del parametro aumentano, Application Auto Scaling aggiunge capacità il più velocemente possibile senza eccedere MaxCapacity. Quando invece Application Auto Scaling rimuove capacità perché il carico di lavoro è minimo, esegue l'operazione senza andare sotto MinCapacity. Adeguando la capacità in base all'utilizzo pagherai soltanto in base alle reali esigenze dell'applicazione.

Se il parametro dispone di dati insufficienti perché l'applicazione non ha alcun carico di lavoro, Application Auto Scaling non aggiunge né rimuove capacità. In altre parole, Application Auto Scaling dà priorità alla disponibilità in situazioni in cui non è presente un numero sufficiente di informazioni.

Potrai aggiungere più policy di dimensionamento, ma attenzione a non aggiungerne una che vada in conflitto con qualche fase, altrimenti potrebbero manifestarsi comportamenti indesiderati. Per esempio, se la policy di dimensionamento per fasi avvia un'attività di riduzione orizzontale prima che la policy di monitoraggio degli obiettivi sia pronta per eseguirla, l'attività di riduzione orizzontale non verrà bloccata. Al termine dell'attività di riduzione orizzontale, la policy di monitoraggio degli obiettivi potrebbe richiedere ad Application Auto Scaling di aumentare orizzontalmente di nuovo la capacità.

Per creare una policy di dimensionamento con monitoraggio degli obiettivi
  1. Utilizza il comando put-scaling-policy per creare la policy.

    Le metriche utilizzate più frequentemente per il tracciamento degli obiettivi sono predefinite e possono essere utilizzate senza fornire le specifiche complete della metrica di. CloudWatch Per ulteriori informazioni sui parametri disponibili predefiniti consulta Policy di dimensionamento con monitoraggio degli obiettivi per Application Auto Scaling.

    Prima di eseguire il comando, verifica che il parametro predefinito preveda un determinato valore obiettivo. Per esempio, per aumentare orizzontalmente la capacità quando la CPU raggiunge il 50% di utilizzo, indica un valore obiettivo pari a 50,0. Oppure, per aumentare orizzontalmente il provisioning simultaneo di Lambda quando l'utilizzo raggiunge il 70% di capacità, indica un valore obiettivo pari a 0,7. Per informazioni sui valori obiettivo con riferimento a una specifica risorsa, consulta la documentazione fornita dal servizio per configurare il monitoraggio degli obiettivi. Per ulteriori informazioni, consulta Servizi AWS che puoi usare con Application Auto Scaling.

    Linux, macOS o 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\" }}"

    In caso di successo, questo comando restituisce gli ARN e i nomi dei due CloudWatch allarmi che sono stati creati per tuo conto.

  2. Per confermare l'esistenza dell'operazione pianificata, utilizza il comando describe-scaling-policies.

    Linux, macOS o 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`]"

    Di seguito è riportato un output di esempio.

    [ { "PolicyARN": "arn", "TargetTrackingScalingPolicyConfiguration": { "PredefinedMetricSpecification": { "PredefinedMetricType": "predefinedmetric" }, "TargetValue": 50.0 }, "PolicyName": "my-scaling-policy", "PolicyType": "TargetTrackingScaling", "Alarms": [], ... } ]

Fase 4: fasi successive

Quando si verifica un'attività di dimensionamento, viene visualizzato un record nell'output delle attività di dimensionamento per il target scalabile, ad esempio:

Successfully set desired count to 1. Change successfully fulfilled by ecs.

Per monitorare le attività di dimensionamento tramite Application Auto Scaling, portai utilizzare il seguente comando describe-scaling-activities.

Linux, macOS o 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

Fase 5: Pulizia

Per evitare che il tuo account accumuli costi per le risorse create in fase di dimensionamento attivo, è possibile cancellare la relativa configurazione di dimensionamento procedendo come segue.

L'eliminazione della configurazione di ridimensionamento non elimina la risorsa sottostante. AWS Inoltre, non la fa ritornare alla sua capacità originale. È possibile utilizzare la console del servizio all'interno del quale la risorsa è stata creata per eliminarla o modificarne la capacità.

Per eliminare le operazioni pianificate

Il comando delete-scheduled-action elimina una specifica operazione pianificata. Se desideri mantenere l'operazione pianificata per utilizzarla in futuro, puoi ignorare questa fase.

Linux, macOS o 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
Per eliminare la policy di dimensionamento

Il comando delete-scaling-policy elimina una determinata policy di dimensionamento con monitoraggio degli obiettivi. Se desideri mantenere la policy di dimensionamento per utilizzarla in futuro, puoi ignorare questa fase.

Linux, macOS o 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
Per annullare la registrazione di un obiettivo scalabile

Utilizza il comando deregister-scalable-target per annullare la registrazione dell'obiettivo scalabile. Se hai a disposizione policy di dimensionamento create o eventuali operazioni pianificate che non sono state ancora eliminate, verranno eliminate tramite questo comando. Se desideri mantenere l'obiettivo scalabile registrato per utilizzarlo in futuro, puoi ignorare questa fase.

Linux, macOS o 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