Controller e strategie di distribuzione 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 distribuzione dei servizi Amazon ECS

Prima di distribuire il servizio, stabilite le opzioni per la distribuzione 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, consulta 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, consulta 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 Esempio di vincoli di posizionamento 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, in quanto contribuisce a garantire un'elevata disponibilità del servizio. REPLICA

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 service scheduler valuta i vincoli di posizionamento delle attività per le attività in esecuzione e interrompe le attività che non soddisfano i vincoli di posizionamento. Quando si utilizza questa strategia, non è necessario specificare il numero desiderato di attività, una strategia di posizionamento delle attività o utilizzare le politiche di Service 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. Ciò significa che l'attività daemon è la prima attività da avviare sulle istanze e l'ultima attività da interrompere dopo l'interruzione di tutte le attività di replica. 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 distribuzione, il valore del maximumPercent parametro deve essere 100 (specificato in percentuale), che è il valore predefinito utilizzato se non è impostato. Il valore predefinito per il minimumHealthyPercent parametro è 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 distribuzione 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 il tipo di avvio 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 distribuzione

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

  • ECS

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

    • ROLLING: Quando crei un servizio che utilizza la strategia di distribuzione rolling update (ROLLING), il service scheduler di Amazon ECS sostituisce le attività attualmente in esecuzione con nuove attività. Il numero di attività che Amazon ECS aggiunge o rimuove durante un aggiornamento in sequenza è controllato dalla configurazione dell'implementazione del servizio.

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

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

      • Requisiti di risorse limitati: si desidera evitare i costi aggiuntivi legati alla gestione simultanea di due ambienti completi (come richiesto dalle implementazioni blu/green).

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

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

      • Processo di implementazione semplice: preferisci un approccio di implementazione semplice senza la complessità della gestione di più ambienti, gruppi target e ascoltatori.

      • 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 con stato: l'applicazione mantiene uno stato che rende difficile l'esecuzione di due ambienti paralleli.

      • Sensibilità ai costi: si desidera ridurre al minimo i costi di implementazione evitando di eseguire ambienti duplicati durante l'implementazione.

      Gli aggiornamenti periodici sono la strategia di distribuzione 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 del servizio: quando è necessario convalidare nuove revisioni del servizio prima di indirizzare il traffico di produzione verso di esse

      • Zero tempi di inattività: quando il servizio richiede implementazioni senza tempi di inattività

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

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

  • Esterno

    Utilizza un controller di distribuzione di terze parti.

  • 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 la distribuzione. Utilizzate questo controller di distribuzione per verificare una nuova distribuzione di un servizio prima di inviargli il traffico di produzione.