Używam Alibaba Cloud SLB load balancer od ponad 5 lat i korzystam z niego od początkowej wewnętrznej bety Alibaba Cloud, a po wdrożeniu pojawił się następujący błąd:
Błędy pojawiają się sporadycznie, po początkowym uruchomieniu nie ma błędu bramy 502, po chwili pojawia się błąd, kontener Windows Server IIS ASP.NET stronie internetowej.
Kliknij IIS z serwera, aby otworzyć przeglądarkę, możesz normalnie przeglądać, SLB z pośrednim problemem z równoważeniem obciążenia, to pierwszy raz, kiedy się z tym spotkałem.
Rozwiązanie:
Problem pojawia się głównie w ustawieniach "Health Check Method", domyślne są następujące:
Kontrola stanu backendu jest zlecana w trakcie przebiegu, a jeśli odpowiadający kod statusu zwraca 2xx lub 3xx, serwer backendu jest uznawany za normalny.
Próbowaliśmy wykonać żądanie nagłówka na trzy sposoby: najpierw bezpośrednio uruchomiłem lokalny projekt i przetestowałem go lokalnie.
Test 1:
Użyj testu listonosza, jak pokazano poniżej:
Wracając do stanu 404 Not Found, tutaj wiemy, co to spowodowało.
Test 2:
Stosuj testy uginania, jak pokazano poniżej:
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 Nie znaleziono
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
Zwrócono także kod statusu 404.
Test 3:
Tym razem testowaliśmy bezpośrednio na oficjalnym serwerze, poprzez test curl w PowerShell, jak pokazano na poniższym rysunku:
Widać, że ta sama strona jest proszona przez nagłówek,Czasem wracają404Kod statusu, czasem zwracany200Kod statusu, co potwierdza przerywane błędy 502, które napotkaliśmy na początku.
Co powoduje, że asp.net przerywanie zwracają kody statusu 404 i 200?
Ponieważ nasza strona główna ma pamięć podręczną, gdy użytkownik użyje metody get do żądania strony głównej, strona zostanie pomyślnie zbuforowana, a następnie head and get zawsze zwraca stronę z pamięci podręcznej oraz zwraca kod odpowiedzi 200; jeśli po wygaśnięciu pamięci podręcznej żaden użytkownik nie wykona żądania metody get, a jedynie żądanie metody head przez polecenie, wystąpi błąd 404. Szacuje się, że niewiele osób spotka się z takim problemem.
Rozwiązaniem jest sprawdzenie wszystkich kodów statusu odpowiedzi w trybie kontroli stanu, jak pokazano na poniższym rysunku:
Jak rozwiązać problemy z nieprawidłowościami w sprawdzaniu nasłuchu warstwy 7 (HTTP/HTTPS):Logowanie do linku jest widoczne.
(Koniec)
|