Aggiornamenti in sequenza della configurazione dell'ambiente Elastic Beanstalk - AWS Elastic Beanstalk

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

Aggiornamenti in sequenza della configurazione dell'ambiente Elastic Beanstalk

Quando una modifica della configurazione richiede la sostituzione delle istanze, Elastic Beanstalk è in grado di eseguire l'aggiornamento in batch per evitare tempi di inattività durante la distribuzione della modifica. Durante un aggiornamento in sequenza, la capacità è solo ridotta dalle dimensioni di un singolo batch, che puoi configurare. Elastic Beanstalk seleziona un batch di istanze non funzionanti, lo termina, quindi avvia un batch con la nuova configurazione. Quando il nuovo batch avvia l'elaborazione delle richieste, Elastic Beanstalk si sposta al batch successivo.

I batch di aggiornamento delle configurazioni in sequenza possono essere elaborati periodicamente (in base al tempo), con un ritardo tra ogni batch, o in base allo stato. Per gli aggiornamenti in sequenza basati sul tempo, è possibile configurare la quantità di tempo che Elastic Beanstalk attende dopo aver completato il lancio di un batch di istanze prima di passare al batch successivo. Questa pausa temporale consente alla tua applicazione di eseguire il bootstrap e di avviare l'elaborazione delle richieste.

Con gli aggiornamenti in sequenza basati sullo stato, Elastic Beanstalk attende che le istanze in un batch superino i controlli dello stato prima di passare al batch successivo. Lo stato di un'istanza viene determinato dal sistema di reportistica dello stato, che può essere di base o migliorato. Per lo stato di base, un batch è considerato integro non appena tutte le istanze in esso contenute passano i controlli dello stato di Elastic Load Balancing (ELB).

Con il reporting sullo stato migliorato, tutte le istanze in un batch devono superare più controlli dello stato consecutivi prima che Elastic Beanstalk possa passare al batch successivo. Oltre ai controlli dello stato di ELB, che verificano solo le istanze, il reporting dello stato migliorato monitora i log delle applicazioni e lo stato delle altre risorse del tuo ambiente. In un ambiente server Web con lo stato migliorato, tutte le istanze devono superare 12 controlli dello stato nel corso di due minuti (18 controlli di oltre tre minuti per gli ambienti lavoratore). Se una qualsiasi delle istanze non supera un controllo dello stato, il conteggio ricomincia.

Se l'integrità di un batch non viene garantita entro il timeout dell'aggiornamento in sequenza (il valore predefinito è 30 minuti), l'aggiornamento viene annullato. Il timeout dell'aggiornamento in sequenza è un'opzione di configurazione disponibile nello spazio dei nomi aws:autoscaling:updatepolicy:rollingupdate. Se l'applicazione non supera i controlli dello stato con Ok ma è stabile a un livello diverso, puoi impostare l'opzione HealthCheckSuccessThreshold nello spazio dei nomi aws:elasticbeanstalk:healthreporting:system per cambiare il livello a cui Elastic Beanstalk considera integra un'istanza.

Se il processo di aggiornamento in sequenza ha esito negativo, Elastic Beanstalk avvia un altro aggiornamento in sequenza per eseguire il rollback alla configurazione precedente. Un aggiornamento in sequenza può non riuscire a causa di controlli dello stato non riusciti oppure se l'avvio di nuove istanze comporta il superamento delle quote dell'account. Se raggiungi la quota per il numero di istanze Amazon EC2, per esempio, l'aggiornamento in sequenza può dare esito negativo quando tenta di effettuare il provisioning di un batch di nuove istanze. In questo caso, il rollback ha esito negativo.

Un rollback non riuscito termina il processo di aggiornamento e lascia l'ambiente in uno stato non integro. I batch non elaborati eseguono ancora le istanze con la configurazione precedente, mentre i batch con esito positivo utilizzano la nuova configurazione. Per risolvere le problematiche di un ambiente dopo un rollback non riuscito, devi prima risolvere il problema sottostante che ha portato al fallimento dell'aggiornamento, quindi avviare un altro aggiornamento dell'ambiente.

