Risoluzione dei problemi di un Classic Load Balancer: errori HTTP - Sistema di bilanciamento del carico elastico

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à.

Risoluzione dei problemi di un Classic Load Balancer: errori HTTP

Il metodo HTTP (anche chiamato verbo) specifica l'azione da eseguire sulla risorsa che riceve una richiesta HTTP. I metodi standard per le richieste HTTP sono definiti nel documento RFC 2616 sulle definizioni dei metodi. I metodi standard includono GET, POST, PUT, HEAD e OPTIONS. Alcune applicazioni Web richiedono (e talvolta introducono) metodi che sono estensioni di metodi HTTP/1.1. Esempi comuni di metodi HTTP estesi includono PATCH, REPORT, MKCOL, PROPFIND, MOVE e LOCK. Elastic Load Balancing accetta tutti i metodi HTTP standard e non standard.

Le richieste e le risposte HTTP utilizzano campi intestazione per inviare informazioni sui messaggi HTTP. I campi intestazione sono costituti da coppie nome-valore separate da due punti e intervallate da un ritorno a capo e un avanzamento riga. Un insieme standard di campi dell'intestazione HTTP è definito nella RFC 2616 intestazioni di messaggi. Per ulteriori informazioni, consulta Intestazioni HTTP e Classic Load Balancer.

Quando un load balancer riceve una richiesta HTTP, controlla la lunghezza del metodo e che le richieste abbiano un formato corretto. La lunghezza totale del metodo in una richiesta HTTP a un load balancer non deve superare i 127 caratteri. Se la richiesta HTTP supera entrambi i controlli, il load balancer la invia all'istanza EC2. Se il campo del metodo nella richiesta non ha un formato corretto, il load balancer risponde con un errore HTTP 400: BAD_REQUEST. Se la lunghezza del metodo nella richiesta supera i 127 caratteri, il load balancer risponde con un errore HTTP 405: METHOD_NOT_ALLOWED.

L'istanza EC2 elabora una richiesta valida implementando il metodo nella richiesta e inviando una risposta al client. Le istanze devono essere configurate per gestire sia i metodi supportati che quelli non supportati.

Di seguito sono elencati i messaggi di errore restituiti dal load balancer, le possibili cause e le operazioni che puoi eseguire per risolvere i problemi.

HTTP 400: BAD_REQUEST

Descrizione: indica che il client ha inviato una richiesta errata.

Causa 1: il client ha inviato una richiesta con un formato errato che non soddisfa le specifiche HTTP. Ad esempio, una richiesta non può avere spazi nell'URL.

Causa 2: il client ha utilizzato il metodo HTTP CONNECT che non è supportato da Elastic Load Balancing.

Soluzione: connettiti direttamente all'istanza e acquisisci i dettagli della richiesta client. Esamina che le intestazioni e l'URL non contengano richieste in formato errato. Verifica che la richiesta soddisfi le specifiche HTTP. Verifica che HTTP CONNECT non sia utilizzato.

HTTP 405: METHOD_NOT_ALLOWED

Descrizione: indica che la lunghezza del metodo non è valida.

Causa: la lunghezza del metodo nell'intestazione della richiesta supera i 127 caratteri.

Soluzione: controlla la lunghezza del metodo.

HTTP 408: Request Timeout

Descrizione: indica che il client ha annullato la richiesta o non è riuscito a inviare una richiesta completa.

Causa 1: un'interruzione della rete o una costruzione errata della richiesta, ad esempio intestazioni con un formato definito solo in parte; la dimensione del contenuto specificata non corrisponde alla dimensione del contenuto effettivamente trasmessa e così via.

Soluzione 1: ispeziona il codice da cui proviene la richiesta e prova a inviarlo direttamente alle tue istanze registrate (o un ambiente di sviluppo/test) in cui disponi di maggiore controllo per l'ispezione della richiesta effettiva.

Causa 2: la connessione al client è chiusa (il load balancer non ha potuto inviare una risposta)

Soluzione 2: verifica che il client non stia chiudendo la connessione prima che una risposta venga inviata utilizzando uno sniffer di pacchetto sul computer da cui proviene la richiesta.

HTTP 502: Bad Gateway

Descrizione: indica che il load balancer non è riuscito ad analizzare la risposta inviata da un'istanza registrata.

Causa: l'istanza ha inviato una risposta in formato errato o è possibile che si sia verificato un problema con il load balancer.

Soluzione: verifica che la risposta inviata dall'istanza sia conforme alle specifiche HTTP. Rivolgiti al CentroAWS Supportper ricevere assistenza.

HTTP 503: Service Unavailable

Descrizione: indica che l'errore è causato dal load balancer o dalle istanze registrate.

Causa 1: il load balancer dispone di una capacità insufficiente per gestire la richiesta.

Soluzione 1: questo problema dovrebbe essere transitorio e non dovrebbe durare più di pochi minuti. Se persiste, rivolgiti al CentroAWS Supportper ricevere assistenza.

Causa 2: non è presente alcuna istanza registrata.

Soluzione 2: registra almeno un'istanza in ogni zona di disponibilità in cui il load balancer è configurato per rispondere. Verifica ciò esaminando le HealthyHostCount metriche in. CloudWatch Se non sei in grado di assicurare che un'istanza sia registrata in ogni zona di disponibilità, ti consigliamo di abilitare il bilanciamento del carico in più zone. Per ulteriori informazioni, consulta Configura il load balancer tra zone per il Classic Load Balancer.

Causa 3: non è presente alcuna istanza integra.

Soluzione 3: verifica di disporre di istanze integre in ogni zona di disponibilità in cui il load balancer è configurato per rispondere. Verifica questo dettaglio osservando il parametro HealthyHostCount.

Causa 4: la coda è piena.

Soluzione 4: assicurati che le istanze abbiano la capacità sufficiente per gestire la richiesta. Verifica questo dettaglio osservando il parametro SpilloverCount.

HTTP 504: Gateway Timeout

Descrizione: indica che il load balancer ha chiuso una connessione perché una richiesta non è stata completata entro il periodo di timeout di inattività.

Causa 1: per poter rispondere, l'applicazione richiede più tempo rispetto al timeout di inattività configurato.

Soluzione 1: monitorare i parametri HTTPCode_ELB_5XX e Latency. Un eventuale incremento del valore di queste parametri potrebbe essere dovuto alla mancata risposta dell'applicazione entro il periodo di timeout di inattività configurato. Per informazioni dettagliate sulle richieste in fase di timeout, abilita i log di accesso nel load balancer ed esamina i codici di risposta 504 nei log generati da Elastic Load Balancing. Se necessario, puoi aumentare la capacità o il timeout di inattività configurato in modo da poter completare le operazioni più lunghe, ad esempio il caricamento di un file di grandi dimensioni. Per ulteriori informazioni, consulta Configura il timeout per connessione inattiva per il Classic Load Balancer e Risoluzione dei problemi di latenza elevata in Elastic Load Balancing.

Causa 2: le istanze registrate chiudono la connessione a Elastic Load Balancing.

Soluzione 2: abilita le impostazioni keep-alive sulle istanze EC2 e verifica che il timeout keep-alive sia superiore alle impostazioni del timeout di inattività del load balancer.