Uso il bilanciatore di carico Alibaba Cloud SLB da più di 5 anni, e lo uso fin dalla beta interna iniziale di Alibaba Cloud e, dopo il rilascio, si è verificato il seguente errore:
Gli errori si verificano a intermittenza, dopo l'avvio iniziale, non si verifica alcun errore gateway 502; dopo un minuto di attesa, appare l'errore, il container backend di Windows Server IIS ASP.NET sito web.
Clicca su IIS dal server per aprire il browser, puoi navigare normalmente, problemi indiretti di bilanciamento del carico SLB, è la prima volta che lo incontro.
Soluzione:
Il problema si manifesta principalmente nelle impostazioni di "Metodo del controllo della salute", le impostazioni predefinite sono le seguenti:
Il controllo dello stato backend viene richiesto in anticipo e, se il corrispondente codice di stato restituisce 2xx o 3xx, il server backend è considerato normale.
Abbiamo provato a fare una richiesta di header in tre modi: innanzitutto, ho eseguito direttamente il progetto locale e l'ho testato localmente.
Test 1:
Usa il test del postino come mostrato di seguito:
Tornando allo stato 404 Non Trovato, infatti, qui sappiamo cosa l'ha causato.
Test 2:
Usa il curl testing come mostrato di seguito:
C:\Users\itsvse>curl -i -X HEAD http://localhost:60155/
Warning: Setting custom HTTP method to HEAD with -X/--request may not work the
Warning: way you want. Consider using -I/--head instead. HTTP/1.1 404 Non trovato
Cache-Control: private
Content-Length: 4432
Content-Type: text/html; charset=utf-8
Server: Microsoft-IIS/10.0
X-SourceFiles: =?UTF-8?B?QzpccHJvamVjdFxteVxDb2RlU2hhcmluZ1xDb2RlU2hhcmluZy5XZWJVSVxIb21lXEVycm9yNDA0?=
X-Powered-By: ASP.NET
Date: Tue, 13 Aug 2019 03:53:04 GMT
curl: (56) Recv failure: Connection was reset
È stato restituito anche un codice di stato 404.
Test 3:
Questa volta, abbiamo testato direttamente sul server ufficiale, tramite il curl test tramite PowerShell, come mostrato nella figura sottostante:
Puoi vedere che la stessa pagina viene richiesta tramite la testa,A volte ritorno404codice di stato, a volte restituito200Codice di stato, confermando così gli errori intermittenti 502 che abbiamo riscontrato all'inizio.
Cosa asp.net causa che restituisca intermittentemente i codici di stato 404 e 200?
Poiché la nostra homepage ha una cache, quando l'utente usa il metodo get per richiedere la homepage, la pagina verrà memorizzata correttamente nella cache, e poi head e get restituiranno sempre la pagina cache, e restituiranno anche il codice di risposta 200; se, dopo la scadenza della cache, nessun utente effettua una richiesta del metodo get, solo la richiesta del metodo head tramite il comando, si verificherà un errore 404. Si stima che poche persone incontreranno questo tipo di problema.
La soluzione è controllare tutti i codici di stato delle risposte nella modalità controllo della salute, come mostrato nella figura sottostante:
Come risolvere le anomalie del controllo di salute del controllo di salute del Layer 7 Listening (HTTP/HTTPS):Il login del link ipertestuale è visibile.
(Fine)
|