Un metodo alternativo consiste nel distribuire la nuova versione dell'applicazione in un ambiente diverso, quindi eseguire uno scambio di CNAME per reindirizzare il traffico e senza tempi di inattività. Per ulteriori informazioni, consulta Distribuzioni blu/verde con Elastic Beanstalk.

Aggiornamenti e distribuzioni in sequenza a confronto

Gli aggiornamenti in sequenza si verificano in caso di modifiche alle impostazioni che richiedono il provisioning di nuove istanze Amazon EC2 per l'ambiente. Questo include le modifiche alla configurazione del gruppo Auto Scaling come il tipo di istanza, le impostazioni della coppia di chiavi e le modifiche alla configurazione del VPC. In un aggiornamento in sequenza, ogni batch di istanze viene terminato prima che venga eseguito il provisioning di un nuovo batch per sostituirlo.

Le distribuzioni in sequenza si verificano ogni volta che distribuisci l'applicazione e possono in genere essere eseguite senza sostituire le istanze dell'ambiente. Elastic Beanstalk seleziona ogni batch non funzionante, distribuisce la nuova versione dell'applicazione, quindi rende il batch nuovamente funzionante.

Fa eccezione il caso in cui modifichi le impostazioni che richiedono la sostituzione delle istanze nello stesso momento in cui distribuisci una nuova versione dell'applicazione. Ad esempio, se modifichi le impostazioni del nome della chiave in un file di configurazione nel tuo bundle di origine e lo distribuisci nel tuo ambiente, attivi un aggiornamento in sequenza. Invece di distribuire la nuova versione dell'applicazione per ogni batch di istanze esistenti, viene eseguito il provisioning di un nuovo batch di istanze con la nuova configurazione. In questo caso non avviene una distribuzione separata, poiché alle nuove istanze viene assegnata la nuova versione dell'applicazione.

Ogni volta che le nuove istanze vengono assegnate come parte di un aggiornamento dell'ambiente, c'è una fase di distribuzione in cui il codice sorgente dell'applicazione viene distribuito alle nuove istanze e vengono applicate le impostazioni di configurazione che modificano il sistema operativo o il software sulle istanze. Le impostazioni del controllo dello stato della distribuzione (Ignore health check (Ignora controllo dello stato), Healthy threshold (Soglia integrità) e Command timeout (Timeout del comando)) si applicano allo stato con aggiornamenti in sequenza e non modificabili durante la fase di distribuzione.

Configurazione degli aggiornamenti in sequenza

Puoi attivare e configurare gli aggiornamenti in sequenza nella console Elastic Beanstalk.

Per abilitare gli aggiornamenti in sequenza
  1. Apri la console Elastic Beanstalk e nell'elenco Regions (Regioni) seleziona la tua Regione AWS.

  2. Nel pannello di navigazione selezionare Environments (Ambienti), quindi selezionare il nome dell'ambiente dall'elenco.

    Nota

    Se si dispone di molti ambienti, utilizzare la barra di ricerca per filtrare l'elenco degli ambienti.

  3. Nel riquadro di navigazione, seleziona Configuration (Configurazione).

  4. Nella categoria di configurazione Rolling updates and deployments (Aggiornamenti in sequenza e distribuzioni), scegliere Edit (Modifica).

  5. Nella sezione Configuration updates (Aggiornamenti alla configurazione), per Rolling update type (Tipo di aggiornamento in sequenza), seleziona una delle opzioni Rolling (In sequenza).

    Sezione degli aggiornamenti della configurazione della pagina per la modifica delle configurazione degli aggiornamenti in sequenza e delle distribuzioni
  6. Scegli le impostazioni Batch size (Dimensione batch), Minimum capacity (Capacità minima) e Pause time (Tempo di pausa).

  7. Per salvare le modifiche scegli Apply (Applica) nella parte inferiore della pagina.

