Risoluzione dei problemi degli Application Load Balancer - 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 degli Application Load Balancer

Le informazioni seguenti possono essere utili per risolvere i problemi con l'Application Load Balancer.

Un target registrato non è in servizio

Se un oggetto richiede più tempo del previsto per inserire lo InService stato, è possibile che i controlli dello stato non siano stati superati. Il target non è in servizio finché non passa un controllo dello stato. Per ulteriori informazioni, consulta Controlli dello stato di salute per i gruppi target di Application Load Balancer.

Verificare che l'istanza non superi i controlli dell'integrità e quindi verificare le seguenti problematiche:

Un gruppo di sicurezza non consente il traffico

Il gruppo di sicurezza associato a un'istanza deve consentire il traffico dal sistema di bilanciamento del carico utilizzando la porta di controllo dello stato e il protocollo di controllo dello stato. È possibile aggiungere una regola al gruppo di sicurezza dell'istanza per consentire tutto il traffico dal sistema di bilanciamento del carico per il gruppo di sicurezza. Inoltre, il gruppo di sicurezza del sistema di bilanciamento del carico deve consentire il traffico verso le istanze.

Una lista di controllo accessi di rete (ACL) non consente il traffico

L'ACL di rete associato con le sottoreti per le istanze deve consentire il traffico in entrata sulla porta di controllo dello stato e di traffico in uscita su porte temporanee (1024-65535). L'ACL di rete associato con le sottoreti per i nodi del sistema di bilanciamento del carico deve consentire il traffico in entrata su porte temporanee e il traffico in uscita sul controllo dello stato e su porte temporanee.

Il percorso ping non esiste

Creare una pagina di destinazione per il controllo dello stato e specificare il relativo percorso come percorso ping.

La connessione scade

In primo luogo, verificare che sia possibile connettersi alla destinazione direttamente dalla rete utilizzando l'indirizzo IP privato della destinazione e il protocollo del controllo dello stato. Se non è possibile connettersi, verificare che l'istanza non sia utilizzata eccessivamente, e aggiungere ulteriori destinazioni al gruppo di destinazioni se è troppo occupato per rispondere. Se non è possibile connettersi, è probabile che la pagina di destinazione non stia rispondendo prima del timeout del controllo dello stato. Scegliere una pagina di destinazione del controllo dello stato più semplice o regolare le impostazioni del controllo dello stato.

La destinazione non ha restituito un codice di risposta positiva

Per impostazione predefinita, il codice di successo è 200, ma è possibile specificare ulteriori codici al momento della configurazione dei controlli dello stato. Verificare i codici di successo relativi al sistema di bilanciamento del carico e accertarsi che l'applicazione sia configurata per restituire tali codici in caso di esito positivo.

Il codice di risposta della destinazione era difettoso o si è verificato un errore di connessione alla destinazione

Verifica che l'applicazione risponda alle richieste di controllo dell'integrità del sistema di bilanciamento del carico. Alcune applicazioni richiedono una configurazione aggiuntiva per rispondere ai controlli dell'integrità, come la configurazione dell'host virtuale per rispondere all'intestazione HTTP dell'host inviata dal sistema di bilanciamento del carico. Il valore dell'intestazione dell'host contiene l'indirizzo IP privato della destinazione, seguito dalla porta per il controllo dello stato quando non si utilizza una porta predefinita. Se la destinazione utilizza una porta di controllo dello stato predefinita, il valore dell'intestazione dell'host contiene solo l'indirizzo IP privato della destinazione. Ad esempio, se l'indirizzo IP privato della destinazione è 10.0.0.10 e la porta per il controllo dello stato è8080, l'intestazione HTTP Host inviata dal load balancer durante i controlli di integrità è. Host: 10.0.0.10:8080 Se l'indirizzo IP privato della destinazione è 10.0.0.10 e la porta per il controllo dello stato è80, l'intestazione HTTP Host inviata dal load balancer durante i controlli di integrità è. Host: 10.0.0.10 Per eseguire correttamente un controllo dell'integrità dell'applicazione potrebbero essere necessari una configurazione dell'host virtuale per rispondere a tale host o una configurazione predefinita. Le richieste di controllo dell'integrità hanno i seguenti attributi: l'User-Agent è impostato su ELB-HealthChecker/2.0, il terminatore di riga per i campi messagge-header è la sequenza CRLF e l'intestazione termina alla prima riga vuota seguita da una CRLF.

