In che modo l'interruttore di distribuzione di Amazon ECS rileva i guasti - 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à.

In che modo l'interruttore di distribuzione di Amazon ECS rileva i guasti

L'interruttore di implementazione è il meccanismo di aggiornamento in sequenza che determina se le attività raggiungono uno stato stazionario. L'interruttore di implementazione dispone di un'opzione che consente di eseguire automaticamente il rollback di un'implementazione con esito negativo a un'implementazione nello stato COMPLETED.

Quando la distribuzione di un servizio cambia stato, Amazon ECS invia un evento di modifica dello stato di distribuzione del servizio a EventBridge. Ciò fornisce un modo programmatico per monitorare lo stato delle implementazioni dei servizi. Per ulteriori informazioni, consulta Eventi di modifica dello stato di implementazione del servizio Amazon ECS. Ti consigliamo di creare e monitorare una EventBridge regola con un eventName of SERVICE_DEPLOYMENT_FAILED in modo da poter intraprendere azioni manuali per avviare la distribuzione. Per ulteriori informazioni, consulta Creating an EventBridge Rule nella Amazon EventBridge User Guide.

Quando l'interruttore di implementazione determina il fallimento di un'implementazione, cerca quella più recente con lo stato COMPLETED. Si tratta dell'implementazione che viene utilizzata come implementazione di rollback. Quando inizia il rollback, l'implementazione cambia da COMPLETED a IN_PROGRESS. Ciò significa che l'implementazione non è idonea per un altro rollback fino a quando non raggiunge lo stato COMPLETED. Quando l'interruttore di implementazione non rileva un'implementazione nello stato COMPLETED, non avvia nuove attività e l'implementazione si blocca.

Quando crei un servizio, lo scheduler tiene traccia delle attività che non sono state avviate in due fasi.

  • Fase 1: lo scheduler monitora le attività per vedere se passano allo stato RUNNING.

    • Operazione riuscita: la distribuzione ha la possibilità di passare allo stato COMPLETED perché più di un'attività è passata allo stato RUNNING. Il criterio di errore viene ignorato e l'interruttore passa alla fase 2.

    • Errore: alcune attività consecutive non sono passate allo stato RUNNING e la distribuzione potrebbe passare allo stato FAILED.

  • Fase 2: la distribuzione entra in questa fase quando è presente almeno un'attività nello stato RUNNING. L'interruttore automatico controlla i controlli di integrità relativi alle attività della distribuzione corrente oggetto di valutazione. I controlli di integrità convalidati sono Elastic Load Balancing AWS Cloud Map , controlli dello stato del servizio e controlli dello stato dei container.

    • Operazione riuscita: almeno un'attività è in corso e i controlli di integrità sono stati superati.

    • Fallimento: le attività sostituite a causa di errori nei controlli di integrità hanno raggiunto la soglia di errore.

Considerate quanto segue quando utilizzate il metodo dell'interruttore automatico di distribuzione su un servizio. EventBridge genera la regola.

  • La risposta DescribeServices fornisce informazioni sullo stato di un'implementazione, rolloutState e rolloutStateReason. Quando viene avviata una nuova implementazione, lo stato di implementazione inizia in IN_PROGRESS. Quando il servizio raggiunge uno stato stazionario, lo stato di implementazione passa a COMPLETED. Se il servizio non riesce a raggiungere uno stato stazionario e l'interruttore automatico è abilitato, l'implementazione passerà a uno stato FAILED. Una implementazione in uno stato FAILED non avvierà nuove attività.

  • Oltre agli eventi di modifica dello stato dell'implementazione del servizio che Amazon ECS invia per le implementazioni che sono state avviate e completate, Amazon ECS invia anche un evento quando un'implementazione con l'interruttore automatico attivato non riesce. Questi eventi forniscono dettagli sul motivo per cui un'implementazione non è riuscita o se un'implementazione è stata avviata a causa di un ripristino dello stato precedente. Per ulteriori informazioni, consulta Eventi di modifica dello stato di implementazione del servizio Amazon ECS.

  • Se viene avviata una nuova implementazione perché un'implementazione precedente non è riuscita e si è verificato il ripristino dello stato precedente, il campo reason dell'evento di modifica dello stato di implementazione del servizio indicherà che l'implementazione è stata avviata a causa di un ripristino dello stato precedente.

  • L'interruttore automatico di implementazione è supportato solo per i servizi Amazon ECS che utilizzano il controller di implementazione (ECS) dell'aggiornamento in sequenza.

  • È necessario utilizzare la console Amazon ECS o, AWS CLI quando si utilizza, l'interruttore automatico di distribuzione con l' CloudWatch opzione. Per ulteriori informazioni, consulta Creazione di un servizio utilizzando parametri definiti e create-service in Informazioni di riferimento sull'AWS Command Line Interface .

