Controller e strategie di implementazione dei servizi Amazon ECS - Amazon Elastic Container Service

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

Controller e strategie di implementazione dei servizi Amazon ECS

Prima di implementare il servizio, stabilire le opzioni per l'implementazione e le funzionalità utilizzate dal servizio.

Strategia di pianificazione

Sono disponibili due strategie del pianificatore del servizio:

  • REPLICA: la strategia di pianificazione delle repliche colloca e gestisce il numero desiderato di attività nel cluster. Di default, il pianificatore del servizio distribuisce le attività tra le zone di disponibilità. Puoi utilizzare vincoli e strategie di posizionamento delle attività per personalizzare le decisione riguardo al posizionamento delle attività. Per ulteriori informazioni, consultare Strategia di pianificazione delle repliche.

  • DAEMON: la strategia di pianificazione del daemon distribuisce esattamente un'attività in ciascuna istanza di container attiva, che soddisfa tutti i vincoli di posizionamento delle attività specificati nel cluster. Quando si utilizza questa strategia, non è necessario specificare un numero di attività desiderato o una strategia di posizionamento delle attività, né utilizzare le policy di Auto Scaling del servizio. Per ulteriori informazioni, consultare Strategia di pianificazione dei daemon.

    Nota

    I processi Fargate non supportano la strategia di pianificazione DAEMON

Strategia di pianificazione delle repliche

La strategia di pianificazione delle repliche posiziona e gestisce il numero desiderato di attività nel cluster.

Per un servizio che esegue attività su Fargate, quando il pianificatore di servizi avvia nuove attività o arresta quelle in esecuzione, il pianificatore fa del suo meglio per mantenere il bilanciamento tra le zone di disponibilità. Non è necessario specificare strategie di posizionamento delle attività o vincoli.