I client non sono in grado di connettersi a un sistema di bilanciamento del carico connesso a Internet

Se il sistema di bilanciamento del carico non risponde alle richieste, verifica la presenza dei problemi seguenti:

Il tuo load balancer connesso a Internet è associato a una sottorete privata

Assicurati di avere specificato sottoreti pubbliche per il sistema di bilanciamento del carico. Una sottorete pubblica include una route all'Internet gateway per il tuo cloud privato virtuale (VPC, Virtual Private Cloud).

Un gruppo di sicurezza o una lista di controllo degli accessi di rete non consente il traffico

Il gruppo di sicurezza per il load balancer e le liste di controllo degli accessi di rete per le sottoreti del load balancer devono consentire il traffico in entrata dai client e in uscita verso i client sulle porte listener.

Le richieste inviate a un dominio personalizzato non vengono ricevute dal sistema di bilanciamento del carico

Se il sistema di bilanciamento del carico non riceve le richieste inviate a un dominio personalizzato, verifica la presenza dei problemi seguenti:

Il nome di dominio personalizzato non si risolve all'indirizzo IP del sistema di bilanciamento del carico
  • Conferma a quale indirizzo IP si risolve il nome di dominio personalizzato utilizzando un'interfaccia della linea di comando.

    • Linux, macOS o Unix: puoi utilizzare il comando dig all'interno del terminale. Es. dig example.com

    • Windows: è possibile utilizzare il comando nslookup all'interno del prompt dei comandi. Es. nslookup example.com

  • Conferma a quale indirizzo IP si risolve il nome DNS del sistema di bilanciamento del carico utilizzando un'interfaccia della linea di comando.

  • Confronta i risultati dei due output. Gli indirizzi IP devono corrispondere.

Se si utilizza Route 53 per ospitare il dominio personalizzato, consulta Il mio dominio non è disponibile su Internet nella Guida per gli sviluppatori di Amazon Route 53.

Le richieste HTTPS inviate al sistema di bilanciamento del carico restituiscono "NET::ERR_CERT_COMMON_NAME_INVALID"

Se le richieste HTTPS ricevono l'errore NET::ERR_CERT_COMMON_NAME_INVALID dal sistema di bilanciamento del carico, verifica le seguenti possibili cause:

  • Il nome di dominio utilizzato nella richiesta HTTPS non corrisponde al nome alternativo specificato nel certificato ACM associato agli ascoltatori.

  • Viene utilizzato il nome DNS predefinito del sistema di bilanciamento del carico. Il nome DNS predefinito non può essere utilizzato per effettuare richieste HTTPS poiché non è possibile richiedere un certificato pubblico per il dominio *.amazonaws.com.

Il sistema di bilanciamento del carico mostra tempi di elaborazione lunghi

Il sistema di bilanciamento del carico calcola i tempi di elaborazione in modo diverso sulla base della configurazione.

  • Se AWS WAF è associato all'Application Load Balancer e un client invia una richiesta HTTP POST, il tempo necessario per inviare i dati per le richieste POST si riflette nel request_processing_time campo dei log di accesso del load balancer. Si tratta di un comportamento previsto per le richieste POST.

  • Se non AWS WAF è associato all'Application Load Balancer e un client invia una richiesta HTTP POST, il tempo necessario per inviare i dati per le richieste POST si riflette nel target_processing_time campo dei log di accesso del load balancer. Si tratta di un comportamento previsto per le richieste POST.

