Drenare le istanze di container di Amazon ECS
In alcuni casi, potresti dover rimuovere un'istanza di container da un cluster; ad esempio, per eseguire aggiornamenti di sistema o ridurre verticalmente la capacità del cluster. Amazon ECS offre la possibilità di passare un'istanza di container a uno stato DRAINING. Questa operazione è nota come svuotamento dell'istanza di container. Quando un'istanza di container è impostata su DRAINING, Amazon ECS impedisce che venga pianificato il posizionamento di nuovi processi nell'istanza di container.
Comportamento di svuotamento per i servizi
Qualsiasi processo che fa parte di un servizio che si trova in uno stato PENDING viene arrestato immediatamente. Se nel cluster è disponibile la capacità dell'istanza di container, il pianificatore di servizi avvierà i processi di sostituzione. Se la capacità dell'istanza di container non è sufficiente, verrà inviato un messaggio di evento del servizio che indica il problema.
I processi che fanno parte di un servizio nell'istanza di container che si trovano in uno stato RUNNING passano a uno stato STOPPED. Lo scheduler di servizi prova a sostituire le attività in base al tipo di implementazione e ai parametri di configurazione dell'implementazione del servizio, minimumHealthyPercent e maximumPercent. Per ulteriori informazioni, consultare Servizi Amazon ECS e Parametri di definizione del servizio di Amazon ECS.
-
Se
minimumHealthyPercentè inferiore al 100%, il pianificatore può ignoraredesiredCounttemporaneamente durante la sostituzione delle attività. Ad esempio,desiredCountsono quattro attività, un minimo del 50% permette al pianificatore di interrompere due attività esistenti prima di avviare due nuove attività. Se il minimo è del 100%, il pianificatore del servizio non può rimuovere le attività esistenti fino a quando le attività di sostituzione non vengono considerate integre. Se le attività per i servizi che non utilizzano un bilanciatore del carico sono in statoRUNNING, vengono considerate integre. Le attività per i servizi che utilizzano un bilanciatore del carico vengono considerate integre se sono in statoRUNNINGe se il bilanciatore del carico considera integra l'istanza di container su cui sono ospitate.Importante
Se utilizzi le istanze Spot e
minimumHealthyPercentè maggiore o uguale al 100%, il servizio non avrà abbastanza tempo per sostituire l'attività prima della cessazione dell'istanza Spot. -
Il parametro
maximumPercentrappresenta un limite superiore al numero di attività in esecuzione durante la sostituzione delle attività. Ciò permette di definire le dimensioni del batch di sostituzione. Ad esempio, sedesiredCountdi quattro attività, un massimo di 200% avvia quattro nuove attività prima di interrompere le quattro attività affinché vengano esaurite (a condizione che le risorse del cluster necessarie per questa operazione siano disponibili). Se il massimo è 100%, le attività di sostituzione non possono avviarsi fino all'interruzione delle attività di esaurimento.Importante
Se
minimumHealthyPercentemaximumPercentsono entrambi al 100%, il servizio non può rimuovere i processi esistenti e non può inoltre avviare processi di sostituzione. Ciò impedisce il corretto svuotamento delle istanze del container e impedisce la creazione di nuove implementazioni.
Comportamento di svuotamento per processi autonomi
Qualsiasi processo autonomo nello stato PENDING o RUNNING non ne è influenzato; devi attenderne l'interruzione o interromperlo manualmente. L'istanza di container rimarrà nello DRAINING stato.
Comportamento di drenaggio per le istanze gestite da Amazon ECS
I processi di terminazione delle istanze gestite da Amazon ECS garantiscono transizioni fluide dei carichi di lavoro, ottimizzando i costi e mantenendo l'integrità del sistema. Il sistema di terminazione offre tre percorsi decisionali distinti per la terminazione delle istanze, ciascuno con caratteristiche temporali e profili di impatto sul cliente diversi.
- Terminazione avviata dal cliente
-
Consente il controllo diretto sulla rimozione delle istanze quando bisogna rimuovere immediatamente le istanze di container dal servizio. Si esegue
deregister-container-instancecon il parametro di richiestaforceimpostato su true. Ciò significa che è richiesta la terminazione immediata nonostante eventuali carichi di lavoro in esecuzione. - Terminazione dello stato di inattività avviata dal sistema
-
Ottimizza i costi grazie al rilevamento intelligente dei periodi di inattività, il quale identifica le istanze che non gestiscono più carichi di lavoro. Elastic Workload Service (EWS) implementa sofisticati algoritmi di rilevamento dell'inattività che monitorano l'uso delle istanze e avviano la terminazione delle istanze che rimangono inattive per periodi configurabili.
- Terminazione dell'aggiornamento dell'infrastruttura
-
Implementa la gestione proattiva dell'infrastruttura tramite la policy di decadimento naturale di Node Manager, in base alla quale le istanze vengono aggiornate periodicamente per garantire che funzionino sulle versioni più recenti della piattaforma e mantengano il livello di sicurezza. Node Manager implementa policy time-to-live (TTL) che avviano la terminazione graduale delle istanze che hanno raggiunto la durata operativa massima.
Il sistema di terminazione implementa un approccio in due fasi che bilancia la continuità del carico di lavoro e i requisiti di gestione dell'infrastruttura.
Fase 1: periodo di completamento graduale
Durante questa fase, il sistema implementa strategie di drenaggio graduale che danno priorità alla continuità del carico di lavoro. Le attività di assistenza vengono eseguite regolarmente tramite le normali attività di pianificazione di Amazon ECS. Le attività autonome continuano a funzionare perché potrebbero completarsi naturalmente. Il sistema controlla che tutte le attività raggiungano lo stato di arresto tramite attività di completamento naturali.
Fase 2: applicazione di scadenze rigide
Quando il completamento graduale non consente di raggiungere gli obiettivi di terminazione entro tempi accettabili, il sistema applica una scadenza rigida. Solitamente, la scadenza rigida è fissata al momento dell'avvio del drenaggio più sette giorni, in modo da garantire un tempo sufficiente per il completamento dell'operazione nel rispetto dei requisiti operativi. L'applicazione prevede delle procedure automatiche di annullamento forzato della registrazione e l'immediata terminazione di tutte le attività rimanenti, indipendentemente dal loro stato di completamento.
Un'istanza di container ha completato lo svuotamento quando tutti i processi in esecuzione sull'istanza passano a uno stato STOPPED. L'istanza di container rimane nello stato DRAINING finché non viene nuovamente attivata o eliminata. È possibile verificare lo stato dei processi sull'istanza di container utilizzando l'operazione ListTaskscon il parametro containerInstance per ottenere un elenco di processi sull'istanza seguito da un'operazione DescribeTasks con l'Amazon Resource Name (ARN) o l'ID di ciascun processo per verificare lo stato del processo.
Quando desideri che l'istanza di container avvi nuovamente i processi di hosting, puoi modificare lo stato dell'istanza di container da DRAINING a ACTIVE. Lo scheduler del servizio Amazon ECS considera nuovamente l'istanza di container per il posizionamento dell'attività.
Procedura
Le seguenti fasi possono essere utilizzate per impostare lo svuotamento di un'istanza di container utilizzando la nuova AWS Management Console.
Puoi inoltre utilizzare l'operazione dell'API UpdateContainerInstancesState o il comando update-container-instances-state per modificare lo stato di un'istanza di container in DRAINING.
AWS Management Console
Apri la console all'indirizzo https://console.aws.amazon.com/ecs/v2
. -
Nel pannello di navigazione scegliere Clusters (Cluster).
-
Alla pagina Clusters (Cluster), scegli un cluster che ospita le istanze.
-
Alla pagina Cluster :
name(Cluster: nome), scegli la scheda Infrastructure (Infrastruttura). Quindi, in Container instances (Istanze di container) e seleziona la casella di controllo per ciascuna istanza di container che desideri svuotare. -
Scegli Operazioni, Drain.