Používám Alibaba Cloud SLB load balancer více než 5 let a používám ho od počáteční interní bety Alibaba Cloud, a po nasazení se objevila následující chyba:
Chyby se vyskytují občas, po prvním spuštění nedochází k chybě brány 502, po minutě se chyba objeví, backend Windows Server IIS kontejner ASP.NET webu.
Klikněte na IIS ze serveru a otevřete prohlížeč, můžete normálně prohlížet, SLB load balancing nepřímé problémy, je to poprvé, co jsem se s tím setkal.
Řešení:
Problém se objevuje hlavně v nastavení "Metoda kontroly zdraví", výchozí nastavení jsou následující:
Kontrola stavu backendu je vyžadována přímo v předem a pokud odpovídající stav vrátí 2xx nebo 3xx, backendový server je považován za normální.
Zkusili jsme vytvořit požadavek na hlavičku třemi způsoby, nejprve jsem přímo spustil lokální projekt a otestoval ho lokálně.
Test 1:
Použijte test pošťáka, jak je uvedeno níže:
Když se vrátíme ke stavu 404 Not Found, tady vlastně víme, co to způsobilo.
Test 2:
Použijte testování kudrlinek, jak je uvedeno níže:
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 Nenalezeno
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
Také je vrácen stavový kód 404.
Test 3:
Tentokrát jsme testovali přímo na oficiálním serveru, pomocí curl testu v PowerShellu, jak je znázorněno na obrázku níže:
Vidíte, že stejná stránka je požadována přes nadpis,Někdy se vracejí404Stavový kód, někdy vracený200Kód stavu, čímž potvrzují přerušované chyby 502, na které jsme narazili na začátku.
Co způsobuje asp.net že občas vracejí stavové kódy 404 a 200?
Protože naše domovská stránka má cache, když uživatel použije metodu get k požadavku na domovskou stránku, stránka bude úspěšně uložena v cache, a pak head and get vždy vrátí cacheovanou stránku a také vrátí kód odpovědi 200; pokud po vypršení cache žádný uživatel neprovede požadavek na metodu get, pouze generace head příkazu, dojde k chybě 404. Odhaduje se, že s tímto problémem se setká jen málo lidí.
Řešením je zkontrolovat všechny kódy stavu odpovědí v režimu kontroly stavu, jak je znázorněno na obrázku níže:
Jak řešit abnormality kontroly zdraví při poslechu vrstvy 7 (HTTP/HTTPS):Přihlášení k hypertextovému odkazu je viditelné.
(Konec)
|