Come faccio a risolvere gli errori del controllo dell'integrità di Application Load Balancer per le attività di Amazon ECS su Fargate?

6 minuti di lettura
0

Desidero risolvere gli errori del controllo dell'integrità di Application Load Balancer durante l'esecuzione di attività di Amazon Elastic Container Service (Amazon ECS) su AWS Fargate.

Breve descrizione

Quando le attività di Amazon ECS non superano i controlli dell'integrità di Application Load Balancer, potresti visualizzare uno dei seguenti errori dal messaggio relativo all'evento del servizio Amazon ECS:

  • Tmeout della richiesta
  • Controlli dell'integrità non riusciti senza codici di errore
  • Controlli dell’integrità non riusciti con codici di errore 404 o 5xx
  • Il target si trova in una zona di disponibilità non attivata per il sistema di bilanciamento del carico

Per i controlli dell’integrità dei container non riusciti, consulta Come faccio a risolvere gli errori dei controlli dell’integrità dei container per le attività di Amazon ECS?

Se utilizzi Amazon ECS con istanze di container Amazon Elastic Compute Cloud (Amazon EC2), consulta la seguente documentazione:

Risoluzione

Nota: se visualizzi errori durante l'esecuzione dei comandi dell'interfaccia della linea di comando AWS (AWS CLI), conferma di utilizzare una versione recente dell'interfaccia della linea di comando AWS. Nei seguenti comandi dell'interfaccia della linea di comando AWS, sostituisci i valori di esempio con i tuoi valori.

Errore di timeout della richiesta

Controlla i gruppi di sicurezza per assicurarti che il sistema di bilanciamento del carico possa effettuare richieste di controllo dell'integrità dell'attività Fargate. Il gruppo di sicurezza delle attività Fargate deve consentire il traffico in entrata e in uscita sulla porta container specificata nella definizione dell'attività. L'origine deve essere il gruppo di sicurezza Application Load Balancer. Il gruppo di sicurezza Application Load Balancer deve consentire il traffico in uscita verso il gruppo di sicurezza delle attività Fargate.

Nota: è consigliabile configurare diversi gruppi di sicurezza per le attività Fargate e il sistema di bilanciamento del carico per consentire il traffico tra di loro.

Se i gruppi di sicurezza consentono la comunicazione tra l'attività Fargate e Application Load Balancer, controlla HealthCheckTimeoutSeconds nelle impostazioni del controllo dell'integrità. Aumenta leggermente i secondi di timeout, se necessario.

Nota: aumenta HealthCheckTimeoutSeconds solo se la tua applicazione impiega molto tempo a rispondere a un controllo dell'integrità.

Per verificare il tempo medio di risposta, esegui il seguente comando:

$ time curl -Iv http://<example-task-pvt-ip>:<example-port>/<example_healthcheck_path>

Nota: l'elevato utilizzo delle risorse nelle attività può causare lentezza o rallentare il processo e comportare un fallimento del controllo dello stato dell'integrità.

Controlli dell'integrità non riusciti senza codici di errore

Esempio di messaggio di errore relativo al controllo dell'integrità non riuscito:

(service AWS-service) (port 80) is unhealthy in (target-group arn:aws:elasticloadbalancing:us-east-1:111111111111:targetgroup/aws-targetgroup/123456789) due to (reason Health checks failed)

Se visualizzi un messaggio di errore simile, verifica che l'attività risponda rapidamente dopo l'avvio in Amazon ECS. Inoltre, verifica che l'applicazione risponda con il codice di risposta corretto.

Assicurati che l'attività abbia il tempo di rispondere dopo l'avvio in Amazon ECS

Per assicurarti che l'attività abbia tempo sufficiente per rispondere dopo l'avvio, aumenta healthCheckGracePeriodSeconds. Ciò consente ad Amazon ECS di conservare l'attività per un periodo di tempo più lungo e di ignorare i controlli dell'integrità del target di Elastic Load Balancing.

Nota: se stai creando un nuovo servizio, puoi configurare il periodo di prova del controllo dell'integrità nella pagina di configurazione del sistema di bilanciamento del carico.

Per aggiornare healthCheckGracePeriodSeconds per il tuo servizio Amazon ECS esistente, esegui il seguente comando:

$ aws ecs update-service --cluster <EXAMPLE-CLUSTER-NAME> --service <EXAMPLE-SERVICE-NAME> --region <EXAMPLE-REGION> --health-check-grace-period-seconds <example-value-in-seconds>

