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à.
Politica di scalabilità basata su Amazon SQS
Importante
Le seguenti informazioni e passaggi mostrano come calcolare il backlog di Amazon SQS Queue per istanza utilizzando l'attributo ApproximateNumberOfMessages
queue prima di pubblicarlo come metrica personalizzata su. CloudWatch Tuttavia, ora puoi ridurre i costi e limitare il lavoro necessario per pubblicare il parametro personalizzato utilizzando la matematica dei parametri. Per ulteriori informazioni, consulta Crea una politica di ridimensionamento del tracciamento degli obiettivi utilizzando la matematica metrica.
Questa sezione mostra come scalare il gruppo Auto Scaling in risposta alle variazioni del carico del sistema in una coda Amazon Simple Queue Service (AmazonSQS). Per ulteriori informazioni su come usare AmazonSQS, consulta la Amazon Simple Queue Service Developer Guide.
Esistono alcuni scenari in cui potresti pensare alla scalabilità in risposta all'attività in una SQS coda Amazon. Ad esempio, supponi di avere un'app Web che permette agli utenti di caricare immagini e di utilizzarle online. In questo scenario, ogni immagine richiede il ridimensionamento e la codifica, prima di poter essere pubblicata. L'app viene eseguita su EC2 istanze in un gruppo Auto Scaling ed è configurata per gestire le velocità di caricamento tipiche. Le istanze non integre vengono terminate e sostituite per mantenere i livelli di istanze correnti in qualsiasi momento. L'app inserisce i dati bitmap non elaborati delle immagini in una SQS coda per l'elaborazione. Le elabora e pubblica le immagini elaborate dove possono essere visualizzate dagli utenti. L'architettura per questo scenario funziona bene se il numero di caricamenti di immagini non varia nel tempo. Tuttavia, se il numero di caricamenti cambia nel tempo, per scalare la capacità del gruppo con scalabilità automatica, potresti prendere in considerazione l'utilizzo del dimensionamento dinamico.
Indice
Utilizzare il monitoraggio degli obiettivi con il giusto parametro
Se utilizzi una politica di scalabilità di tracciamento degli obiettivi basata su una metrica Amazon SQS Queue personalizzata, la scalabilità dinamica può adattarsi alla curva di domanda della tua applicazione in modo più efficace. Per ulteriori informazioni sulla scelta dei parametri per il monitoraggio degli obiettivi, consulta Selezionare i parametri..
Il problema legato all'utilizzo di una SQS metrica di CloudWatch Amazon come ApproximateNumberOfMessagesVisible
per il tracciamento degli obiettivi è che il numero di messaggi nella coda potrebbe non cambiare proporzionalmente alla dimensione del gruppo Auto Scaling che elabora i messaggi dalla coda. Questo perché il numero di messaggi nella SQS coda non definisce solo il numero di istanze necessarie. Il numero di istanze nel gruppo con scalabilità automatica può essere determinato da più fattori, tra cui la quantità di tempo necessaria per elaborare un messaggio e la quantità di latenza (ritardo della coda) accettabile.
La soluzione è utilizzare un parametro backlog per instance (backlog per istanza) dove il valore di destinazione è il backlog accettabile per istanza da mantenere. È possibile calcolare questi valori nel modo seguente:
-
Backlog per istanza: per calcolare il backlog per istanza, inizia con l'attributo
ApproximateNumberOfMessages
queue per determinare la lunghezza della SQS coda (numero di messaggi disponibili per il recupero dalla coda). Per ottenere il backlog per istanza, questo numero va diviso per la capacità in esecuzione del parco istanze, che per un gruppo con scalabilità automatica è il numero di istanze nello statoInService
. -
Acceptable backlog per instance (Backlog accettabile per istanza): per calcolare il valore di destinazione, prima determina ciò che l'applicazione può accettare in termini di latenza. Quindi, prendi il valore di latenza accettabile e dividilo per il tempo medio impiegato da un'istanza per elaborare un messaggio. EC2
Ad esempio, supponiamo che al momento si disponga di un gruppo con scalabilità automatica con 10 istanze e il numero di messaggi visibili nella coda (ApproximateNumberOfMessages
) è 1500. Se il tempo di elaborazione medio è 0,1 secondi per ogni messaggio e la latenza massima accettabile è 10 secondi, il backlog per istanza accettabile è 10/0,1, ovvero 100 messaggi. Questo significa che 100 è il valore di destinazione per la policy con monitoraggio degli obiettivi. Quando il backlog per istanza raggiunge il valore target, si verificherà un evento di aumentazione orizzontale. Poiché il backlog per istanza è già di 150 messaggi (1500 messaggi / 10 istanze), il gruppo si aumenta orizzontalmente e si aumenta orizzontalmente di cinque istanze per mantenere la proporzione con il valore target.
Nelle procedure seguenti viene illustrato come pubblicare il parametro personalizzato e creare una policy di dimensionamento con monitoraggio degli obiettivi che permetta di configurare il gruppo con scalabilità automatica in modo che venga dimensionato in base a questi calcoli.
Importante
Ricorda di utilizzare la matematica dei parametri per ridurre i costi. Per ulteriori informazioni, consulta Crea una politica di ridimensionamento del tracciamento degli obiettivi utilizzando la matematica metrica.
Sono tre, le parti principali di questa configurazione:
-
Un gruppo Auto Scaling per gestire le EC2 istanze allo scopo di elaborare i messaggi da una coda. SQS
-
Una metrica personalizzata da inviare ad Amazon CloudWatch che misura il numero di messaggi in coda per EC2 istanza nel gruppo Auto Scaling.
-
Una politica di tracciamento degli obiettivi che configura il gruppo Auto Scaling in modo che venga scalato in base alla metrica personalizzata e a un valore target impostato. CloudWatch gli allarmi richiamano la politica di scalabilità.
Nel diagramma seguente viene illustrata l'architettura di questa configurazione.
Limitazioni e prerequisiti
Per utilizzare questa configurazione, devi essere consapevole delle seguenti limitazioni:
-
È necessario utilizzare AWS CLI o an su cui SDK pubblicare la metrica personalizzata. CloudWatch Puoi quindi monitorare la tua metrica con. AWS Management Console
-
La console Amazon EC2 Auto Scaling non supporta politiche di scalabilità di tracciamento degli obiettivi che utilizzano metriche personalizzate. È necessario utilizzare AWS CLI o an SDK per specificare una metrica personalizzata per la politica di scalabilità.
Nelle sezioni seguenti viene indicato come utilizzare AWS CLI le attività da eseguire. Ad esempio, per ottenere dati metrici che riflettano l'uso attuale della coda, si utilizza il SQS get-queue-attributescomando. Assicurati di averlo CLI installato e configurato.
Prima di iniziare, devi disporre di una SQS coda Amazon da utilizzare. Le sezioni seguenti presuppongono che l'utente disponga già di una coda (standard oFIFO), di un gruppo di Auto Scaling EC2 e di istanze che eseguono l'applicazione che utilizza la coda. Per ulteriori informazioni su AmazonSQS, consulta la Amazon Simple Queue Service Developer Guide.
Amazon SQS e la protezione scalabile delle istanze
I messaggi che non sono stati elaborati al momento della chiusura di un'istanza vengono restituiti alla SQS coda dove possono essere elaborati da un'altra istanza ancora in esecuzione. Per le applicazioni in cui vengono eseguite attività di lunga durata, è possibile utilizzare facoltativamente la protezione per la riduzione orizzontale dell'istanza per avere il controllo su quali dipendenti della coda vengono terminati quando il gruppo con scalabilità automatica viene ridotto.
Lo pseudocodice seguente mostra un modo per proteggere i processi di lavoro a esecuzione prolungata e basati sulla coda dalla terminazione della riduzione orizzontale.
while (true) { SetInstanceProtection(False); Work = GetNextWorkUnit(); SetInstanceProtection(True); ProcessWorkUnit(Work); SetInstanceProtection(False); }
Per ulteriori informazioni, consulta Progetta le tue applicazioni per gestire in modo corretto la chiusura delle istanze.