Impostazioni e policy di distribuzione - 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à.

Impostazioni e policy di distribuzione

AWS Elastic Beanstalk offre diverse opzioni per il modo in cui le distribuzioni vengono eseguite, tra cui policy di distribuzione (All at once (Tutto contemporaneamente), Rolling (In sequenza), Rolling with additional batch (In sequenza con batch aggiuntivi), Immutable (Immutabile) e Traffic splitting (Suddivisione del traffico)) e le opzioni che consentono di configurare le dimensioni di batch e il comportamento del controllo dell'integrità durante le distribuzioni. Per impostazione predefinita, l'ambiente utilizza tutte le distribuzioni contemporaneamente. Se hai creato l'ambiente con la CLI EB e si tratta di un ambiente di scalabile (non hai specificato l'opzione --single), vengono usate le implementazioni in sequenza.

Con le distribuzioni in sequenza, Elastic Beanstalk suddivide le istanze Amazon EC2 dell'ambiente in batch e distribuisce la nuova versione dell'applicazione in un batch alla volta. Lascia il resto delle istanze nell'ambiente che esegue la vecchia versione dell'applicazione. Durante una distribuzione in sequenza, alcune istanze servono le richieste con la versione precedente dell'applicazione, mentre le istanze in batch completati servono altre richieste con la nuova versione. Per informazioni dettagliate, consulta Funzionamento delle distribuzioni in sequenza.

Per mantenere la capacità completa durante le distribuzioni, puoi configurare l'ambiente per avviare un nuovo batch di istanze prima di considerare qualsiasi istanza fuori servizio. Questa opzione è nota come distribuzione in sequenza con batch aggiuntivi. Quando la distribuzione viene completato, Elastic Beanstalk termina il batch aggiuntivo di istanze.

Le distribuzioni non modificabili eseguono un aggiornamento non modificabile per avviare un set completo di nuove istanze in esecuzione con la nuova versione dell'applicazione in un gruppo Auto Scaling separato contemporaneamente alle istanze che eseguono la versione precedente. Le distribuzioni non modificabili possono evitare i problemi causati da distribuzioni in sequenza parzialmente completate. Se le nuove istanze non superano i controlli dello stato, Elastic Beanstalk le termina, lasciando le istanze originali intatte.

Ledistribuzioni con suddivisione del traffico consentono di eseguire i test canary come parte della distribuzione dell'applicazione. In una distribuzione di suddivisione del traffico, Elastic Beanstalk avvia un set completo di nuove istanze proprio come durante una distribuzione immutabile. Inoltra quindi una percentuale specificata di traffico client in ingresso alla nuova versione dell'applicazione per un periodo di valutazione specificato. Se le nuove istanze rimangono integre, Elastic Beanstalk inoltra loro tutto il traffico e termina le istanze precedenti. Se le nuove istanze non superano i controlli dello stato o se si sceglie di interrompere la distribuzione, Elastic Beanstalk riporta il traffico alle vecchie istanze e termina quelle nuove. Non ci sono mai interruzioni di servizio. Per informazioni dettagliate, consulta Come funzionano le distribuzioni con suddivisione del traffico.

avvertimento

Alcuni criteri sostituiscono tutte le istanze durante la distribuzione o l'aggiornamento. Ciò causa la perdita di tutti i saldi burst di Amazon EC2 accumulati. Succede nei seguenti casi:

  • Aggiornamenti della piattaforma gestiti con sostituzione delle istanze abilitata

  • Aggiornamenti non modificabili

  • Distribuzioni con aggiornamenti immutabili o suddivisione del traffico abilitata

Se la tua applicazione non supera tutti i controlli dello stato, ma funziona comunque correttamente a uno stato inferiore, è possibile consentire alle istanze di passare i controlli dello stato con uno stato inferiore, ad esempio Warning, modificando l'opzione Healthy threshold (Soglia integrità). Se la tue distribuzioni non vanno a buon fine perché non superano i controlli dello stato e devi forzare un aggiornamento, indipendentemente dallo stato del sistema, specifica l'opzione Ignore health check (Ignora controllo dello stato).