Il bilanciamento del carico invia un codice di risposta di 000

Con connessioni HTTP/2, se la lunghezza compressa di una qualsiasi delle intestazioni supera 8KB o se il numero di richieste servite tramite una connessione supera 10.000, il sistema di bilanciamento del carico invia un frame GOAWAY e chiude la connessione con un FIN TCP.

Il sistema di bilanciamento del carico genera un errore HTTP

I seguenti errori HTTP vengono generati dal sistema di bilanciamento del carico. Il sistema di bilanciamento del carico invia il codice HTTP al client, salva la richiesta nel log degli accessi e incrementa il parametro HTTPCode_ELB_4XX_Count o HTTPCode_ELB_5XX_Count.

HTTP 400: Bad request

Possibili cause:

  • Il client ha inviato una richiesta con un formato errato che non soddisfa le specifiche HTTP.

  • L'intestazione della richiesta ha superato il limite di 16 K per riga della richiesta, 16K per singola intestazione o 64 K per l'intera intestazione della richiesta.

  • Il client ha chiuso la connessione prima di inviare l'intero corpo della richiesta.

HTTP 401: Unauthorized

È stata configurata una regola del listener per autenticare gli utenti, ma una delle condizioni seguenti è vera:

  • È stato configurato OnUnauthenticatedRequest per rifiutare gli utenti non autenticati o il provider di identità ha rifiutato l'accesso.

  • Le dimensioni delle dichiarazioni restituite dal provider di identità hanno superato il limite massimo supportato dal sistema di bilanciamento del carico.

  • Un client ha inoltrato una richiesta HTTP/1.0 senza un'intestazione host e il sistema di bilanciamento del carico non è stato in grado di generare un URL di reindirizzamento.

  • L'ambito richiesto non restituisce un token ID.

  • Il processo di accesso non è stato completato prima della scadenza del timeout di accesso del client. Per ulteriori informazioni, consulta Client login timeout.

HTTP 403: Forbidden

Hai configurato una AWS WAF lista di controllo degli accessi Web (Web ACL) per monitorare le richieste all'Application Load Balancer e questa ha bloccato una richiesta.

HTTP 405: Method not allowed

Il client ha utilizzato il metodo TRACE che non è supportato dagli Application Load Balancer.

HTTP 408: Request timeout

Il client non ha inviato i dati prima della scadenza del periodo di timeout di inattività. L'invio di un keepalive TCP non impedisce il timeout. Invia almeno 1 byte di dati prima che scada ciascun periodo di timeout di inattività. Aumenta la durata del periodo di timeout di inattività in base alle esigenze.

HTTP 413: Payload too large

Possibili cause:

  • Il target è una funzione Lambda e il corpo della richiesta supera il limite di 1 MB.

  • L'intestazione della richiesta ha superato il limite di 16 K per riga della richiesta, 16K per singola intestazione o 64 K per l'intera intestazione della richiesta.

HTTP 414: URI too long

Le dimensioni dell'URL della richiesta o dei parametri della stringa di query superano i limiti previsti.

HTTP 460

Il sistema di bilanciamento del carico ha ricevuto una richiesta da un client, ma il client ha chiuso la connessione con il sistema di bilanciamento del carico prima dello scadere del timeout di inattività.

Accertarsi che il periodo di timeout del client sia superiore al periodo di timeout di inattività del sistema di bilanciamento del carico. Accertarsi che la destinazione fornisca una risposta al client prima che il relativo periodo di timeout scada oppure aumentare questo periodo di tempo affinché corrisponda al timeout di inattività del sistema di bilanciamento del carico, se il client lo supporta.

HTTP 463

Il sistema di bilanciamento del carico ha ricevuto un'intestazione X-Forwarded-For della richiesta con troppi indirizzi IP. Il limite massimo di indirizzi IP è 30.

