Configurazione del dimensionamento in base ad Amazon SQS - Dimensionamento automatico Amazon EC2

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à.

Configurazione del dimensionamento in base ad Amazon SQS

Questa sezione descrive come configurare la scalabilità basata su Amazon Amazon SQS.

Fase 1: Creare una metrica personalizzata CloudWatch

Un parametro personalizzato viene definito utilizzando uno spazio dei nomi e un nome parametro a scelta. Gli spazi dei nomi per i parametri personalizzati non possono iniziare con AWS/. Per ulteriori informazioni sulla pubblicazione di metriche personalizzate, consulta l'argomento Pubblica metriche personalizzate nella Amazon CloudWatch User Guide.

Segui questa procedura per creare la metrica personalizzata leggendo prima le informazioni dal tuo account. AWS Successivamente, calcola il parametro backlog per istanza, come suggerito in una sezione precedente. Infine, pubblica questo numero su con una granularità CloudWatch di 1 minuto. Quando possibile, consigliamo vivamente di dimensionare in base ai parametri con una granularità di 1 minuto, per garantire una risposta più rapida alle modifiche apportate al carico del sistema.

Per creare una metrica personalizzata () CloudWatch AWS CLI
  1. Utilizzate il get-queue-attributescomando SQS per ottenere il numero di messaggi in attesa nella coda (). ApproximateNumberOfMessages

    aws sqs get-queue-attributes --queue-url https://sqs.region.amazonaws.com/123456789/MyQueue \ --attribute-names ApproximateNumberOfMessages
  2. Utilizzate il describe-auto-scaling-groupscomando per ottenere la capacità di esecuzione del gruppo, ovvero il numero di istanze nello stato del ciclo di vita. InService Questo comando restituisce le istanze di un gruppo con scalabilità automatica insieme allo stato del loro ciclo di vita.

    aws autoscaling describe-auto-scaling-groups --auto-scaling-group-names my-asg
  3. Calcola il backlog per istanza dividendo il numero approssimativo di messaggi disponibili per il recupero dalla coda per la capacità operativa del gruppo.

  4. Crea uno script che viene eseguito ogni minuto per recuperare il valore del backlog per istanza e pubblicarlo su una metrica personalizzata. CloudWatch Quando pubblichi una metrica personalizzata, specifichi il nome, lo spazio dei nomi, l'unità, il valore e nessuna o più dimensioni del parametro. Una dimensione è composta da un nome di dimensione e un valore di dimensione.

    Per pubblicare la metrica personalizzata, sostituisci i valori segnaposto in corsivo con il nome della metrica preferita, il valore della metrica, uno spazio dei nomi (purché non inizi con "AWS«) e le dimensioni (opzionale), quindi esegui il comando seguente. put-metric-data

    aws cloudwatch put-metric-data --metric-name MyBacklogPerInstance --namespace MyNamespace \ --unit None --value 20 --dimensions MyOptionalMetricDimensionName=MyOptionalMetricDimensionValue

Dopo che l'applicazione ha emesso la metrica desiderata, i dati vengono inviati a. CloudWatch La metrica è visibile nella console. CloudWatch Puoi accedervi accedendo AWS Management Console e accedendo alla pagina. CloudWatch Puoi visualizzare il parametro passando alla pagina dei parametri oppure cercandolo nella casella di ricerca. Per informazioni sulla visualizzazione dei parametri, consulta Visualizza i parametri disponibili nella Amazon CloudWatch User Guide.

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

Il parametro creato può ora essere aggiunto a una policy di dimensionamento con monitoraggio degli obiettivi.

Creazione di una policy di dimensionamento con monitoraggio degli obiettivi (AWS CLI)
  1. Utilizza il comando cat seguente per archiviare un valore di destinazione per la policy di dimensionamento e una specifica del parametro personalizzato in un file JSON con nome config.json nella directory principale. Sostituisci ciascun placeholder input dell'utente con le tue informazioni. Per TargetValue, calcola il backlog accettabile per accettabile e inseriscilo qui. Per calcolare questo numero, stabilisci un valore di latenza normale e dividilo per il tempo medio necessario per elaborare un messaggio, come descritto in una precedente sezione.

    Se non hai specificato alcuna dimensione per il parametro creato nel passaggio 1, non includere alcuna dimensione nel parametro specifico personalizzato.

    $ cat ~/config.json { "TargetValue":100, "CustomizedMetricSpecification":{ "MetricName":"MyBacklogPerInstance", "Namespace":"MyNamespace", "Dimensions":[ { "Name":"MyOptionalMetricDimensionName", "Value":"MyOptionalMetricDimensionValue" } ], "Statistic":"Average", "Unit":"None" } }
  2. Utilizza il put-scaling-policycomando, insieme al config.json file creato nel passaggio precedente, per creare la tua politica di scalabilità.

    aws autoscaling put-scaling-policy --policy-name sqs100-target-tracking-scaling-policy \ --auto-scaling-group-name my-asg --policy-type TargetTrackingScaling \ --target-tracking-configuration file://~/config.json

    Ciò crea due allarmi: uno per l'aumento e uno per la riduzione orizzontali. Restituisce inoltre l'Amazon Resource Name (ARN) della policy con cui è registrata CloudWatch, che CloudWatch utilizza per richiamare la scalabilità ogni volta che la soglia metrica viene violata.

Fase 3: test delle policy di dimensionamento

Una volta completata la configurazione, verifica che la policy di dimensionamento funzioni. Puoi testarla incrementando il numero di messaggi nella coda SQS e verificando che il gruppo con scalabilità automatica abbia avviato un'istanza EC2 aggiuntiva. Puoi testarla anche diminuendo il numero di messaggi nella coda SQS e verificando che il gruppo con scalabilità automatica abbia terminato un'istanza EC2.

Per testare la funzione di aumento orizzontale
  1. Segui i passaggi descritti in Creazione di una coda Amazon SQS standard e invio di un messaggio o Creazione di una coda Amazon SQS FIFO e invio di un messaggio per aggiungere messaggi alla coda. Verifica di aver aumentato il numero di messaggi nella coda in modo che il parametro backlog per istanza superi il valore di destinazione.

    Possono trascorrere alcuni minuti prima che le modifiche richiamino l'allarme.

  2. Usa il describe-auto-scaling-groupscomando per verificare che il gruppo abbia avviato un'istanza.

    aws autoscaling describe-auto-scaling-groups --auto-scaling-group-name my-asg
Per testare il funzionamento della bilancia
  1. Segui la procedura descritta in Ricevi ed elimina un messaggio (console) per eliminare i messaggi dalla coda. Verifica di aver ridotto il numero di messaggi nella coda, in modo che il parametro backlog per istanza sia inferiore al valore di destinazione.

    Possono trascorrere alcuni minuti prima che le modifiche richiamino l'allarme.

  2. Usa il describe-auto-scaling-groupscomando per verificare che il gruppo abbia terminato un'istanza.

    aws autoscaling describe-auto-scaling-groups --auto-scaling-group-name my-asg