J’utilise l’équilibreur de charge Alibaba Cloud SLB depuis plus de 5 ans, et je l’utilise depuis la bêta interne initiale d’Alibaba Cloud, et après le déploiement, l’erreur suivante s’est produite :
Les erreurs surviennent de façon intermittente, après le démarrage initial, il n’y a pas d’erreur de passerelle 502 ; après une minute d’attente, l’erreur apparaît, le conteneur Windows Server IIS ASP.NET site web.
Cliquez sur IIS depuis le serveur pour ouvrir le navigateur, vous pouvez naviguer normalement, problèmes indirects d’équilibrage de charge SLB, c’est la première fois que je rencontre ça.
Solution:
Le problème apparaît principalement dans les paramètres « Méthode de contrôle de santé », les paramètres par défaut sont les suivants :
La vérification de l’état du backend est demandée en avance, et si le code d’état correspondant retourne 2xx ou 3xx, le serveur backend est considéré comme normal.
Nous avons essayé de faire une requête d’en-tête de trois façons : d’abord, j’ai lancé directement le projet local et l’ai testé localement.
Test 1 :
Utilisez le test du facteur comme montré ci-dessous :
En revenant à l’état 404 Non Trouvé, en fait, ici, nous savons ce qui l’a causé.
Test 2 :
Utilisez le test de curl comme montré ci-dessous :
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 Non trouvé
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
Un code de statut 404 est également revenu.
Test 3 :
Cette fois, nous avons testé directement sur le serveur officiel, via le test de curl sous PowerShell, comme montré dans la figure ci-dessous :
Vous pouvez voir que la même page est demandée via l’entrée,Parfois retour404code de statut, parfois retourné200Code de statut, confirmant ainsi les erreurs intermittentes 502 que nous avons rencontrées au début.
Qu’est-ce qui asp.net fait renvoyer intermittemment les codes de statut 404 et 200 ?
Comme notre page d’accueil possède un cache, lorsque l’utilisateur utilise la méthode get pour demander la page d’accueil, la page sera mise en cache avec succès, puis la tête et le get retourneront toujours la page mise en cache, et retourneront également le code de réponse 200 ; si, après l’expiration du cache, aucun utilisateur ne fait de requête de la méthode get, seule la requête de la méthode tête via la commande, une erreur 404 se produira. On estime que peu de personnes rencontreront ce genre de problème.
La solution consiste à vérifier tous les codes d’état de réponse en mode contrôle de santé, comme montré dans la figure ci-dessous :
Comment dépanner les anomalies de la vérification de santé de l’écoute de couche 7 (HTTP/HTTPS) :La connexion hyperlientérée est visible.
(Fin)
|