HTTP 464

Il sistema di bilanciamento del carico ha ricevuto un protocollo di richiesta in entrata incompatibile con la versione di configurazione del protocollo del gruppo di destinazioni.

Possibili cause:

  • Il protocollo della richiesta è HTTP/1.1, mentre la versione del protocollo del gruppo di destinazioni è gRPC o HTTP/2.

  • Il protocollo della richiesta è gRPC, mentre la versione del protocollo del gruppo di destinazioni è HTTP/1.1.

  • Il protocollo della richiesta è HTTP/2 è la richiesta non è POST, mentre la versione del protocollo del gruppo di destinazioni è gRPC.

HTTP 500: Internal server error

Possibili cause:

  • È stata configurata una AWS WAF lista di controllo degli accessi Web (Web ACL) e si è verificato un errore durante l'esecuzione delle regole Web ACL.

  • Il sistema di bilanciamento del carico non è in grado di comunicare con l'endpoint del token del provider di identità o con l'endpoint delle info sull'utente del provider di identità.

    • Verifica che il DNS del provider di identità sia risolvibile pubblicamente.

    • Verificare che i gruppi di sicurezza per il sistema di bilanciamento del carico e le liste di controllo degli accessi di rete per il servizio VPC consentano l'accesso in uscita a questi endpoint.

    • Verificare che il VPC abbia accesso a Internet. Se si dispone di un sistema di bilanciamento del carico interno, utilizzare un gateway NAT per abilitare l'accesso interno.

  • L'attestazione dell'utente ricevuta dal provider di identità è di dimensione maggiore di 11 KB.

HTTP 501: Not implemented

Il sistema di bilanciamento del carico ha ricevuto un'intestazione Transfer-Encoding con un valore non supportato. I valori supportati per Transfer-Encoding sono chunked e identity. In alternativa, è possibile utilizzare l'intestazione Content-Encoding.

HTTP 502: Bad Gateway

Possibili cause:

  • Il sistema di bilanciamento del carico ha ricevuto un pacchetto RST TCP dalla destinazione durante il tentativo di stabilire una connessione.

  • Il sistema di bilanciamento del carico ha ricevuto una risposta imprevista dalla destinazione, ad esempio "ICMP Destination unreachable (Host unreachable)" ("Destinazione ICMP non raggiungibile (host non raggiungibile)") durante un tentativo di stabilire una connessione. Accertarsi che sia consentito il traffico dalle sottoreti del sistema di bilanciamento del carico verso le destinazioni sulla porta di destinazione.

  • La destinazione ha chiuso la connessione con un pacchetto RST TCP o FIN TCP mentre il sistema di bilanciamento del carico aveva una richiesta rilevante per la destinazione. Controllare se la durata keep-alive della destinazione è inferiore al valore del timeout di inattività del sistema di bilanciamento del carico.

  • La risposta della destinazione non è valida o contiene intestazioni HTTP che non sono valide.

  • L'intestazione della risposta della destinazione è di dimensione superiore a 32 K per l'intera intestazione.

  • L'intervallo di tempo per l'annullamento della registrazione è scaduto per una richiesta gestita da una destinazione la cui registrazione era stata annullata. Aumentare l'intervallo di tempo in modo che sia possibile completare le operazioni che richiedono più tempo.

  • Il target è una funzione Lambda e il corpo della richiesta supera il limite di 1 MB.

  • La destinazione è una funzione Lambda che non ha risposto prima che sia stato raggiunto il suo timeout configurato.

  • La destinazione è una funzione Lambda che ha restituito un errore, oppure la funzione è stata limitata dal servizio Lambda.

  • Il sistema di bilanciamento del carico ha rilevato un errore di handshake SSL durante la connessione a una destinazione.

Per ulteriori informazioni, consulta Come risolvere gli errori HTTP 502 di Application Load Balancer nel Support Knowledge Center. AWS

