Alibaba Cloud SLB load balancer uporabljam že več kot 5 let in ga uporabljam že od začetne notranje beta verzije Alibaba Cloud, po namestitvi pa se je pojavila naslednja napaka:
Napake se pojavljajo občasno, po začetnem zagonu ni napake prehoda 502, po minuti čakanja se pojavi napaka, zaledni Windows Server IIS kontejner ASP.NET spletno stran.
Kliknite IIS na strežniku, da odprete brskalnik, lahko brskate normalno, SLB težave z uravnoteženjem obremenitve so posredne, to je prvič, da sem se s tem srečal.
Rešitev:
Težava se večinoma pojavlja v nastavitvah "Metoda preverjanja zdravja", privzete nastavitve so naslednje:
Preverjanje zdravja zaledja se zahteva vnaprej, in če ustrezna statusna koda vrne 2xx ali 3xx, se strežnik zaledja šteje za normalen.
Poskušali smo narediti zahtevo za glavo na tri načine: najprej sem neposredno zagnal lokalni projekt in ga testiral lokalno.
Test 1:
Uporabite test poštarja, kot je prikazano spodaj:
Če se vrnemo k stanju 404 Not Found, pravzaprav tukaj vemo, kaj je to povzročilo.
Test 2:
Uporabite testiranje kodrov, kot je prikazano spodaj:
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 Ni najden
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
Prav tako je vrnjena statusna koda 404.
Test 3:
Tokrat smo testirali neposredno na uradnem strežniku, preko curl testa pod PowerShellom, kot je prikazano na spodnji sliki:
Vidite, da je ista stran zahtevana skozi glavo,Včasih se vrne404Statusna koda, včasih vrnjena200Statusna koda, s čimer potrjujemo občasne napake 502, s katerimi smo se srečali na začetku.
Kaj povzroča asp.net občasno vračanje statusnih kod 404 in 200?
Ker ima naša domača stran predpomnilnik, ko uporabnik uporabi metodo get za zahtevo domače strani, bo stran uspešno predpomnjena, nato pa bo head in get vedno vrnil predpomnjeno stran in tudi kodo odziva 200; če po izteku predpomnilnika noben uporabnik ne zahteva metode get, temveč le zahtevo za metodo head preko ukaza, pride do napake 404. Ocenjuje se, da se bo s tovrstnimi težavami srečalo le malo ljudi.
Rešitev je, da v načinu zdravstvenega pregleda preverite vse kode statusa odziva, kot je prikazano na spodnji sliki:
Kako odpraviti težave z nepravilnostmi preverjanja stanja poslušanja na plasti 7 (HTTP/HTTPS):Prijava do hiperpovezave je vidna.
(Konec)
|