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 ECS di distribuzione di Amazon 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 ECS servizio Amazon. 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 la sezione Guida introduttiva EventBridge alla 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 la distribuzione non è idonea per un altro rollback finché non raggiunge uno COMPLETED
stato. Quando l'interruttore di implementazione non rileva un'implementazione nello stato COMPLETED
, non avvia nuove attività e l'implementazione si blocca.
Quando si crea 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 attuale. RUNNING
-
Operazione riuscita: l'implementazione ha la possibilità di passare allo COMPLETED stato perché più di un'attività è passata allo stato. RUNNING Il criterio di guasto viene ignorato e l'interruttore passa alla fase 2.
-
Fallimento: alcune attività consecutive non sono passate allo RUNNING stato e la distribuzione potrebbe passare allo FAILED stato.
-
-
Fase 2: la distribuzione entra in questa fase quando è presente almeno un'attività nello RUNNING stato. L'interruttore automatico verifica 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
erolloutStateReason
. Quando viene avviata una nuova implementazione, lo stato di implementazione inizia inIN_PROGRESS
. Quando il servizio raggiunge uno stato stazionario, lo stato di implementazione passa aCOMPLETED
. Se il servizio non riesce a raggiungere uno stato stazionario e l'interruttore automatico è abilitato, l'implementazione passerà a uno statoFAILED
. Una implementazione in uno statoFAILED
non avvierà nuove attività. -
Oltre agli eventi di modifica dello stato di implementazione del servizio che Amazon ECS invia per le distribuzioni avviate e completate, Amazon invia ECS anche un evento quando una distribuzione con interruttore di circuito acceso fallisce. 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 ECS servizio Amazon.
-
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 di distribuzione è supportato solo per ECS i servizi Amazon che utilizzano il controller di distribuzione rolling update (
ECS
). -
È necessario utilizzare la ECS console Amazon 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-count3
\ --deployment-configuration "deploymentCircuitBreaker={enable=true
,rollback=true
}" \ --task-definitionsample-fargate:1
\ --launch-typeFARGATE
\ --platform-familyLINUX
\ --platform-version1.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.
-
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 statoRUNNING
e procede alla fase successiva. Quando i processi non riescono a raggiungere lo statoRUNNING
, l'interruttore automatico di implementazione aumenta di uno il numero di errori. Quando il numero di errori è uguale alla soglia, l'implementazione viene contrassegnata comeFAILED
. -
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 ECS dello stato dei container Amazon
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 (il valore calcolato è inferiore al minimo) |
25 |
|
13 (il valore viene arrotondato per eccesso) |
400 |
|
200 |
800 |
|
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 ulteriori esempi su come utilizzare l'opzione rollback, consulta Announcing Amazon ECS deployment circuit