HTTP 503: Service Unavailable

I gruppi di destinazioni del sistema di bilanciamento del carico non dispongono di destinazioni registrate.

HTTP 504: Gateway Timeout

Possibili cause:

  • Il sistema di bilanciamento del carico non è stato in grado di stabilire una connessione con la destinazione prima dello scadere del timeout della connessione (10 secondi).

  • Il sistema di bilanciamento del carico ha stabilito una connessione con la destinazione, ma la destinazione non ha risposto prima dello scadere del timeout di inattività.

  • L'ACL o SecurityGroup le politiche della rete non consentivano il traffico dai target ai nodi di bilanciamento del carico sulle porte temporanee (1024-65535).

  • La destinazione ha restituito un'intestazione content-length più grande del corpo dell'entità. Il sistema di bilanciamento del carico è scaduto in attesa di byte mancanti.

  • La destinazione è una funzione Lambda e il servizio Lambda non ha risposto prima della scadenza del timeout della connessione.

  • Il sistema di bilanciamento del carico ha rilevato un timeout dell'handshake SSL (10 secondi) durante la connessione a una destinazione.

HTTP 505: Version not supported

Il sistema di bilanciamento del carico ha ricevuto una versione della richiesta HTTP inaspettata. Ad esempio, il sistema di bilanciamento del carico ha stabilito una connessione HTTP/1, ma ha ricevuto una richiesta HTTP/2.

HTTP 507: spazio di archiviazione insufficiente

L'URL di reindirizzamento è troppo lungo.

HTTP 561: Unauthorized

È stata configurata una regola del listener per autenticare gli utenti, ma il provider di identità ha restituito un codice di errore durante l'autenticazione dell'utente. Controlla i log di accesso per trovare il relativo codice di motivo errore.

Una destinazione genera un errore HTTP

Il sistema di bilanciamento del carico inoltra risposte HTTP valide dalle destinazioni al client, inclusi gli errori HTTP. Gli errori HTTP generati da una destinazione vengono registrati nei parametri HTTPCode_Target_4XX_Count e HTTPCode_Target_5XX_Count.

Un AWS Certificate Manager certificato non è disponibile per l'uso

Quando si decide di utilizzare un listener HTTPS con Application Load Balancer AWS Certificate Manager , è necessario convalidare la proprietà del dominio prima di emettere un certificato. Se durante la configurazione viene saltato questo passaggio, il certificato rimane nello stato Pending Validation e non sarà disponibile per l'uso fino a quando non sarà convalidato.

  • Se si utilizza la convalida e-mail, consulta Convalida e-mail nella Guida per l'utente di AWS Certificate Manager .

  • Se si utilizza la convalida DNS, consulta Convalida DNS nella Guida per l'utente di AWS Certificate Manager .

Le intestazioni a più righe non sono supportate

Gli Application Load Balancer non supportano le intestazioni a più righe, incluse le intestazioni con tipo di supporto message/http. Quando viene fornita un'intestazione a più righe, l'Application Load Balancer aggiunge un carattere due punti, ":", prima di passarla alla destinazione.

Risolvi i problemi relativi agli obiettivi non integri utilizzando la mappa delle risorse

Se i tuoi obiettivi Application Load Balancer non superano i controlli di integrità, puoi utilizzare la mappa delle risorse per trovare obiettivi non integri e intraprendere azioni in base al codice del motivo dell'errore. Per ulteriori informazioni, consulta Visualizza la mappa delle risorse di Application Load Balancer.

La mappa delle risorse offre due visualizzazioni: Overview e Unhealthy Target Map. La panoramica è selezionata per impostazione predefinita e mostra tutte le risorse del sistema di bilanciamento del carico. Selezionando la visualizzazione Unhealthy Target Map verranno visualizzati solo i target non integri in ogni gruppo target associato all'Application Load Balancer.