Quando specifichi una dimensione del batch per gli aggiornamenti in sequenza, Elastic Beanstalk utilizza questo valore anche per i riavvii delle applicazioni in sequenza. Utilizza i riavvii in sequenza quando è necessario riavviare il proxy e i server delle applicazioni in esecuzione sulle istanze dell'ambiente senza tempi di inattività.

Configurazione delle distribuzioni delle applicazioni

Nella console di gestione dell'ambiente, abilita e configura le distribuzioni delle versioni dell'applicazione in blocco modificando Updates and Deployments (Aggiornamenti e Distribuzioni) nella pagina Configuration (Configurazione) dell'ambiente.

Per configurare le distribuzioni (console)
  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 Application Deployments (Distribuzioni delle applicazioni), scegli una Deployment policy (Policy di distribuzione), le impostazioni dei batch e le opzioni di controllo dello stato.

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

La sezione Distribuzioni delle applicazioni della pagina Aggiornamenti in sequenza e distribuzioni presenta le seguenti opzioni per le distribuzioni delle applicazioni:

  • Deployment policy (Policy di distribuzione): scegli tra le seguenti opzioni di distribuzione:

    • All at once (Tutto contemporaneamente): distribuisci la nuova versione a tutte le istanze contemporaneamente. Tutte le istanze nell'ambiente sono inutilizzabili per un breve periodo di tempo durante la distribuzione.

    • Rolling (In sequenza): distribuisci la nuova versione in batch. Ogni batch non è funzionante durante la fase di distribuzione, riducendo così la capacità dell'ambiente per il numero di istanze in un batch.

    • Rolling with additional batch (In sequenza con batch aggiuntivi): distribuisci la nuova versione in batch, ma prima avvia un nuovo batch di istanze per garantire la capacità completa durante il processo di distribuzione.

    • Immutable (Non modificabile): distribuisci la nuova versione a un nuovo gruppo di istanze eseguendo un aggiornamento non modificabile.

    • Traffic splitting (Suddivisione del traffico): distribuisci la nuova versione in un nuovo gruppo di istanze e suddividi temporaneamente il traffico client in ingresso tra la versione dell'applicazione esistente e quella nuova.

Per le policy di distribuzione Rolling (In sequenza) e In sequenza con batch aggiuntivi puoi configurare:

  • Batch size (Dimensione batch): dimensione del set di istanze da distribuire in ciascuna batch.

    Scegli Percentage (Percentuale) per configurare una percentuale del numero totale di istanze EC2 nel gruppo Auto Scaling (fino al 100%), oppure scegli Fixed (Fisso) per configurare un numero fisso di istanze (fino al numero massimo consentito nella configurazione di Auto Scaling del tuo ambiente).

Per la policy di distribuzione Traffic splitting (Suddivisione del traffico) puoi configurare quanto segue:

  • Traffic split (Divisione del traffico): percentuale iniziale di traffico client in entrata che Elastic Beanstalk passa alle istanze dell'ambiente che eseguono la nuova versione dell'applicazione che stai distribuendo.

  • Traffic splitting evaluation time (Tempo di valutazione per suddivisione del traffico): il tempo di attesa espresso in minuti per Elastic Beanstalk dopo una distribuzione iniziale integra prima di procedere allo spostamento di tutto il traffico client in ingresso alla nuova versione dell'applicazione che stai distribuendo.

Pagina di configurazione della distribuzione dell'applicazione Elastic Beanstalk

La sezione Deployment preferences (Preferenze di distribuzione) contiene le opzioni relative ai controlli dello stato.

  • Ignore health check (Ignora controllo dello stato): impedisce il rollback di una distribuzione quando un batch non supera i controlli dello stato entro l'intervallo di tempo specificato in Command timeout (Timeout di comando).

  • Healthy threshold (Soglia integrità): riduce la soglia alla quale un'istanza viene considerata integra durante le implementazioni in sequenza, gli aggiornamenti in sequenza e gli aggiornamenti non modificabili.

  • Command timeout (Timeout di comando): intervallo in secondi entro il quale un'istanza deve superare i controlli dello stato prima dell'annullamento della distribuzione oppure, se l'opzione Ignore health check (Ignora controllo dello stato) è impostata, prima del passaggio al batch successivo.

Pagina di configurazione della distribuzione dell'applicazione Elastic Beanstalk

Funzionamento delle distribuzioni in sequenza