Verifica che l'applicazione risponda con il codice di risposta corretto

Per confermare il codice di risposta inviato dalla domanda durante il percorso di controllo dell'integrità, utilizza i seguenti metodi.

Se hai configurato la registrazione degli accessi sulla tua applicazione, usa ELB-HealthChecker/2.0 per controllare la risposta. Se utilizzi i log di AWS CloudWatch, utilizza Logs Insights di CloudWatch ed esegui il seguente comando:

fields @timestamp, @message
  | sort @timestamp desc
  | filter @message like /ELB-HealthChecker/

Per le istanze Amazon EC2 nello stesso Amazon Virtual Private Cloud (Amazon VPC), esegui i seguenti comandi per confermare che le tue attività rispondano ai controlli manuali. Per lanciare una nuova istanza Amazon EC2, consulta il Tutorial: Inizia a usare le istanze Linux di Amazon EC2.

Controlli dell'integrità HTTP

$ curl -Iv http://<example-task-pvt-ip>:<example-port>/<example_healthcheck_path>

Controlli dell'integrità HTTPS

$ curl -Iv https://<example-task-pvt-ip>:<example-port>/<example_healthcheck_path>

Se le attività si interrompono rapidamente e non riesci a ottenere gli indirizzi IP privati, avvia un'attività autonoma all'esterno di Amazon ECS per risolvere il problema. Usa la stessa definizione di attività ed esegui un comando curl sul relativo indirizzo IP per avviare l'operazione. L'attività non si interrompe a causa di un errore nel controllo dello stato dell'integrità.

Inoltre, utilizza Amazon ECS Exec per controllare le porte di ascolto a livello di container. Utilizzando netstat, verifica che l'applicazione sia in ascolto sulla porta appropriata:

$ netstat -tulpn | grep LISTEN

Controlli dell’integrità non riusciti con codici di errore 404 o 5xx

Visualizzare errori nei controlli dell'integrità con codici di errore 404 o 5xx indica che la richiesta di controllo dell'integrità è stata confermata, ma ha ricevuto un codice di risposta non valido. I codici indicano anche che il codice di risposta inviato dall'applicazione non corrisponde al codice di successo configurato a livello del gruppo target (parametro: Matcher).

Un codice di errore 404 può verificarsi quando non esiste un percorso di controllo dell'integrità o c'è un errore di battitura nella configurazione del percorso di controllo dell'integrità. Un codice di errore 5xx può verificarsi quando l'applicazione all'interno dell'attività non risponde correttamente alla richiesta o si verifica un errore di elaborazione.

Per determinare se l'applicazione è stata avviata correttamente, controlla i log dell'applicazione.

Il target si trova in una zona di disponibilità non attivata per il sistema di bilanciamento del carico

Quando viene attivata una zona di disponibilità per il sistema di bilanciamento del carico, il bilanciamento elastico del carico crea un nodo di bilanciamento del carico nella zona di disponibilità. Se registri le destinazioni in una zona di disponibilità e non attivi la zona di disponibilità, le destinazioni registrate non ricevono traffico. Per ulteriori informazioni, vedi Zone di disponibilità e nodi del sistema di bilanciamento del carico.

Per identificare le zone di disponibilità per le quali è configurato il sistema di bilanciamento del carico, esegui il seguente comando:

aws elbv2 describe-load-balancers --load-balancer-arns <EXAMPLE-ALB-ARN> --query 'LoadBalancers[*].AvailabilityZones[].{Subnet:SubnetId}'

Per identificare le zone di disponibilità per le quali è configurata la tua attività Fargate, esegui il seguente comando:

aws ecs describe-services --cluster <EXAMPLE-CLUSTER-NAME> --service <EXAMPLE-SERVICE-NAME> --query 'services[*].deployments[].networkConfiguration[].awsvpcConfiguration.{Subnets:subnets}'

Nota: usa il comando AWS CLI update-service per modificare la configurazione della sottorete di un servizio Amazon ECS. Usa il comando AWS CLI enable-availability-zones-for-load-balancer per aggiungere una zona di disponibilità a un Application Load Balancer esistente.

Informazioni correlate

Risolvere i problemi relativi ai servizi di bilanciamento del carico

Controlli dell'integrità per i tuoi gruppi target

AWS UFFICIALE
AWS UFFICIALEAggiornata 10 mesi fa