Používam Alibaba Cloud SLB load balancer už viac ako 5 rokov a používam ho od počiatočnej internej bety Alibaba Cloud, a po nasadení sa objavila nasledujúca chyba:
Chyby sa vyskytujú občas, po počiatočnom spustení nie je žiadna chyba brány 502, po minúte čakania sa chyba objaví, backend kontajner Windows Server IIS ASP.NET webovej stránke.
Kliknite na IIS zo servera, aby ste otvorili prehliadač, môžete prehliadať normálne, SLB problémy s vyvažovaním záťaže sú nepriame, je to prvýkrát, čo som sa s tým stretol.
Riešenie:
Problém sa hlavne objavuje v nastaveniach "Metóda kontroly zdravia", predvolené nastavenia sú nasledovné:
Backendová kontrola zdravia sa žiada priamo a ak príslušný stavový kód vráti 2xx alebo 3xx, backendový server sa považuje za normálny.
Snažili sme sa vytvoriť požiadavku na hlavičku tromi spôsobmi: najprv som priamo spustil lokálny projekt a otestoval ho lokálne.
Test 1:
Použite test poštára, ako je uvedené nižšie:
Ak sa vrátime k stavu 404 Not Found, tu vlastne vieme, čo to spôsobilo.
Test 2:
Použite curl testovanie, ako je uvedené nižšie:
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 Nenájdené
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
Tiež je vrátený stavový kód 404.
Test 3:
Tentoraz sme testovali priamo na oficiálnom serveri, cez curl test pod PowerShellom, ako je znázornené na obrázku nižšie:
Vidíte, že tá istá stránka je požadovaná cez nadpis,Niekedy sa vracajú404Stavový kód, niekedy vracaný200Kód stavu, čím sa potvrdzujú prerušované chyby 502, s ktorými sme sa stretli na začiatku.
Čo spôsobuje asp.net že občas vracia stavové kódy 404 a 200?
Keďže naša domovská stránka má cache, keď používateľ použije metódu get na požiadanie o domovskú stránku, stránka sa úspešne uloží do vyrovnávacej pamäte, a potom head and get vždy vráti uloženú stránku a tiež vráti kód odpovede 200; ak po vypršaní cache žiadny používateľ nevykoná požiadavku metódy get, ale iba generálnu metódu cez príkaz, nastane chyba 404. Odhaduje sa, že s takýmto problémom sa stretne len málo ľudí.
Riešením je skontrolovať všetky kódy stavu odpovedí v režime kontroly zdravia, ako je znázornené na obrázku nižšie:
Ako riešiť abnormality pri kontrole stavu Layer 7 Listening (HTTP/HTTPS):Prihlásenie na hypertextový odkaz je viditeľné.
(Koniec)
|