Salta al contenuto

Come posso configurare lo spegnimento e lo svuotamento della connessione controllati delle attività di Amazon ECS durante le distribuzioni?

4 minuti di lettura
0

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

AWS UFFICIALEAggiornata 2 anni fa