Hook del ciclo di vita di Amazon EC2 Auto Scaling - Amazon EC2 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à.

Hook del ciclo di vita di Amazon EC2 Auto Scaling

Amazon EC2 Auto Scaling offre la possibilità di aggiungere hook del ciclo di vita ai gruppi Auto Scaling. Questi hook consentono di creare soluzioni che conoscono gli eventi nel ciclo di vita dell'istanza Auto Scaling e quindi eseguire un'operazione personalizzata sulle istanze quando si verifica l'evento del ciclo di vita corrispondente. Un hook del ciclo di vita fornisce un periodo di tempo specificato (un'ora, per impostazione predefinita) per attendere il completamento dell'operazione prima che l'istanza passi allo stato successivo.

Esempio di utilizzo degli hook del ciclo di vita con istanze Auto Scaling:

  • Quando si verifica un evento di aumento orizzontale, l'istanza appena avviata completa la sequenza di avvio e passa allo stato di attesa. Quando l'istanza è in stato di attesa, esegue uno script per scaricare e installare il software necessario per l'applicazione, in modo che l'istanza sia del tutto pronta per iniziare a ricevere traffico. Dopo aver terminato l'installazione del software, lo script, invia il comando complete-lifecycle-action per continuare.

  • Quando si verifica un evento scale-in, un lifecycle hook mette in pausa l'istanza prima che venga terminata e ti invia una notifica tramite Amazon. EventBridge Mentre l'istanza è in stato di attesa, puoi richiamare una AWS Lambda funzione o connetterti all'istanza per scaricare log o altri dati prima che l'istanza venga completamente terminata.

Un uso diffuso degli hook del ciclo di vita consiste nel controllare quando le istanze sono registrate con Elastic Load Balancing. Aggiungendo un hook del ciclo di vita di avvio al gruppo con scalabilità automatica, è possibile assicurarsi che gli script di bootstrap siano stati completati correttamente e che le applicazioni nelle istanze siano pronte per accettare il traffico prima che vengano registrate nel load balancer al termine dell'hook del ciclo di vita.

Disponibilità dell'hook del ciclo di vita

Nella tabella seguente sono elencati gli hook del ciclo di vita disponibili per vari scenari.

Evento Avvio o terminazione¹ delle istanze Durata massima dell'istanza: istanze sostitutive Aggiornamento delle istanze: istanze sostitutive Ribilanciamento della capacità: istanze sostitutive Warm pool: istanze che entrano e escono dal warm pool
Avvio delle istanze
Interruzione delle istanze

¹ Si applica a tutti gli avvii e le terminazioni, indipendentemente dal fatto che vengano avviati automaticamente o manualmente, ad esempio quando si chiamano le operazioni SetDesiredCapacity o TerminateInstanceInAutoScalingGroup. Non si applica quando si allegano o si distaccano istanze, si spostano istanze in modalità standby o si elimina il gruppo con l'opzione Forza eliminazione.

Considerazioni e limitazioni per hook del ciclo di vita