Quando elabori un batch, Elastic Beanstalk distacca tutte le istanze nel batch dal sistema di bilanciamento del carico, distribuisce la nuova versione dell'applicazione, quindi ricollega le istanze. Se attivi Connection Draining, Elastic Beanstalk svuota le connessioni esistenti delle istanze Amazon EC2 in ciascun batch prima dell'inizio della distribuzione.

Dopo aver ricollegato le istanze di un batch al sistema di bilanciamento del carico, Elastic Load Balancing attende finché non passano un numero minimo di controlli dello stato Elastic Load Balancing (il valore Healthy check count threshold (Soglia di conteggio dei controlli integri)), quindi avvia l'instradamento del traffico. Se non è configurato alcun URL di controllo dello stato, questo può accadere molto rapidamente, perché un'istanza passa il controllo dello stato non appena è in grado di accettare una connessione TCP. Se è stato impostato un URL di controllo dello stato, il sistema di bilanciamento del carico non instrada il traffico verso le istanze aggiornate finché non restituiscono un codice di stato 200 OK in risposta a una richiesta HTTP GET all'URL di controllo dello stato.

Elastic Beanstalk attende fino a quando tutte le istanze di un batch sono ritenute integre prima di passare al batch successivo. Con il report dello stato di base, lo stato dell'istanza dipende dallo stato del controllo di integrità di Elastic Load Balancing. Quando tutte le istanze del batch superano un numero sufficiente di controlli dello stato da essere considerate integre da Elastic Load Balancing, il batch è completo. Se il report dello stato avanzato è abilitato Elastic Beanstalk considera vari altri fattori, tra cui il risultato delle richieste in entrata. Grazie al reporting sullo stato migliorato, tutte le istanze devono superare 12 controlli dello stato consecutivi con lo stato OK entro due minuti per gli ambienti di server Web, e 18 controlli dello stato entro tre minuti per gli ambienti lavoratore.

Se un batch di istanze non diventa integro entro il timeout del comando, la distribuzione ha esito negativo. Se una distribuzione non va a buon fine, controlla lo stato delle istanze nel tuo ambiente per ottenere informazioni sulla causa dell'errore. Quindi esegui un'altra distribuzione con una versione fissa o funzionante dell'applicazione per eseguire il rollback.

Se una distribuzione ha esito negativo dopo che uno o più batch sono stati completati con successo, i batch completati eseguono la nuova versione dell'applicazione mentre qualsiasi batch in attesa continuare a eseguire la versione precedente. È possibile identificare la versione in esecuzione sulle istanze nel tuo ambiente sulla pagina dello stato nella console. Questa pagina visualizza l'ID della distribuzione più recente eseguita su ogni istanza nell'ambiente. Se termini le istanze della distribuzione non riuscita, Elastic Beanstalk le sostituisce con istanze che eseguono la versione dell'applicazione della distribuzione più recente andata a buon fine.

Come funzionano le distribuzioni con suddivisione del traffico

Le distribuzioni con suddivisione del traffico consentono di eseguire i test canary. Puoi indirizzare il traffico client in ingresso alla nuova versione dell'applicazione per verificare l'integrità dell'applicazione prima di eseguire il commit alla nuova versione e indirizzarle tutto il traffico.

Durante una distribuzione con suddivisione del traffico, Elastic Beanstalk crea un nuovo set di istanze in un gruppo Auto Scaling temporaneo separato. Elastic Beanstalk indica quindi al sistema di bilanciamento del carico di indirizzare una certa percentuale del traffico in entrata dell'ambiente alle nuove istanze. Quindi, per un periodo di tempo configurato, Elastic Beanstalk tiene traccia dell'integrità del nuovo set di istanze. Se tutto va bene, Elastic Beanstalk sposta il traffico rimanente alle nuove istanze e le collega al gruppo Auto Scaling originale dell'ambiente, sostituendo le vecchie istanze. Quindi Elastic Beanstalk pulisce e termina le vecchie istanze e rimuove il gruppo Auto Scaling temporaneo.

Nota

