Jeg har brugt Alibaba Cloud SLB load balancer i mere end 5 år, og jeg har brugt den siden den indledende interne beta af Alibaba Cloud, og efter implementeringen opstod følgende fejl:
Fejl opstår med mellemrum, efter første opstart er der ingen 502 gateway-fejl, efter at have ventet et minut dukker fejlen op, backend Windows Server IIS-containeren ASP.NET hjemmeside.
Klik på IIS fra serveren for at åbne browseren, du kan browse normalt, SLB load balancing indirekte problemer, det er første gang, jeg støder på det.
Opløsning:
Problemet optræder hovedsageligt i indstillingerne for "Health Check Method", standardindstillingerne er som følger:
Backend-sundhedstjekket anmodes i hovedet, og hvis den tilsvarende statuskode returnerer 2xx eller 3xx, betragtes backend-serveren som normal.
Vi forsøgte at lave en header-anmodning på tre måder: For det første kørte jeg direkte det lokale projekt og testede det lokalt.
Test 1:
Brug postbudstesten som vist nedenfor:
Hvis vi vender tilbage til 404 Not Found-tilstanden, faktisk ved vi her, hvad der forårsagede det.
Test 2:
Brug curl-test som vist nedenfor:
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 Ikke fundet
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
Der returneres også en 404-statuskode.
Test 3:
Denne gang testede vi direkte på den officielle server, gennem curl-testen under PowerShell, som vist i figuren nedenfor:
Du kan se, at den samme side anmodes om via hovedet,Nogle gange vender de tilbage404Statuskode, nogle gange returneret200Statuskode, hvilket bekræfter de intermitterende 502-fejl, vi stødte på i starten.
Hvad får asp.net til periodisk at returnere 404- og 200-statuskoder?
Da vores hjemmeside har en cache, vil brugeren bruge get-metoden til at anmode om hjemmesiden blive cachet korrekt, og derefter vil head og get altid returnere den cachede side og også returnere 200-svarkoden; hvis ingen bruger laver en get-metode-anmodning, kun head-metode-anmodningen via kommandoen, vil der opstå en 404-fejl efter cachen. Det anslås, at få mennesker vil støde på denne slags problemer.
Løsningen er at tjekke alle responsstatuskoder i sundhedskontroltilstanden, som vist i figuren nedenfor:
Sådan fejlsøger du unormale sundhedstjek i lag 7 lytning (HTTP/HTTPS):Hyperlink-login er synlig.
(Slut)
|