全部產品
Search
文件中心

Server Load Balancer:NLB健全狀態檢查

更新時間:Nov 29, 2024

網路型負載平衡NLB通過健全狀態檢查來判斷後端伺服器業務的可用性。開啟健全狀態檢查功能後,當某台後端伺服器健全狀態檢查出現異常時,負載平衡會自動將新的請求分發到其他健全狀態檢查正常的後端伺服器上。當該後端伺服器恢複正常運行時,負載平衡會自動將其重新納入服務並進行流量轉寄。健全狀態檢查機制是保證業務高可用的關鍵要素之一。它提高了使用者業務的整體可用性,避免了局部後端伺服器異常對整體服務造成的影響。

NLB健全狀態檢查過程

網路型負載平衡NLB採用叢集部署。叢集內相關節點伺服器同時承載了資料轉寄和健全狀態檢查職責。

叢集內不同伺服器分別獨立、並行地根據負載平衡策略進行資料轉寄和健全狀態檢查操作。如果NLB對某一台後端伺服器健全狀態檢查失敗,

  • 且伺服器組未開啟串連優雅中斷,異常的後端伺服器會處理完存量的串連會話後,關閉串連。此時,新的用戶端請求不會分發給該異常後端伺服器。

  • 且伺服器組開啟串連優雅中斷,異常的後端伺服器會繼續處理存量的串連會話,直到到達優雅中斷逾時時間時,關閉串連。此時,新的用戶端請求不會分發給該異常後端伺服器。

說明

網路型負載平衡NLB健全狀態檢查使用的位址區段是NLB的Local IP,後端伺服器務必不能屏蔽該位址區段。您無需在ECS安全性群組中額外針對該位址區段配置允許存取策略,但如果有配置iptables等安全性原則,請注意允許存取。

工作原理

TCP健全狀態檢查

針對TCP健全狀態檢查,為了提高健全狀態檢查效率,健全狀態檢查通過定製的TCP探測來擷取狀態資訊,健全狀態檢查原理如下圖所示。

TCP監聽的檢查機制如下:

  1. NLB執行個體根據監聽的健全狀態檢查配置,向後端伺服器的內網IP+【健全狀態檢查連接埠】發送TCP SYN資料包。

  2. 後端伺服器收到請求後,如果相應連接埠正在正常監聽,則會返回SYN+ACK資料包。

  3. 如果在【響應逾時時間】之內,NLB執行個體沒有收到後端伺服器返回的SYN+ACK資料包,則認為服務無響應,判定健全狀態檢查失敗,並向後端伺服器發送RST資料包中斷TCP串連。

  4. 如果在【響應逾時時間】之內,NLB執行個體成功收到後端伺服器返回的SYN+ACK資料包,則認為服務正常運行,判定健全狀態檢查成功,並進一步發送ACK資料包,隨後立即發送RST資料包中斷TCP串連。

說明

正常的TCP三向交握,NLB執行個體在收到後端伺服器返回的SYN+ACK資料包後,會進一步發送ACK資料包,隨後立即發送RST資料包中斷TCP串連。 該實現機制可能會導致後端伺服器認為相關TCP串連出現異常(非正常退出),並在業務軟體如Java串連池等日誌中拋出相應的錯誤資訊,如Connection reset by peer

解決方案:

  • TCP監聽採用HTTP方式進行健全狀態檢查。

  • 在後端伺服器配置了擷取用戶端真實IP後,忽略來自前述負載平衡服務位址區段相關訪問導致的串連錯誤。

UDP健全狀態檢查

您可以通過以下兩種方式進行UDP健全狀態檢查:

方式一:連接埠健全狀態檢查

健全狀態檢查原理如下圖所示:

UDP監聽連接埠健全狀態檢查機制如下:

  1. NLB執行個體根據監聽的健全狀態檢查配置,向後端伺服器的內網IP地址發送ICMP Request報文。

  2. NLB執行個體根據監聽的健全狀態檢查配置,向後端伺服器的內網IP+【健全狀態檢查連接埠】發送UDP探測報文。

  3. 如果在【響應逾時時間】之內,後端伺服器返回ICMP Response報文,且沒有返回Port XX Unreachable報錯資訊,則判定健全狀態檢查成功。否則判定健全狀態檢查失敗。

方式二:自訂健全狀態檢查

健全狀態檢查原理如下圖所示:

UDP監聽自訂健全狀態檢查的機制如下:

  1. NLB執行個體根據使用者指定的字元,向後端伺服器的內網IP+【健全狀態檢查連接埠】發送UDP探測報文。

  2. 如果在【響應逾時時間】之內,NLB執行個體收到後端伺服器返回的與預期一致的資訊,則判定健全狀態檢查成功;否則,判定健全狀態檢查失敗。

HTTP健全狀態檢查

對於四層(TCP或者UDP)後端協議,您可以配置HTTP健全狀態檢查,健全狀態檢查通過HEAD或GET請求來擷取狀態資訊。健全狀態檢查原理如下圖所示:

HTTP健全狀態檢查機制如下:

  1. NLB執行個體根據監聽的健全狀態檢查配置,向後端伺服器的內網IP+【健全狀態檢查連接埠】+【檢查路徑】發送HTTP HEAD或GET請求(包含設定的【網域名稱】)。

  2. 後端伺服器收到HTTP請求後,根據相應服務的運行情況,返回HTTP狀態代碼。

  3. 如果在【響應逾時時間】之內,NLB執行個體沒有收到後端伺服器返回的資訊,則認為服務無響應,判定健全狀態檢查失敗。

  4. 如果在【響應逾時時間】之內,NLB執行個體成功接收到後端伺服器返回的資訊,則將該返回資訊與配置的狀態代碼進行比對。如果匹配則判定健全狀態檢查成功,反之則判定健全狀態檢查失敗。

應用情境

TCP健全狀態檢查情境

  • 檔案上傳下載服務(FTP):通過TCP健全狀態檢查可以驗證FTP服務是否可以正常接收和響應串連請求,確保檔案傳輸的穩定性和可靠性。

  • 發送和內送郵件服務:在發送和內送郵件的情境中,通過TCP健全狀態檢查監測郵件伺服器的狀態,確保郵件傳輸的可靠性。

  • 金融交易服務:在金融交易系統中,交易伺服器的可靠性至關重要,TCP健全狀態檢查能夠及時發現故障系統,避免交易中斷。

  • 遠程登入:通過TCP健全狀態檢查來驗證遠程登入服務的狀態和效能,確保使用者能夠安全、穩定地串連到遠程伺服器。

UDP健全狀態檢查情境

傳統業務情境

  • DNS網域名稱系統業務:通過UDP進行快速健全狀態檢查,確保DNS伺服器運行正常、響應及時。

  • VoIP(語音通訊)業務:例如,Skype或VoIP電話系統,UDP健全狀態檢查通過發送小的資料包評估網路延遲、丟包率和抖動等關鍵效能指標,從而保障通話品質。

  • 線上遊戲業務:通過UDP健全狀態檢查監測遊戲伺服器回應時間和可用性,保證玩家順暢串連和遊戲體驗。

  • 流媒體業務:流媒體服務,如視頻會議和即時視頻流,通過UDP健全狀態檢查評估視頻流可用性和品質,確保快速響應和穩定播放體驗。

  • 即時通訊業務:通過UDP健全狀態檢查可以即時監測網路連接的穩定性和延遲情況,以確保訊息能夠迅速且可靠地傳輸,從而提升使用者體驗。

新興行業業務情境

  • 互連網行業QUIC改造:QUIC情境下通過UDP健全狀態檢查,可以快速檢測網路連接狀態,確保高效穩定的即時資料傳輸。

  • 物聯網(IoT)業務:通過UDP進行健全狀態檢查可以快速驗證感應器裝置的狀態,確保低延遲和高效能,以適應對功耗和成本敏感的情境。

  • 車連網(V2X)業務:在車輛與基礎設施之間通過UDP協議進行健全狀態檢查,以實現即時資料交換和快速響應,從而確保通訊的穩定性和可靠性。

  • 虛擬現實(VR)和增強現實(AR)業務:通過UDP進行健全狀態檢查,以確保快速傳輸視覺和互動資料,從而實現流暢的使用者體驗。

  • 雲遊戲業務:通過UDP健全狀態檢查,雲遊戲服務即時監測網路狀態,以確保低延遲和流暢的遊戲體驗。

HTTP健全狀態檢查情境

  • Web服務的健全狀態檢查:如果您的後端服務運行HTTP或HTTPS協議的Web服務,您可以通過HTTP監聽健全狀態檢查來擷取伺服器的狀態資訊。通過發送HTTP請求(通常是GET或HEAD請求)到伺服器上的特定路徑(如/health),可以確定伺服器是否能夠處理HTTP請求。

  • 應用程式自訂健全狀態檢查:某些應用程式可能需要自訂健全狀態檢查邏輯。例如,檢查資料庫連接池、緩衝狀態等,通過HTTP健全狀態檢查介面可以靈活地實現這些自訂檢查。

  • 微服務架構:在微服務架構中,各個微服務可能使用HTTP介面進行通訊。您可以利用HTTP健全狀態檢查來檢測微服務執行個體應用程式層的問題,根據響應內容,可以提供更詳細的診斷資訊。

  • API Gateway和反向 Proxy:如果後端伺服器是API Gateway或反向 Proxy伺服器(如Nginx、HAProxy),這些組件通常都有HTTP介面,可以通過HTTP健全狀態檢查來監控這些伺服器的健康情況。

HTTP健全狀態檢查中網域名稱的設定

當使用HTTP方式進行健全狀態檢查時,可以設定健全狀態檢查的網域名稱,但並非強制選項。因為有些應用伺服器會對請求中的host欄位做校正,即要求要求標頭中必須存在host欄位。如果在健全狀態檢查中配置了網域名稱,則NLB會將網域名稱配置到host欄位中,反之,如果沒有佈建網域名,NLB則不會在請求中附帶host欄位,因此健全狀態檢查請求就會被伺服器拒絕,可能導致健全狀態檢查失敗。

綜上原因,如果您的應用伺服器需要校正請求的host欄位,那麼就需要配置相關的網域名稱,確保健全狀態檢查正常工作。

相關文檔