La capacità dell'ambiente non cambia durante una distribuzione con suddivisione del traffico. Elastic Beanstalk avvia lo stesso numero di istanze nel gruppo Auto Scaling temporaneo presente nel gruppo Auto Scaling originale al momento dell'avvio della distribuzione. Mantiene quindi un numero di istanze in entrambi i gruppi Auto Scaling per la durata della distribuzione. Prendi in considerazione queste informazioni quando configuri il tempo di valutazione per la suddivisione del traffico dell'ambiente.

Il rollback della distribuzione alla versione precedente dell'applicazione è rapido e non influisce sul traffico client. Se le nuove istanze non superano i controlli dello stato o se si sceglie di interrompere la distribuzione, Elastic Beanstalk riporta il traffico alle vecchie istanze e termina quelle nuove. Puoi interrompere qualsiasi distribuzione utilizzando la pagina di panoramica dell'ambiente nella console Elastic Beanstalk e scegliendo Abort current operation (Interrompi operazione corrente) in Environment actions (Operazioni ambiente). Inoltre puoi chiamare l'API AbortEnvironmentUpdate o il comando AWS CLI equivalente.

Le distribuzioni con suddivisione del traffico richiedono un sistema Application Load Balancer. Elastic Beanstalk utilizza questo tipo di sistema di bilanciamento del carico per impostazione predefinita quando crei l'ambiente utilizzando la console Elastic Beanstalk o la CLI EB.

Spazi dei nomi delle opzioni di distribuzione

Puoi utilizzare le opzioni di configurazione nello spazio dei nomi aws:elasticbeanstalk:command per configurare le distribuzioni. Se scegli la policy di suddivisione del traffico, nello spazio dei nomi aws:elasticbeanstalk:trafficsplitting sono disponibili altre opzioni per questa policy.

Utilizza l'opzione DeploymentPolicy per impostare il tipo di distribuzione. Sono supportati i seguenti valori:

  • AllAtOnce: disabilita le distribuzioni in sequenza e distribuisce sempre in tutte le istanze contemporaneamente.

  • Rolling: abilita le distribuzioni in sequenza standard.

  • RollingWithAdditionalBatch: avvia un ulteriore batch di istanze prima di avviare la distribuzione per mantenere la capacità completa.

  • Immutable: esegue un aggiornamento non modificabile per ogni distribuzione.

  • TrafficSplitting: esegue distribuzioni con suddivisione del traffico per eseguire il test canary delle distribuzioni dell'applicazione.

Quando abiliti le distribuzioni in sequenza, imposta le opzioni BatchSize e BatchSizeType per configurare le dimensioni di ciascun batch. Ad esempio, per distribuire il 25 percento di tutte le istanze in ogni batch, specifica le opzioni e i valori riportati di seguito.

Esempio .ebextensions/rolling-updates.config
option_settings: aws:elasticbeanstalk:command: DeploymentPolicy: Rolling BatchSizeType: Percentage BatchSize: 25

Per distribuire a cinque istanze in ogni batch indipendentemente dal numero di istanze in esecuzione e per avere un ulteriore batch di cinque istanze in esecuzione con la nuova versione prima di ritirare alcune delle istanze, specifica le opzioni e i valori seguenti.

Esempio .ebextensions/rolling-additionalbatch.config
option_settings: aws:elasticbeanstalk:command: DeploymentPolicy: RollingWithAdditionalBatch BatchSizeType: Fixed BatchSize: 5

Per eseguire un aggiornamento non modificabile per ciascuna distribuzione con una soglia di controllo dello stato di Warning (Avvertenza) e procedere con la distribuzione, anche se le istanze in un batch non superano i controlli dello stato entro un timeout di 15 minuti, specifica le opzioni e i valori seguenti.

Esempio .ebextensions/immutable-ignorehealth.config
option_settings: aws:elasticbeanstalk:command: DeploymentPolicy: Immutable HealthCheckSuccessThreshold: Warning IgnoreHealthCheck: true Timeout: "900"

Per eseguire distribuzioni con suddivisione del traffico, inoltrare il 15% del traffico client alla nuova versione dell'applicazione e valutare lo stato per 10 minuti, specifica le opzioni e i valori seguenti.

Esempio .ebextensions/traffic-splitting.config
option_settings: aws:elasticbeanstalk:command: DeploymentPolicy: TrafficSplitting aws:elasticbeanstalk:trafficsplitting: NewVersionPercent: "15" EvaluationTime: "10"

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.