Ich benutze den Alibaba Cloud SLB Load Balancer seit über 5 Jahren und seit der ersten internen Alibaba Cloud Beta, und nach der Bereitstellung trat folgender Fehler auf:
Fehler treten intermittierend auf, Nach dem initialen Start gibt es keinen 502-Gateway-Fehler, nach einer Minute Warten erscheint der Fehler, der Backend-Container Windows Server IIS ASP.NET Website.
Klicke auf IIS vom Server aus, um den Browser zu öffnen, du kannst normal surfen, SLB-Lastverteilungsprobleme – das ist das erste Mal, dass ich darauf stoße.
Lösung:
Das Problem tritt hauptsächlich in den Einstellungen "Gesundheitsprüfungsmethode" auf, die Standardeinstellungen sind wie folgt:
Die Backend-Gesundheitsprüfung wird direkt angefordert, und wenn der entsprechende Statuscode 2xx oder 3xx zurückgibt, gilt der Backend-Server als normal.
Wir haben versucht, eine Header-Anfrage auf drei Arten zu stellen: Erstens habe ich das lokale Projekt direkt geleitet und es lokal getestet.
Test 1:
Verwenden Sie den Postboten-Test wie unten gezeigt:
Zurück zum 404 Not Found-Zustand: Hier wissen wir, was die Ursache war.
Test 2:
Verwenden Sie den Curl-Test wie unten gezeigt:
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 Nicht gefunden
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
Ebenfalls zurückgegeben wird ein 404-Statuscode.
Test 3:
Diesmal haben wir direkt auf dem offiziellen Server getestet, durch den Curl-Test unter PowerShell, wie in der untenstehenden Abbildung gezeigt:
Sie sehen über den Kopf, dass dieselbe Seite angefordert wird,Manchmal kehren sie zurück404Statuscode, manchmal zurückgegeben200Statuscode, was die intermittierenden 502-Fehler bestätigte, die wir zu Beginn hatten.
Was verursacht, dass asp.net immer wieder 404- und 200-Statuscodes zurückgeben?
Da unsere Startseite einen Cache hat, wird die Seite erfolgreich gecachet, wenn der Benutzer die Get-Methode verwendet, um die Startseite anzufordern, und dann geben Head und Get immer die zwischengespeicherte Seite zurück und geben auch den 200-Antwort-Code zurück. Wenn nach dem Ablauf des Caches kein Benutzer eine Get-Method-Anfrage stellt, sondern nur die Head-Method-Anfrage über den Befehl, tritt ein 404-Fehler auf. Es wird geschätzt, dass nur wenige Menschen auf diese Art von Problem stoßen werden.
Die Lösung besteht darin, alle Antwort-Statuscodes im Gesundheitskontrollmodus zu überprüfen, wie in der untenstehenden Abbildung gezeigt:
Wie man Anomalien der Gesundheitsprüfungen bei Layer-7-Listening (HTTP/HTTPS) behebt:Der Hyperlink-Login ist sichtbar.
(Ende)
|