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 di scalabilità, 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 sia 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.
Indice
Come funzionano gli hook del ciclo di vita nei gruppi Auto Scaling
Controlla la conservazione delle istanze con le policy relative al ciclo di vita delle istanze
Completa un'azione del ciclo di vita in un gruppo Auto Scaling
Tutorial: Usa i metadati dell'istanza per recuperare lo stato del ciclo di vita
Tutorial : Configurazione di un hook del ciclo di vita che richiama una funzione Lambda
Disponibilità dell'hook del ciclo di vita
Nella tabella seguente sono elencati gli hook del ciclo di vita disponibili per vari scenari.
| Event | 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 di 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.
-
Se configuri un warm pool per il tuo gruppo Auto Scaling, Amazon EC2 Auto Scaling arresta o iberna ogni istanza che entra nel warm pool. L'azione di arresto o ibernazione non attende il completamento dell'esecuzione dei dati dell'utente. Per mantenere un'istanza fino al completamento dello script di bootstrap, utilizza un gancio del ciclo di vita per l'azione del ciclo di vita.
EC2_INSTANCE_LAUNCHINGPer ulteriori informazioni, consulta Usa gli hook del ciclo di vita con un pool caldo nel gruppo Auto Scaling. -
Per impostazione predefinita, gli hook relativi al ciclo di vita delle terminazioni funzionano nel migliore dei modi. Se un hook del ciclo di vita di terminazione scade o viene abbandonato, Amazon EC2 Auto Scaling procede con la chiusura immediata dell'istanza. Puoi combinare gli hook relativi al ciclo di vita delle interruzioni con una politica del ciclo di vita dell'istanza per la conservazione delle istanze. Per ulteriori informazioni, consulta Controlla la conservazione delle istanze con le policy relative al ciclo di vita delle istanze.
-
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 Spot Instance interruptions nella Amazon EC2 User Guide. 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 Ribilanciamento della capacità in Auto Scaling per sostituire le istanze Spot a rischio.
-
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 di hook del ciclo di vita utilizzando AWS CLI CloudFormation, o un SDK fornisce opzioni non disponibili quando si crea un hook del ciclo di vita da. Console di gestione AWS 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, se necessario.
-
Puoi aggiungere più hook del ciclo di vita a un gruppo Auto Scaling durante la creazione, chiamando l'API utilizzando, o un SDK. CreateAutoScalingGroup AWS CLI CloudFormation Tuttavia, ogni hook deve avere la stessa destinazione di notifica e ruolo IAM, se specificati. Per creare hook del ciclo di vita con destinazioni di notifica e ruoli diversi, crea gli hook del ciclo di vita 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 policy di scalabilità dinamica sono scalabili in entrata e in uscita in risposta a dati CloudWatch metrici, come CPU e rete I/O, 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
InServicee 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.
Risorse correlate
Per un video introduttivo, guarda AWS re:Invent 2018: La gestione della capacità resa semplice con Amazon EC2 Auto Scaling on.
Forniamo alcuni frammenti di modelli JSON e YAML che puoi utilizzare per capire come dichiarare gli hook del ciclo di vita nei tuoi modelli di stack. CloudFormation Per ulteriori informazioni, consulta il riferimento:: nella Guida per l'utente. AWS::AutoScaling LifecycleHook AWS CloudFormation
Puoi anche visitare il nostro GitHub repository
Per esempi sull'uso degli hook del ciclo di vita, consulta il seguente post sul blog.