L'create-service AWS CLI esempio seguente mostra come creare un servizio Linux quando l'interruttore di distribuzione viene utilizzato con l'opzione rollback.

aws ecs create-service \ --service-name MyService \ --deployment-controller type=ECS \ --desired-count 3 \ --deployment-configuration "deploymentCircuitBreaker={enable=true,rollback=true}" \ --task-definition sample-fargate:1 \ --launch-type FARGATE \ --platform-family LINUX \ --platform-version 1.4.0 \ --network-configuration "awsvpcConfiguration={subnets=[subnet-12344321],securityGroups=[sg-12344321],assignPublicIp=ENABLED}"

Esempio:

L'implementazione 1 è in uno stato COMPLETED.

L'implementazione 2 non può essere avviata, quindi l'interruttore esegue il rollback all'implementazione 1. L'implementazione 1 passa allo stato IN_PROGRESS.

L'implementazione 3 viene avviata e non è presente alcuna implementazione nello stato COMPLETED, quindi l'implementazione non è in grado di eseguire il rollback o avviare attività.

Soglia di errore

L'interruttore automatico di implementazione calcola il valore di soglia e lo utilizza per determinare quando modificare lo stato della distribuzione in FAILED.

L'interruttore automatico di distribuzione ha una soglia minima di 3 e una soglia massima di 200 e utilizza i valori della formula seguente per determinare l'errore di distribuzione.

Minimum threshold <= 0.5 * desired task count => maximum threshold

Quando il risultato del calcolo è superiore al minimo di 3, ma inferiore al massimo di 200, la soglia di errore viene impostata sulla soglia calcolata (arrotondata per eccesso).

Nota

Non è possibile modificare nessuno dei valori di soglia.

Esistono due fasi per il controllo dello stato dell'implementazione.

  1. L'interruttore automatico di implementazione monitora i processi che fanno parte dell'implementazione e verifica la presenza di attività con stato RUNNING. Il pianificatore ignora i criteri di errore quando un processo nell'implementazione corrente si trova nello stato RUNNING e procede alla fase successiva. Quando i processi non riescono a raggiungere lo stato RUNNING, l'interruttore automatico di implementazione aumenta di uno il numero di errori. Quando il numero di errori è uguale alla soglia, l'implementazione viene contrassegnata come FAILED.

  2. Questa fase viene inserita quando RUNNING nello stato sono presenti una o più attività. L'interruttore automatico di implementazione esegue controlli dell'integrità delle seguenti risorse per i processi nell'implementazione corrente:

    • Load balancer Elastic Load Balancing

    • AWS Cloud Map servizio

    • Controlli dell'integrità dei container di Amazon ECS

    Quando un controllo dell'integrità di un processo HA ESITO NEGATIVO, l'interruttore automatico di implementazione aumenta di uno il numero di errori. Quando il numero di errori è uguale alla soglia, l'implementazione viene contrassegnata come FAILED.

La tabella seguente mostra alcuni esempi.

Conteggio attività desiderato Calcolo Threshold

1

3 <= 0.5 * 1 => 200
3 (il valore calcolato è inferiore al minimo)

25

3 <= 0.5 * 25 => 200
13 (il valore viene arrotondato per eccesso)

400

3 <= 0.5 * 400 => 200
200

800

3 <= 0.5 * 800 => 200
200 (il valore calcolato è superiore al massimo)

Ad esempio, quando la soglia è 3, l'interruttore si avvia con il conteggio dei guasti impostato su 0. Quando un'attività non riesce a raggiungere RUNNING lo stato, l'interruttore automatico di dispiegamento aumenta il numero di guasti di uno. Quando il numero di errori è uguale a 3, la distribuzione viene contrassegnata come. FAILED

Per altri esempi sull'utilizzo dell'opzione di rollback, consulta Annuncio dell'interruttore automatico di implementazione di Amazon ECS.