La sezione Configuration updates (Aggiornamenti configurazione) della pagina Rolling updates and deployments (Aggiornamenti in sequenza e distribuzioni) presenta le seguenti opzioni per gli aggiornamenti in sequenza:

  • Rolling update type (Tipo aggiornamento in sequenza): Elastic Beanstalk attende il termine dell'aggiornamento di un batch di istanze prima di passare al batch successivo, per consentire a tali istanze di finire il processo di bootstrap e cominciare a servire il traffico. Seleziona una delle opzioni seguenti:

    • Rolling based on Health (Sequenza basata sullo stato): attendi che le istanze nel batch attuale siano integre prima di ripristinare le istanze e avviare il batch successivo.

    • Rolling based on Time (Sequenza basata sul tempo): specifica un intervallo di attesa tra l'avvio di nuove istanze e il loro ripristino prima di avviare il batch successivo.

    • Immutable (Non modificabile): applica la modifica di configurazione a un nuovo gruppo di istanze eseguendo un aggiornamento non modificabile.

  • Batch size (Dimensione batch): numero di istanze da sostituire in ogni batch, compreso tra 1 e 10000. Per impostazione predefinita, questo valore è pari a un terzo della dimensione minima del gruppo Auto Scaling, arrotondata a un numero intero.

  • Minimum capacity (Capacità minima): numero minimo di istanze per proseguire nell'esecuzione mentre altre istanze vengono aggiornate, compreso tra 0 e 9999. Il valore predefinito è la dimensione minima del gruppo Auto Scaling o una dimensione inferiore alla dimensione massima del gruppo Auto Scaling, a seconda di qual è più bassa.

  • Pause time (Tempo di pausa) (basato solo sul tempo): tempo di attesa dopo l'aggiornamento di un batch prima di passare al batch successivo, per consentire all'applicazione di iniziare a ricevere il traffico. Tra 0 secondi e 1 ora.

Spazio dei nomi aws:autoscaling:updatepolicy:rollingupdate

Puoi inoltre utilizzare le opzioni di configurazione nello spazio dei nomi aws:autoscaling:updatepolicy:rollingupdate per configurare le distribuzioni in sequenza.

Utilizza l'opzione RollingUpdateEnabled per abilitare gli aggiornamenti in sequenza e RollingUpdateType per scegliere il tipo di aggiornamento. Sono supportati i seguenti valori per RollingUpdateType:

  • Health (Sequenza basata sullo stato) - Attendi fino a quando le istanze nel batch attuale sono integre prima di ripristinare le istanze e avviare il batch successivo.

  • Time - Specifica un intervallo di attesa tra l'avvio di nuove istanze e il loro ripristino prima di avviare il batch successivo.

  • Immutable: applica la modifica di configurazione a un nuovo gruppo di istanze eseguendo un aggiornamento non modificabile.

Quando abiliti gli aggiornamenti in sequenza, imposta le opzioni MaxBatchSize e MinInstancesInService per configurare le dimensioni di ciascun batch. Per gli aggiornamenti in sequenza basati sul tempo e sullo stato, è anche possibile configurare, rispettivamente, PauseTime e Timeout.

Ad esempio, per avviare fino a cinque istanze alla volta, mantenendo almeno due istanze in servizio, e attendere cinque minuti e 30 secondi tra i batch, specifica i seguenti valori e opzioni.

Esempio .ebextensions/timebased.config
option_settings: aws:autoscaling:updatepolicy:rollingupdate: RollingUpdateEnabled: true MaxBatchSize: 5 MinInstancesInService: 2 RollingUpdateType: Time PauseTime: PT5M30S

Per abilitare gli aggiornamenti in sequenza basati sullo stato, con un timeout di 45 minuti per ogni batch, specifica i seguenti valori e opzioni.

Esempio .ebextensions/healthbased.config
option_settings: aws:autoscaling:updatepolicy:rollingupdate: RollingUpdateEnabled: true MaxBatchSize: 5 MinInstancesInService: 2 RollingUpdateType: Health Timeout: PT45M

I valori di Timeout e PauseTime devono essere specificati nella durata ISO8601: PT#H#M#S, dove ogni # è, rispettivamente, il numero di ore, minuti e/o secondi.

La console Elastic Beanstalk e la CLI EB applicano i valori consigliati per le opzioni precedenti. Rimuovi queste impostazioni se desideri utilizzare i file di configurazione per configurare le stesse opzioni. Per informazioni dettagliate, consulta Valori consigliati.