Nota

È necessario abilitare Mostra i dettagli delle risorse per visualizzare il riepilogo dei controlli di integrità e i messaggi di errore per tutte le risorse applicabili all'interno della mappa delle risorse. Se non è abilitata, è necessario selezionare ogni risorsa per visualizzarne i dettagli.

La colonna Gruppi target mostra un riepilogo degli obiettivi sani e non sani per ogni gruppo target. Questo può aiutare a determinare se tutti gli obiettivi non superano i controlli sanitari o se solo obiettivi specifici lo sono. Se tutti gli obiettivi di un gruppo target non superano i controlli di integrità, controlla la configurazione del gruppo target. Seleziona il nome di un gruppo target per aprirne la pagina di dettaglio in una nuova scheda.

La colonna Target mostra il targetID e lo stato attuale del controllo dello stato di salute per ciascun bersaglio. Quando un bersaglio non è integro, viene visualizzato il codice del motivo dell'errore del controllo dello stato di salute. Quando un singolo oggetto non supera il controllo di integrità, verifica che l'oggetto disponga di risorse sufficienti e conferma che le applicazioni in esecuzione sull'oggetto siano disponibili. Seleziona l'ID di un target per aprirne la pagina di dettaglio in una nuova scheda.

Selezionando Esporta è possibile esportare la visualizzazione corrente della mappa delle risorse di Application Load Balancer in formato PDF.

Verifica che l'istanza non superi i controlli di integrità e quindi, in base al codice del motivo dell'errore, verifica i seguenti problemi:

  • Insalubre: mancata corrispondenza della risposta HTTP

    • Verifica che l'applicazione in esecuzione sulla destinazione stia inviando la risposta HTTP corretta alle richieste di controllo dello stato di Application Load Balancer.

    • In alternativa, puoi aggiornare la richiesta di controllo dello stato di Application Load Balancer in modo che corrisponda alla risposta dell'applicazione in esecuzione sulla destinazione.

  • Non integro: la richiesta è scaduta

    • Verifica che i gruppi di sicurezza e le liste di controllo degli accessi alla rete (ACL) associati ai tuoi obiettivi e Application Load Balancer non blocchino la connettività.

    • Verifica che la destinazione disponga di risorse sufficienti per accettare connessioni dall'Application Load Balancer.

    • Verifica lo stato di tutte le applicazioni in esecuzione sulla destinazione.

    • Le risposte al controllo dello stato di Application Load Balancer possono essere visualizzate nei log delle applicazioni di ogni destinazione. Per ulteriori informazioni, consulta Codici motivo Health check.

  • Malsano: FailedHealthChecks

    • Verifica lo stato di tutte le applicazioni in esecuzione sulla destinazione.

    • Verifica che il target stia ascoltando il traffico sulla porta di controllo dello stato.

      Quando si utilizza un listener HTTPS

      Sei tu a scegliere quale politica di sicurezza utilizzare per le connessioni front-end. La politica di sicurezza utilizzata per le connessioni back-end viene selezionata automaticamente in base alla politica di sicurezza front-end in uso.

      • Se il listener HTTPS utilizza una politica di sicurezza TLS 1.3 per le connessioni front-end, la politica di sicurezza viene utilizzata per le connessioni back-end. ELBSecurityPolicy-TLS13-1-0-2021-06

      • Se il listener HTTPS non utilizza una politica di sicurezza TLS 1.3 per le connessioni front-end, la politica di sicurezza viene utilizzata per le connessioni back-end. ELBSecurityPolicy-2016-08

      Per ulteriori informazioni, consulta Politiche di sicurezza.

    • Verifica che il destinatario fornisca un certificato e una chiave del server nel formato corretto specificato dalla politica di sicurezza.

    • Verifica che il target supporti uno o più codici corrispondenti e un protocollo fornito da Application Load Balancer per stabilire handshake TLS.