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
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.
Indice
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
-
Utilizzate il seguente register-scalable-target
comando per registrare un nuovo target 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-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 0In 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
È possibile utilizzare il put-scheduled-action
Per creare un'operazione pianificata che aumenta orizzontalmente la capacità la mattina
-
Per scalare orizzontalmente l'obiettivo scalabile, utilizzare il put-scheduled-action
comando seguente. 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
eMaxCapacity
nell'intervallo desiderato di 1-5 unità di capacità.Linux, macOS o 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
Questo comando non restituisce alcun output se va a buon fine.
-
Per confermare l'esistenza dell'azione pianificata, utilizzate il seguente describe-scheduled-actions
comando. 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
-
Ripeti la procedura precedente per creare un'altra operazione pianificata che Application Auto Scaling utilizzerà per diminuire orizzontalmente la capacità al termine della giornata.
Nella pianificazione specificata (ogni giorno alle 20:00 UTC), Application Auto Scaling aggiorna il target
MinCapacity
MaxCapacity
e lo porta a 0, come indicato dal comando seguente. put-scheduled-actionLinux, macOS o 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
-
Per confermare l'esistenza dell'azione pianificata, utilizzate il seguente 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
-
Usare il comando put-scaling-policy
seguente per creare la policy. I parametri utilizzati con maggiore frequenza per il monitoraggio degli obiettivi sono predefiniti, quindi potrai utilizzarli senza fornire tutte le specifiche per il parametro da 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-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
\" }}"In caso di successo, questo comando restituisce i nomi ARNs e i nomi dei due CloudWatch allarmi che sono stati creati per tuo conto.
-
Per confermare l'esistenza dell'azione pianificata, utilizzate il seguente describe-scaling-policies
comando. 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 scalabilità con Application Auto Scaling, è possibile utilizzare il describe-scaling-activities
Linux, macOS o 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
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
Linux, macOS o 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
Per eliminare la policy di dimensionamento
Il delete-scaling-policy
Linux, macOS o 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
Per annullare la registrazione di un obiettivo scalabile
Utilizza il comando deregister-scalable-target
Linux, macOS o 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