Quando crei un servizio che esegue attività su EC2 istanze, puoi facoltativamente specificare strategie e vincoli di posizionamento delle attività per personalizzare le decisioni di posizionamento delle attività. Se non vengono specificati vincoli o strategie di posizionamento delle attività, per impostazione predefinita il pianificatore del servizio distribuisce le attività tra le zone di disponibilità. Il pianificatore di servizi utilizza la logica seguente:

  • Determina quale delle istanze di container nel cluster può supportare la definizione di attività del servizio (in termini, ad esempio, di CPU, memoria, porte e attributi dell'istanza di container necessari).

  • Determina quali istanze di container soddisfano gli eventuali vincoli di posizionamento definiti per il servizio.

  • Se disponi di un servizio di replica che dipende da un servizio daemon (ad esempio, un'attività del daemon log router che deve essere eseguita prima che le attività possano utilizzare la registrazione), crea un vincolo di posizionamento delle attività che assicuri che le attività del servizio daemon vengano posizionate sull' EC2 istanza prima delle attività del servizio di replica. Per ulteriori informazioni, consulta Vincoli di posizionamento di esempio delle attività di Amazon ECS.

  • Se hai definito una strategia di posizionamento, utilizzala per selezionare un'istanza tra le candidate rimanenti.

  • Se non è stata definita una strategia di posizionamento, bilancia le attività tra le zone di disponibilità nel cluster con la logica seguente:

    • Ordina le istanze di container valide. Dai priorità alle istanze che hanno il minor numero di attività in esecuzione per questo servizio nella rispettiva zona di disponibilità. Ad esempio, se nella zona A è presente un'attività del servizio in esecuzione e nelle zone B e C nessuna, le istanze di container valide nella zona B o C sono considerate ottimali per il posizionamento.

    • Posiziona la nuova attività del servizio in un'istanza di container valida in una zona di disponibilità ottimale in base alle fasi precedenti. Dai la priorità alle istanze di container con il minor numero di attività in esecuzione per questo servizio.

Si consiglia di utilizzare la funzionalità di ribilanciamento del servizio quando si utilizza la strategia REPLICA perché contribuisce a garantire un'elevata disponibilità del servizio.

Strategia di pianificazione dei daemon

La strategia di pianificazione daemon distribuisce esattamente un'attività in ciascuna istanza di container attiva che soddisfa tutti i vincoli di posizionamento delle attività specificati nel cluster. Il pianificatore del servizio valuta i vincoli di posizionamento delle attività per le attività in esecuzione e interrompe quelle che non rispondono a tali vincoli. Quando utilizzi questa strategia, non è necessario specificare il numero desiderato di attività, una strategia di posizionamento delle attività o utilizzare le politiche di Service Amazon EC2 Auto Scaling.

Amazon ECS riserva risorse di calcolo dell'istanza di container tra cui CPU, memoria e interfacce di rete per i processi del daemon. Quando avvii un servizio daemon in un cluster con altri servizi di replica, Amazon ECS assegna la priorità all'attività del daemon. Questo significa che l'attività del daemon è la prima da avviare sulle istanze e l'ultima da interrompere dopo aver interrotto tutte le attività delle repliche. La strategia garantisce che le risorse non vengano utilizzate da attività di replica in sospeso e che siano disponibili per le attività del daemon.

Il pianificatore del servizio del daemon non posiziona alcuna attività sulle istanze con stato DRAINING. Se un'istanza di container passa a uno stato DRAINING, le attività daemon in esecuzione su di essa vengono arrestate. Il pianificatore del servizio inoltre monitora l'aggiunta di nuove istanze di container al cluster, alle quali aggiunge le attività daemon.

Quando si specifica una configurazione di implementazione, il valore del parametro maximumPercent deve essere 100 (specificato in percentuale), che è il valore predefinito utilizzato se non è impostato. Il valore predefinito per il parametro minimumHealthyPercent è 0 (specificato come percentuale).

Quando modifichi i vincoli di posizionamento per il servizio daemon devi riavviare il servizio. Amazon ECS aggiorna dinamicamente le risorse riservate sulle istanze idonee per l'attività del daemon. Per le istanze esistenti, il pianificatore prova a posizionare l'attività sull'istanza.

Una modifica della dimensione del processo o della prenotazione della risorsa del container nella definizione di attività avvia una nuova implementazione. Una nuova implementazione inizia anche quando si aggiorna un servizio o si imposta una revisione diversa della definizione dell'attività. Amazon ECS raccoglie la CPU e le prenotazioni di memoria aggiornate per il daemon e quindi blocca tale capacità per il processo del daemon.

Se ci sono risorse insufficienti per uno dei casi precedenti, si verifica quanto segue:

  • Il posizionamento del processo ha esito negativo.

  • Viene generato un CloudWatch evento.

  • Amazon ECS continua a provare a pianificare il processo sull'istanza attendendo che le risorse diventino disponibili.

  • Amazon ECS libera tutte le istanze riservate che non soddisfano più i criteri di vincolo di posizionamento e interrompe i processi del daemon corrispondenti.

La strategia di pianificazione del daemon può essere utilizzata nei seguenti casi:

  • Esecuzione di container di applicazioni

  • Esecuzione di container di supporto per processi di registrazione, monitoraggio e traccia

Le attività che utilizzano Fargate oppure i tipi di controller di implementazione CODE_DEPLOY o EXTERNAL non supportano la strategia di pianificazione del daemon.

Quando il pianificatore di servizi arresta i processi in esecuzione, prova a mantenere il bilanciamento tra le zone di disponibilità nel cluster. Il pianificatore utilizza la logica seguente:

  • Se è stata definita una strategia di posizionamento, utilizzare tale strategia per selezionare le attività da terminare. Ad esempio, se per un servizio è definita una strategia di distribuzione tra zone di disponibilità, viene selezionata un'attività che lascia le attività rimanenti con la migliore distribuzione.

  • Se non è stata definita una strategia di posizionamento, mantieni il bilanciamento tra le zone di disponibilità nel cluster con la logica seguente:

    • Ordina le istanze di container valide. Dai priorità alle istanze che hanno il maggior numero di attività in esecuzione per questo servizio nella rispettiva zona di disponibilità. Ad esempio, se nella zona A è presente un'attività del servizio in esecuzione e nelle zone B e C ne sono presenti due, le istanze di container nella zona B o C sono considerate ottimali per l'arresto.

    • Arresta l'attività del servizio in un'istanza di container in una zona di disponibilità ottimale in base alle fasi precedenti. Dai la priorità alle istanze di container con il maggior numero di attività in esecuzione per questo servizio.

Controller di implementazione

Il controller di implementazione è il meccanismo che determina il modo in cui le attività vengono implementate per il servizio. Le opzioni valide sono:

  • ECS

    Quando si crea un servizio che utilizza il controller di implementazione ECS, è possibile scegliere tra le seguenti strategie di implementazione:

    • ROLLING: quando si crea un servizio che utilizza la strategia di implementazione con aggiornamento in sequenza (ROLLING), il pianificatore del servizio Amazon ECS sostituisce le attività correntemente in esecuzione con le nuove. Il numero di attività che Amazon ECS aggiunge o rimuove dal servizio durante un aggiornamento continuo è controllato dalla configurazione di distribuzione del servizio.

      Le distribuzioni di aggiornamento continuo sono più adatte per i seguenti scenari:

      • Aggiornamenti graduali ai servizi: è necessario aggiornare il servizio in modo incrementale senza mettere offline l'intero servizio contemporaneamente.

      • Requisiti di risorse limitati: è necessario evitare i costi aggiuntivi in termini di risorse derivanti dall'esecuzione simultanea di due ambienti completi (come richiesto dalle implementazioni blu/verdi).

      • Tempo di implementazione accettabile: l'applicazione può tollerare un processo di implementazione più lungo, poiché gli aggiornamenti continui sostituiscono le attività una per una.

      • Rollback istantaneo non necessario: il servizio può tollerare un processo di rollback che richiede minuti anziché secondi.

      • Processo di implementazione semplice: si preferisce un approccio di implementazione semplice senza la complessità della gestione di più ambienti, gruppi di destinazione e listener.

      • Nessun requisito di bilanciamento del carico: il servizio non utilizza né richiede un load balancer, Application Load Balancer, Network Load Balancer o Service Connect (necessari per le implementazioni). blue/green

      • Applicazioni stateful: l'applicazione mantiene uno stato che rende difficile l'esecuzione di due ambienti paralleli.

      • Attenzione ai costi: si desidera ridurre al minimo i costi di implementazione evitando l'esecuzione di ambienti duplicati durante l'implementazione.

      Gli aggiornamenti continui sono la strategia di implementazione predefinita per i servizi e forniscono un equilibrio tra sicurezza dell'implementazione ed efficienza delle risorse per molti scenari applicativi comuni.

    • BLUE_GREEN: una strategia di implementazione blu/verde (BLUE_GREEN) è una metodologia di rilascio che riduce i tempi di inattività e i rischi eseguendo due ambienti di produzione identici denominati blu e verde. Con le blue/green implementazioni di Amazon ECS, puoi convalidare nuove revisioni dei servizi prima di indirizzare il traffico di produzione verso di esse. Questo approccio offre un modo più sicuro per implementare le modifiche con la possibilità di ripristinarle rapidamente, se necessario.

      Le blue/green implementazioni di Amazon ECS sono più adatte per i seguenti scenari:

      • Convalida dei servizi: quando è necessario convalidare le nuove revisioni del servizio prima di indirizzare il traffico di produzione verso di esse

      • Azzeramento del tempo di inattività: quando il servizio richiede implementazioni senza tempi di inattività

      • Rollback istantaneo: quando è necessaria la possibilità di eseguire rapidamente il rollback se vengono rilevati problemi

      • Requisito di bilanciatore del carico: quando il servizio utilizza Application Load Balancer, Network Load Balancer o Service Connect

    • LINEAR: Una strategia di implementazione lineare (LINEAR) sposta gradualmente il traffico dall'ambiente di produzione corrente a un nuovo ambiente con incrementi percentuali uguali in un periodo di tempo specificato. Con le implementazioni lineari di Amazon ECS, puoi controllare il ritmo dello spostamento del traffico e convalidare nuove revisioni dei servizi con quantità crescenti di traffico di produzione.

      Le implementazioni lineari di Amazon ECS sono più adatte per i seguenti scenari:

      • Convalida graduale: quando desideri convalidare gradualmente la tua nuova versione del servizio con l'aumento del traffico

      • Monitoraggio delle prestazioni: quando hai bisogno di tempo per monitorare metriche e prestazioni durante l'implementazione

      • Riduzione al minimo del rischio: quando si desidera ridurre al minimo il rischio esponendo la nuova versione al traffico di produzione in modo incrementale

      • Requisito di bilanciatore del carico: quando il servizio utilizza Application Load Balancer, Network Load Balancer o Service Connect

    • CANARY: Una strategia di implementazione di Canary (CANARY) sposta prima una piccola percentuale di traffico verso la nuova revisione del servizio, quindi sposta il traffico rimanente tutto in una volta dopo un periodo di tempo specificato. Ciò consente di testare la nuova versione con un sottoinsieme di utenti prima della distribuzione completa.

      Le implementazioni di Amazon ECS Canary sono più adatte per i seguenti scenari:

      • Test delle funzionalità: quando desideri testare nuove funzionalità con un piccolo sottoinsieme di utenti prima dell'implementazione completa

      • Convalida della produzione: quando è necessario convalidare prestazioni e funzionalità con un traffico di produzione reale

      • Controllo del raggio di esplosione: quando si desidera ridurre al minimo il raggio di esplosione se vengono rilevati problemi nella nuova versione

      • Requisito di bilanciatore del carico: quando il servizio utilizza Application Load Balancer, Network Load Balancer o Service Connect

  • Esterno

    Utilizzare un controller di implementazione di terza parte.

  • Implementazione blu/verde (fornita da) AWS CodeDeploy

    CodeDeploy installa una versione aggiornata dell'applicazione come nuovo set di attività sostitutivo e reindirizza il traffico di produzione dal set di attività dell'applicazione originale al set di attività sostitutivo. Il set di attività originale viene terminato una volta completata l'implementazione. Usare questo controller di implementazione per verificare una nuova implementazione di un servizio prima che questo riceva traffico di produzione.

Terminologia di implementazione

I seguenti termini vengono utilizzati in tutta la documentazione sulla distribuzione di Amazon ECS:

Implementazione blu-verde

Una strategia di implementazione che crea un nuovo ambiente (verde) accanto all'ambiente esistente (blu), quindi sposta il traffico dal blu al verde dopo la convalida.

Implementazione Canary

Una strategia di distribuzione che indirizza una piccola percentuale di traffico verso una nuova versione mantenendo la maggior parte sulla versione stabile per la convalida.

Implementazione lineare

Una strategia di distribuzione che sposta gradualmente il traffico dalla vecchia versione alla nuova versione con incrementi uguali nel tempo.

Distribuzione continua

Una strategia di distribuzione che sostituisce le istanze della vecchia versione con le istanze della nuova versione una alla volta.

Set di attività

Una raccolta di attività che eseguono la stessa definizione di attività all'interno di un servizio durante una distribuzione.

Gruppo target

Un raggruppamento logico di destinazioni che ricevono traffico da un sistema di bilanciamento del carico durante le distribuzioni.

Controller di implementazione

Il metodo utilizzato per distribuire nuove versioni del servizio, come Amazon ECS CodeDeploy, o controller esterni.

Rollback

Il processo di ripristino a una versione precedente dell'applicazione quando vengono rilevati problemi durante la distribuzione.