Alibaba Cloud SLB yük dengeleyicisini 5 yıldan fazla süredir kullanıyorum ve ilk Alibaba Cloud dahili betasından beri kullanıyorum; dağıtımdan sonra aşağıdaki hata meydana geldi:
Hatalar aralıklı olarak meydana gelir, ilk başlatmadan sonra 502 gateway hatası yok, bir dakika bekledikten sonra hata beliriyor, arka uç Windows Server IIS konteyneri ASP.NET web sitesine giriyor.
Sunucudan IIS'e tıklayarak tarayıcıyı açabilirsiniz, normal şekilde gezebilirsiniz, SLB yük dengeleme dolaylı sorunlar, bu ilk kez karşılaşıyorum.
Çözüm:
Sorun esas olarak "Sağlık Kontrol Yöntemi" ayarlarında ortaya çıkar, varsayılan ayarlar aşağıdaki gibidir:
Arka uç sağlık kontrolü ön planda istenir ve ilgili durum kodu 2xx veya 3xx dönerse, arka uç sunucu normal sayılır.
Başlık talebi yapmak için üç farklı yola çalıştık, birincisi, doğrudan yerel projeyi çalıştırdım ve yerel olarak test ettim.
Test 1:
Aşağıda gösterildiği gibi postacı testini kullanın:
404 Bulunmadı durumuna dönersek, aslında burada bunun nedenini biliyoruz.
Test 2:
Aşağıda gösterildiği gibi curl testini kullanın:
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 Bulunmadı
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
Ayrıca 404 durum kodu da iade edildi.
Test 3:
Bu sefer, aşağıdaki şekilde gösterildiği gibi, PowerShell altında curl testi ile doğrudan resmi sunucuda test yaptık:
Aynı sayfanın başlık üzerinden istendiğini görebilirsiniz,Bazen geri döner404durum kodu, bazen geri döndü200Durum kodu, böylece başlangıçta karşılaştığımız aralıklı 502 hatalarını doğrular.
404 ve 200 durum kodlarının aralıklı olarak geri dönmesinin asp.net neden oluyor?
Ana sayfamızda önbellek olduğundan, kullanıcı get yöntemini kullanarak ana sayfayı talep ettiğinde, sayfa başarıyla önbelleğe alınır ve ardından head ve get her zaman önbelleklenmiş sayfayı döndürür, ayrıca önbellek süresi derken hiçbir kullanıcı get yöntemi talebi yapmazsa, sadece head metot talebi için komut yoluyla bir get yöntemi isteği yaparsa, 404 hatası oluşur. Bu tür bir sorunla çok az kişinin karşılaşacağı tahmin edilmektedir.
Çözüm, aşağıdaki şekilde gösterildiği gibi sağlık kontrolü modunda tüm yanıt durum kodlarını kontrol etmektir:
Katman 7 Dinleme (HTTP/HTTPS) sağlık kontrolü anormalliklerini nasıl giderebiliriz:Bağlantı girişi görünür.
(Son)
|