Quando lavori con gli hook del ciclo di vita, tieni presente le seguenti note e limitazioni:

  • Amazon EC2 Auto Scaling fornisce il proprio ciclo di vita per facilitare la gestione dei gruppi Auto Scaling. Questo ciclo di vita differisce da quello delle altre istanze EC2. Per ulteriori informazioni, consulta Ciclo di vita delle istanze Amazon EC2 Auto Scaling. Anche le istanze in un warm pool hanno il proprio ciclo di vita, come descritto in Transizioni dello stato del ciclo di vita delle istanze in un warm pool.

  • Puoi utilizzare hook del ciclo di vita con istanze Spot, ma questi non impediscono a un'istanza di terminare nel caso in cui quella capacità non sia più disponibile, situazione che può verificarsi in qualsiasi momento, ricevendo un avviso di interruzione due minuti prima. Per ulteriori informazioni, consulta le interruzioni delle istanze Spot nella Guida per l'utente di Amazon EC2. Tuttavia, puoi abilitare il ribilanciamento della capacità per sostituire in modo proattivo le istanze Spot che hanno ricevuto una raccomandazione di ribilanciamento dal servizio Spot di Amazon EC2, un segnale che viene inviato quando un'istanza Spot presenta un elevato rischio di interruzione. Per ulteriori informazioni, consulta Utilizza il ribilanciamento della capacità per gestire le interruzioni spot di Amazon EC2.

  • Le istanze possono rimanere in stato di attesa per un determinato periodo di tempo. Il timeout di default per un hook del ciclo di vita è di un'ora (timeout dell'heartbeat). È disponibile anche un timeout globale che specifica il periodo di tempo massimo durante il quale è possibile mantenere un'istanza in uno stato di attesa. Il timeout globale è pari a 48 ore o 100 volte il timeout dell'heartbeat, a seconda di quale sia il valore minore.

  • Il risultato dell'hook del ciclo di vita può essere Abbandona o Continua. Se un'istanza viene avviata, "continue" (continua) indica che le operazioni hanno avuto esito positivo e che Dimensionamento automatico Amazon EC2 può mettere l'istanza in servizio. In caso contrario, ABBANDONA indica che le operazioni personalizzate hanno avuto esito negativo e che l'istanza può essere terminata e sostituita. Se un’istanza sta terminando, sia abandon (abbandona) che continue (continua) permettono la terminazione dell'istanza. Tuttavia, abandon (abbandona) interrompe qualsiasi operazione restante, ad esempio altri hook del ciclo di vita, mentre continue (continua) permette il completamento di qualsiasi altro hook del ciclo di vita.

  • Se gli hook del ciclo di vita hanno continuamente esito negativo, Amazon EC2 Auto Scaling limita la velocità con cui consente l'avvio delle istanze, pertanto assicurati di verificare e risolvere eventuali problemi permanenti nelle operazioni dei tuoi cicli di vita.

  • La creazione e l'aggiornamento degli hook del ciclo di vita utilizzando o un SDK forniscono opzioni non disponibili quando si crea un lifecycle hook da. AWS CLI AWS CloudFormation AWS Management Console Ad esempio, il campo per specificare l'ARN di un argomento SNS o di una coda SQS non viene visualizzato nella console, perché Amazon EC2 Auto Scaling invia già eventi ad Amazon. EventBridge Questi eventi possono essere filtrati e reindirizzati a AWS servizi come Lambda, Amazon SNS e Amazon SQS in base alle esigenze.

  • Puoi aggiungere più hook del ciclo di vita a un gruppo di Auto Scaling durante la creazione, chiamando l'CreateAutoScalingGroupAPI utilizzando, o un SDK. AWS CLI AWS CloudFormation Tuttavia, ogni hook deve avere la stessa destinazione di notifica e ruolo IAM, se specificati. Per creare lifecycle hook con obiettivi di notifica diversi e ruoli diversi, crea i lifecycle hook uno alla volta in chiamate separate all'API. PutLifecycleHook

  • Se aggiungi un hook del ciclo di vita per l'avvio, il periodo di tolleranza del controllo dell'integrità inizia non appena l'istanza raggiunge lo stato InService. Per ulteriori informazioni, consulta Impostazione del periodo di tolleranza del controllo dell'integrità per un gruppo con scalabilità automatica.

Considerazioni sul dimensionamento
  • Le politiche di scalabilità dinamica si espandono e riducono in risposta ai dati CloudWatch metrici, come CPU e I/O di rete, aggregati su più istanze. Durante il dimensionamento orizzontale, Dimensionamento automatico Amazon EC2 non conta immediatamente una nuova istanza per i parametri aggregati delle istanze del gruppo con dimensionamento automatico. Attende che l'istanza raggiunga lo stato InService e che la preparazione dell'istanza sia terminata. Per ulteriori informazioni, consulta l’argomento della preparazione dell'istanza di default, consulta Considerazioni sulle prestazioni di dimensionamento.

  • Su scala ridotta, i parametri aggregati delle istanze potrebbero non riflettere immediatamente la rimozione di un'istanza in fase di terminazione. L'istanza in fase di terminazione smette di contare per i parametri aggregati delle istanze del gruppo poco dopo l'inizio del flusso di lavoro di terminazione di Dimensionamento automatico Amazon EC2.

  • Nella maggior parte dei casi, se vengono richiamati hook del ciclo di vita, le attività di dimensionamento basate su policy di dimensionamento semplice vengono sospese fino a quando le operazioni del ciclo di vita non sono completate e il tempo di raffreddamento è trascorso. Se imposti un intervallo lungo per il tempo di raffreddamento, la ripresa del dimensionamento richiede più tempo. Per ulteriori informazioni, consulta Ulteriori ritardi causati dagli hook del ciclo di vita nell'argomento Attesa. In generale, ti consigliamo di non utilizzare policy di dimensionamento semplici se puoi utilizzare invece policy di dimensionamento a fasi o di tracciamento mirate.

Per un video introduttivo, vedi AWS re:Invent 2018: la gestione della capacità semplificata con Amazon EC2 Auto Scaling on. YouTube

Forniamo alcuni frammenti di template JSON e YAML che puoi usare per capire come dichiarare gli hook del ciclo di vita nei tuoi modelli di stack. AWS CloudFormation Per ulteriori informazioni, consulta il riferimento nella Guida per l'utente. AWS::AutoScaling::LifecycleHookAWS CloudFormation

Puoi anche visitare il nostro GitHubrepository per scaricare modelli di esempio e script di dati utente per i lifecycle hook.

Per esempi sull'uso degli hook del ciclo di vita, consulta il seguente post sul blog.