Come posso configurare lo spegnimento e lo svuotamento della connessione controllati delle attività di Amazon ECS durante le distribuzioni?
Quando distribuisco un nuovo servizio nel mio cluster Amazon Elastic Container Service (Amazon ECS), le attività vengono distribuite o terminate in modo errato.
Risoluzione
Verifica di utilizzare un container con una capacità di risorse sufficiente
Se le nuove distribuzioni non superano sistematicamente i controlli dell'integrità delCpuUtilized, CpuReserved, e MemoryUtilized di Approfondimenti sui container Amazon ECS. Se utilizzi un Application Load Balancer, controlla anche TargetResponseTime.
Inoltre, configura la proprietà HealthCheckGracePeriodSeconds con un valore maggiore del tempo di avvio dell'applicazione. Le risposte ritardate ai controlli dell'integrità possono causare errori e indurre Amazon ECS a eseguire cicli di attività.
Controlla lo stato del container e i codici di uscita
Nota: se ricevi errori quando esegui i comandi dell'Interfaccia della linea di comando AWS (AWS CLI), consulta Risoluzione degli errori per AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.
Per le attività che terminano in modo imprevisto, esegui questo comando describe-tasks per controllare i codici di uscita del container:
aws ecs describe-tasks --cluster ECS_CLUSTER --tasks TASK_ARN -- region REGION
Nota: sostituisci ECS_CLUSTER con il nome del tuo cluster, TASK_ARN con l'ARN dell'attività e REGION con la tua Regione AWS.
Se l'output del comando precedente è 0, l'attività è stata avviata correttamente. Se l'output è 1, si è verificato un errore dell'applicazione e devi controllare i log dell'applicazione. Se l'uscita è 137, il container ha ricevuto un segnale SIGKILL, in genere causato da un problema Out-of-Memory. Per risolvere il problema, consulta Come posso risolvere gli errori OutOfMemory in Amazon ECS? e Perché la mia attività Amazon ECS viene interrotta?
Rivedi la configurazione della definizione dell'attività
Assicurati che tutte le configurazioni delle definizioni delle attività siano valide, soprattutto dopo aver modificato o creato nuove definizioni dell'attività. Per verificare le configurazioni delle definizioni delle attività, esegui un'attività autonoma.
Configura le impostazioni del bilanciatore del carico
Configura deregistration_delay.timeout_seconds nel bilanciatore del carico per soddisfare le esigenze del caso d'uso. Per richieste di lunga durata, utilizza un valore maggiore. Per le istanze spot Amazon Elastic Compute Cloud (Amazon EC2), il valore deve essere inferiore a 120 secondi.
Per modificare deregistration_delay.timeout_seconds, esegui questo comando modify-target-group-attributes:
aws elbv2 modify-target-group-attributes --target-group-arn EXAMPLE_ARN --attributes Key=deregistration_delay.timeout_seconds,Value=120
Nota: sostituisci EXAMPLE_ARN con l'ARN del tuo bilanciatore del carico e 120 con il timeout del ritardo dell'annullamento della registrazione in secondi.
Inoltre, ottimizza le impostazioni del controllo dell'integrità del bilanciatore del carico. Se le impostazioni sono troppo rigide per l'applicazione, il bilanciatore del carico potrebbe spesso contrassegnare la destinazione come non integra.
Configura l'orario di spegnimento controllato dell'applicazione
Per impostazione predefinita, ECS_CONTAINER_STOP_TIMEOUT è impostato su 30 secondi. Quando accedi all'applicazione durante la fase di svuotamento delle attività precedenti in una nuova distribuzione Amazon ECS, potresti ricevere un errore 5xx. Se riscontri problemi durante l'accesso all'applicazione, aumenta il valore ECS_CONTAINER_STOP_TIMEOUT in base alle esigenze di spegnimento controllato dell'applicazione. È consigliabile testare il valore aggiornato in un ambiente di prova prima di distribuirlo.
Per aggiornare il valore, aggiungi un codice simile al seguente esempio alla definizione dell'attività:
{ "containerDefinitions": [ { "name": "your-container", "image": "your-image", "stopTimeout": 120 } ] }
Nota: sostituisci 120 con il tuo valore ECS_CONTAINER_STOP_TIMEOUT.
Per configurare lo spegnimento controllato, aggiungi un gestore SIGTERM all'applicazione. Per AWS Fargate Spot, imposta la configurazione per chiamare DeregisterTargets durante la gestione SIGTERM. Ciò garantisce che Amazon ECS annulli la registrazione delle attività FARGATE_SPOT dal gruppo di destinazione del bilanciatore del carico.
Informazioni correlate
Ottimizza i parametri di svuotamento della connessione del bilanciatore del carico per Amazon ECS
- Argomenti
- Containers
- Lingua
- Italiano
