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à.
Proteggi le tue ECS attività su Amazon dall'interruzione a causa di eventi scalabili
Puoi utilizzare la protezione scale-in delle ECS attività di Amazon per evitare che le tue attività vengano interrotte da eventi di scalabilità in base al servizio auto scaling o alle implementazioni.
Alcune applicazioni richiedono un meccanismo per salvaguardare le attività strategiche dall'interruzione dovuta a eventi scalabili nei periodi di scarso utilizzo o durante le implementazioni dei servizi. Per esempio:
-
Si tratta di un'applicazione asincrona di elaborazione delle code, ad esempio un processo di transcodifica video in cui alcune attività devono essere eseguite per ore anche quando l'utilizzo cumulativo del servizio è basso.
-
Hai un'applicazione di gioco che esegue server di gioco come ECS attività Amazon e che deve continuare a funzionare anche se tutti gli utenti si sono disconnessi per ridurre la latenza di avvio del riavvio del server.
-
Quando si implementa una nuova versione del codice, è necessario che le attività continuino a essere eseguite perché sarebbe costoso rielaborarle.
Per evitare che le attività appartenenti al servizio vengano terminate in caso di un evento di dimensionamento, imposta l'attributo protectionEnabled
su true
. Per impostazione predefinita, le attività sono protette per 2 ore. È possibile personalizzare il periodo di protezione utilizzando l'attributo expiresInMinutes
. Puoi proteggere le tue attività per un minimo di 1 minuto e fino a un massimo di 2.880 minuti (48 ore).
Dopo che un'attività ha terminato il lavoro richiesto, sarà possibile impostare l'attributo protectionEnabled
su false
, in modo che l'attività venga terminata da successivi eventi di scalabilità.
Meccanismi di protezione scalabile delle attività
Puoi impostare e ottenere una protezione scalabile per le attività utilizzando l'endpoint Amazon ECS Container Agent o Amazon. ECS API
-
Endpoint Amazon ECS Container Agent
Ti consigliamo di utilizzare l'endpoint Amazon ECS Container Agent per attività che possono determinare autonomamente la necessità di protezione. Utilizza questo approccio per carichi di lavoro basati su code o di elaborazione dei processi
Quando un container inizia a elaborare il lavoro, ad esempio consumando un SQS messaggio, puoi impostare l'
ProtectionEnabled
attributo tramite il percorso$ECS_AGENT_URI/task-protection/v1/state
dell'endpoint di protezione scale-in dell'attività dall'interno del contenitore. Amazon non ECS interromperà questa attività durante gli eventi di scalabilità. Una volta che l'attività ha terminato il suo lavoro, puoi cancellare l'ProtectionEnabled
attributo utilizzando lo stesso endpoint, in modo che l'attività possa essere interrotta durante i successivi eventi scale-in.Per ulteriori informazioni sull'endpoint Amazon ECS Container Agent, consultaEndpoint di ECS protezione scalabile Amazon Task.
-
Amazon ECS API
Puoi utilizzare Amazon ECS API per impostare e recuperare la protezione scalabile in base alle attività se la tua applicazione dispone di un componente che tiene traccia dello stato delle attività attive. Utilizza
UpdateTaskProtection
per contrassegnare una o più attività come protette. UtilizzaloGetTaskProtection
per recuperare lo stato di protezione.Un esempio di questo approccio potrebbe essere se la tua applicazione ospita sessioni di server di gioco come ECS attività Amazon. Quando un utente accede a una sessione sul server (attività), è possibile contrassegnare l'attività come protetta. Dopo la disconnessione dell'utente, puoi annullare la protezione specifica per l'attività o annullare periodicamente la protezione per attività simili che non hanno più sessioni attive, a seconda se è necessario mantenere i server inattivi.
Per ulteriori informazioni, consulta UpdateTaskProtectione GetTaskProtectionconsulta Amazon Elastic Container Service API Reference.
È possibile combinare entrambi gli approcci. Ad esempio, usa l'endpoint Amazon ECS agent per impostare la protezione delle attività dall'interno di un container e usa Amazon ECS API per rimuovere la protezione delle attività dal tuo servizio di controller esterno.
Considerazioni
Considera i seguenti punti prima di utilizzare la protezione scalabile delle attività:
-
Ti consigliamo di utilizzare l'endpoint Amazon ECS Container Agent perché l'ECSagente Amazon dispone di meccanismi di riprova integrati e di un'interfaccia più semplice.
-
Puoi reimpostare il periodo di scadenza della protezione per il dimensionamento delle attività richiamando
UpdateTaskProtection
su un'attività che ha già la protezione attivata. -
Determina il tempo necessario a un'attività per completare il lavoro richiesto e imposta la proprietà
expiresInMinutes
di conseguenza. Se imposti la scadenza della protezione più a lungo del necessario, dovrai sostenere costi e ritardi nell'implementazione di nuove attività. -
La protezione scalabile in base alle attività è supportata su Amazon ECS Container Agent
1.65.0
o versioni successive.Puoi aggiungere il supporto per questa funzionalità sulle EC2 istanze Amazon che utilizzano versioni precedenti dell'agente ECS container Amazon aggiornando l'agente alla versione più recente. Per ulteriori informazioni, consulta Aggiornamento dell'agente ECS container Amazon.
-
Considerazioni sull'implementazione:
-
Se il servizio utilizza un aggiornamento in sequenza, verranno create nuove attività ma le attività che eseguono una versione precedente non verranno interrotte fino a quando
protectionEnabled
non viene annullato o scade. È possibile regolare il parametromaximumPercentage
nella configurazione di implementazione su un valore che consenta di creare nuove attività quando le vecchie attività sono protette. -
Se viene applicato un aggiornamento blu/verde, l'implementazione blu contenente le attività protette non verrà rimossa se le attività presentano l'opzione
protectionEnabled
. Il traffico verrà dirottato verso le nuove attività che si presentano e le attività precedenti verranno rimosse solo quandoprotectionEnabled
vengono cancellate o scadute. A seconda del timeout degli CloudFormation aggiornamenti, la CodeDeploy distribuzione potrebbe scadere e le attività Blue precedenti potrebbero essere ancora presenti. -
Se lo utilizzi CloudFormation, lo update-stack ha un timeout di 3 ore. Pertanto, se imposti la protezione delle attività per più di 3 ore, la CloudFormation distribuzione potrebbe causare errori e ripristini.
Durante il periodo in cui le vecchie attività sono protette, lo CloudFormation stack viene visualizzato.
UPDATE_IN_PROGRESS
Se la protezione per il dimensionamento delle attività viene rimossa o scade entro la finestra di 3 ore, l'implementazione avrà esito positivo e passerà allo statoUPDATE_COMPLETE
. Se l'implementazione rimane bloccata inUPDATE_IN_PROGRESS
per più di 3 ore, non riuscirà e mostrerà lo statoUPDATE_FAILED
, quindi verrà ripristinato il vecchio set di attività. -
Amazon ECS invia eventi di servizio quando le attività protette impediscono a una distribuzione (continua o blu/verde) di raggiungere lo stato stazionario, in modo che tu possa intraprendere azioni correttive. Durante il tentativo di aggiornare lo stato di protezione di un'attività, se viene ricevuto un messaggio di errore
DEPLOYMENT_BLOCKED
, allora significa che il servizio ha più attività protette rispetto al numero di attività desiderato per il servizio. Per risolvere questo errore, effettuare una delle seguenti operazioni:-
Attendi la scadenza della protezione dell'attività corrente. Quindi imposta la protezione delle attività.
-
Determina quali attività possono essere arrestate. Quindi, usa
UpdateTaskProtection
con l'opzioneprotectionEnabled
impostata sufalse
per queste attività. -
Aumenta il numero di attività desiderate del servizio portandolo a un numero maggiore del numero di attività protette.
-
-
IAMautorizzazioni necessarie per la protezione scalabile delle attività
L'attività deve avere il ruolo di ECS attività Amazon con le seguenti autorizzazioni:
-
ecs:GetTaskProtection
: consente all'agente Amazon ECS Container di effettuare chiamateGetTaskProtection
. -
ecs:UpdateTaskProtection
: consente all'agente Amazon ECS Container di effettuare chiamateUpdateTaskProtection
.