首頁 資訊 負載均衡 健康檢查概述

負載均衡 健康檢查概述

來源:泰然健康網(wǎng) 時間:2025年04月13日 23:33

健康檢查概述

最近更新時間:2024-11-22 16:19:44

負載均衡通過健康檢查來判斷后端服務的可用性,避免后端服務異常影響前端業(yè)務,從而提高業(yè)務整體可用性。

開啟健康檢查后,無論后端服務器權(quán)重是多少(包括權(quán)重為0),負載均衡實例都會進行健康檢查。您可在實例列表頁面的“健康狀態(tài)”列查看健康檢查狀態(tài),或者在監(jiān)聽器的綁定后端服務詳情頁面查看健康檢查狀態(tài)。

當后端服務器實例被判定為異常后,負載均衡實例自動將新的請求轉(zhuǎn)發(fā)給其他正常的后端服務器,而不會轉(zhuǎn)發(fā)到異常的后端服務器。

當異常實例恢復正常后,負載均衡將其恢復至負載均衡服務中,重新轉(zhuǎn)發(fā)請求給此實例。

若健康檢查探測到所有后端服務都有異常時,請求將會被轉(zhuǎn)發(fā)給所有后端服務器。

關(guān)閉健康檢查,負載均衡將向所有后端服務器轉(zhuǎn)發(fā)流量(包括異常的后端服務器),因此強烈建議您打開健康檢查,允許負載均衡幫您自動檢查并移除異常的后端服務器。

默認被動健康檢查,針對四層 TCP SSL 監(jiān)聽器、七層 HTTP/HTTPS 監(jiān)聽器,將默認配置被動健康檢查能力(默認開啟,不支持關(guān)閉)。CLB 向后端服務轉(zhuǎn)發(fā)流量的同時并記錄后端服務的健康狀態(tài)。若轉(zhuǎn)發(fā)失敗則重試將流量轉(zhuǎn)發(fā)至其他后端服務上,同時累計此后端服務失敗次數(shù)1次,累計失敗達到3次,則屏蔽該后端服務10秒,屏蔽時間結(jié)束后,恢復流量轉(zhuǎn)發(fā)并繼續(xù)記錄后端服務的健康狀態(tài)。

健康檢查狀態(tài)

單監(jiān)聽器健康檢查狀態(tài)說明

根據(jù)健康檢查探測情況,后端服務器的健康檢查狀態(tài)如下所示:

狀態(tài)

說明

是否轉(zhuǎn)發(fā)流量

探測中

新綁定的后端服務器在檢查間隔 × 健康閾值時間內(nèi)的狀態(tài),例如,檢查間隔2s,健康閾值3次,則是6s內(nèi)的狀態(tài)。

CLB 不向處于“探測中”的后端服務轉(zhuǎn)發(fā)流量。

健康

后端服務正常。

CLB 向“健康”的后端服務轉(zhuǎn)發(fā)流量。

異常

后端服務異常。

CLB 不向“異?!钡暮蠖朔辙D(zhuǎn)發(fā)流量。

在一個四層監(jiān)聽器或者七層 URL 規(guī)則下,如果 CLB 探測到所有后端服務都不健康,將會激活全死全活邏輯,即請求將會轉(zhuǎn)發(fā)給所有權(quán)重非 0 的后端服務。

已關(guān)閉

關(guān)閉健康檢查。

CLB 向所有后端服務轉(zhuǎn)發(fā)流量。

列表頁健康檢查狀態(tài)說明

根據(jù)實例下所有監(jiān)聽器的健康探測情況綜合展示。

狀態(tài)

說明

正常

該實例下所有監(jiān)聽器的后端服務正常。

該實例下所有監(jiān)聽器的健康檢查均未開啟。

異常

該實例下任意一個監(jiān)聽器異常,則展示為異常。

未配置

該實例未配置任何監(jiān)聽器/規(guī)則。

該實例下任意一個監(jiān)聽器未綁定后端服務,且不存在異常的監(jiān)聽器。

TCP 健康檢查

針對四層 TCP 監(jiān)聽器,您可以配置 TCP 健康檢查,通過 SYN 包即發(fā)起 TCP 三次握手來獲取后端服務器的狀態(tài)信息。您還可以通過自定義協(xié)議的請求內(nèi)容和返回結(jié)果來獲取后端服務器的狀態(tài)信息。

加載中...

TCP 健康檢查機制如下:

1. 負載均衡向后端服務器(內(nèi)網(wǎng) IP 地址+健康檢查端口)發(fā)送 SYN 連接請求報文。

2. 后端服務器收到 SYN 請求報文后,若相應端口處于正常監(jiān)聽狀態(tài),則會返回 SYN+ACK 響應報文。

3. 若在響應超時時間內(nèi),負載均衡收到后端服務器返回的 SYN+ACK 響應報文,則表示服務運行正常,判定健康檢查成功,并向后端服務器發(fā)送 RST 復位報文中斷 TCP 連接。

4. 若在響應超時時間內(nèi),負載均衡未收到后端服務器返回的 SYN+ACK 響應報文,則表示服務運行異常,判定健康檢查失敗,并向后端服務器發(fā)送 RST 復位報文中斷 TCP 連接。

UDP 健康檢查

針對四層 UDP 監(jiān)聽器,您可以配置 Ping 探測和自定義探測。若您選擇了 Ping 探測方式,則只是用 ICMP ECHO 報文進行探測。

加載中...

健康檢查機制如下:

1. 負載均衡向后端服務器的內(nèi)網(wǎng) IP 地址發(fā)起Ping命令;

2. 若Ping成功,則表示服務正常,判定健康檢查成功;

3. 若Ping失敗,則表示服務異常,判定健康檢查失??;

注意:

健康檢查依賴 ICMP 協(xié)議,需要后端服務器開放回復 ICMP 包(支持 Ping);

如果后端服務器是 Linux 服務器,在大并發(fā)場景下,由于 Linux 有防 ICMP 攻擊保護機制,會限制服務器發(fā)送 ICMP 的速度,這種情況下可能導致最終導致后端服務的真實狀態(tài)與健康檢查不一致。 解決方案:在配置 UDP 健康檢查時,配置自定義輸入和輸出,向后端服務器發(fā)送您指定的字符串,且 CLB 收到您指定的應答后才判斷健康檢查成功。此方案依賴后端服務器,后端服務器需處理健康檢查輸入并返回指定輸出。

若您選擇了自定義探測方式,則可以細分為以下兩種情況:

第一種,如果僅配置“檢查請求”的內(nèi)容,沒有配置“檢查返回結(jié)果”,則使用ICMP ECHO報文+ UDP探測報文。

加載中...

健康檢查機制如下:

3.1 負載均衡向后端服務器的內(nèi)網(wǎng) IP 地址發(fā)起Ping命令;

3.2 負載均衡向后端服務器(內(nèi)網(wǎng) IP 地址+健康檢查端口)發(fā)送 UDP 探測報文;

3.3 若Ping成功,且在響應超時時間內(nèi),后端服務器未返回port XX unreachable的報錯信息,則表示服務正常,判定健康檢查成功;

3.4 若Ping失敗,或者在響應超時時間內(nèi),系統(tǒng)收到后端服務器返回的port XX unreachable報錯信息,則表示服務異常,判定健康檢查失敗;

注意:

健康檢查依賴 ICMP 協(xié)議,需要后端服務器開放回復 ICMP 包(支持 Ping)、開放回復 ICMP 端口不可達包(支持探測端口)。

如果后端服務器是 Linux 服務器,在大并發(fā)場景下,由于 Linux 有防 ICMP 攻擊保護機制,會限制服務器發(fā)送 ICMP 的速度。此時,即使后端服務已經(jīng)出現(xiàn)異常,但由于無法向 CLB 返回 port XX unreachable,CLB 由于沒收到 ICMP 應答進而判定健康檢查成功,最終導致后端服務的真實狀態(tài)與健康檢查不一致。 解決方案:在配置 UDP 健康檢查時,配置自定義輸入和輸出,向后端服務器發(fā)送您指定的字符串,且 CLB 收到您指定的應答后才判斷健康檢查成功。此方案依賴后端服務器,后端服務器需處理健康檢查輸入并返回指定輸出。

第二種,如果同時配置了“檢查請求”和“檢查返回結(jié)果”的內(nèi)容,則僅使用 UDP 探測報文, 判斷 RS 健康狀態(tài)的條件為:收到 UDP 返回的報文,且與“檢查返回結(jié)果”的內(nèi)容匹配。

加載中...

健康檢查機制如下:

3.1 負載均衡向后端服務器(內(nèi)網(wǎng) IP 地址 + 健康檢查端口)發(fā)送 UDP 探測報文;

3.2 若收到 UDP 返回的報文,且與“檢查返回結(jié)果”的內(nèi)容匹配,則表示服務正常,判定健康檢查成功;

3.3 若在響應超時時間內(nèi),未收到 UDP 返回的報文或與“檢查返回結(jié)果”的內(nèi)容未匹配,則表示服務異常,判定健康檢查失敗;

HTTP 健康檢查

針對四層 TCP 監(jiān)聽器和七層 HTTP/HTTPS 監(jiān)聽器,您可以配置 HTTP 健康檢查,通過發(fā)送 HTTP 請求來獲取后端服務器的狀態(tài)信息。

加載中...

HTTP 健康檢查機制如下:

1. 負載均衡根據(jù)健康檢查配置,向后端服務器(內(nèi)網(wǎng) IP 地址+健康檢查端口+檢查路徑)發(fā)送 HTTP 請求(可選擇設(shè)置檢查域名)。

2. 后端服務器收到請求后返回相應的 HTTP 狀態(tài)碼。

3. 若在響應超時時間內(nèi),負載均衡收到了后端服務器返回的 HTTP 狀態(tài)碼,若與設(shè)置的 HTTP 狀態(tài)碼匹配成功,則判定健康檢查成功,反之則判定健康檢查失敗。

4. 若在響應超時時間內(nèi),負載均衡未收到后端服務器的響應,則判定健康檢查失敗。

說明:

針對七層 HTTPS 監(jiān)聽器,當 HTTPS 監(jiān)聽器的轉(zhuǎn)發(fā)規(guī)則中的后端協(xié)議選擇 HTTP 時,健康檢查使用 HTTP 健康檢查;當選擇 HTTPS 時,健康檢查使用 HTTPS 健康檢查。

HTTPS 健康檢查與 HTTP 健康檢查 基本類似,不同的是 HTTPS 健康檢查是通過發(fā)送 HTTPS 請求,根據(jù)返回的 HTTPS 狀態(tài)碼判斷后端服務器的狀態(tài)信息。

健康檢查時間窗

負載均衡的健康檢查機制有效提高了業(yè)務的可用性。為了避免頻繁的健康檢查失敗引起的切換對系統(tǒng)可用性的沖擊,健康檢查只有在健康檢查時間窗內(nèi)連續(xù)多次檢查成功或失敗后,才會進行健康或異常的狀態(tài)切換。健康檢查時間窗由以下因素決定:

健康檢查配置

說明

默認值

響應超時

健康檢查響應的最大超時時間。

如果后端服務器在超時時間內(nèi)沒有正確響應,則判定為健康檢查異常。

可配置范圍:2 - 60秒。

2秒

檢測間隔

負載均衡進行健康檢查的時間間隔。

可配置范圍:2 - 300秒。

5秒

不健康閾值

如果連續(xù) n 次(n 為填寫的數(shù)值)收到的健康檢查結(jié)果失敗,則識別為不健康,控制臺顯示為失敗。

可配置范圍:2 - 10次。

3次

健康閾值

如果連續(xù) n 次(n 為填寫的數(shù)值)收到的健康檢查結(jié)果為成功,則識別為健康,控制臺顯示為成功。

可配置范圍:2 - 10次。

3次

四層健康檢查時間窗的計算方法如下:

說明:

響應超時時間要小于檢查間隔時間。

四層健康檢查,即 TCP 健康檢查或 UDP 健康檢查,無論檢查成功還是響應超時,前后兩次之間發(fā)包的檢查間隔都是已設(shè)置的檢查間隔。

健康檢查失敗時間窗 = 檢查間隔 ×(不健康閾值 - 1) 下圖以健康檢查響應超時時間為2s,檢查間隔為5s,不健康閾值為3次為例,健康檢查失敗時間窗 = 5 x(3-1)= 10s。

加載中...

?

健康檢查成功時間窗 = 檢查間隔 ×(健康閾值 - 1) 下圖以健康檢查成功響應時間為1s,檢查間隔為5s,健康閾值為3次為例,健康檢查成功時間窗 = 5 x(3-1)= 10s。

加載中...

?

七層健康檢查時間窗的計算方法如下:

健康檢查失敗時間窗 = 響應超時時間 × 不健康閾值 + 檢查間隔 ×(不健康閾值 - 1) 下圖以健康檢查響應超時時間為2s,檢查間隔為5s,不健康閾值為3次為例,健康檢查失敗時間窗 = 2 x 3 + 5 x(3-1)= 16s。

加載中...

?

健康檢查成功時間窗 = 健康檢查成功響應時間 × 健康閾值 + 檢查間隔 ×(健康閾值 - 1) 下圖以健康檢查成功響應時間為1s,檢查間隔為5s,健康閾值為3次為例,健康檢查成功時間窗 = 1 x 3 + 5 x(3-1)= 13s。

加載中...

?

健康檢查探測標識

在 CLB 開啟健康檢查后,后端服務器除接收正常的業(yè)務請求外,還會接收到健康檢查探測請求。健康檢查探測請求有如下標識:

健康檢查探測請求的源 IP 是 CLB 的 VIP 或100.64.0.0/10網(wǎng)段。

四層(TCP、UDP、TCP SSL)監(jiān)聽器的健康檢查方式若為自定義,且檢查請求為空,則默認請求中會帶“HEALTH CHECK”標識。

七層(HTTP、HTTPS)監(jiān)聽器的健康檢查請求 Header 中的 user-agent 為“clb-healthcheck”。

說明:

傳統(tǒng)型內(nèi)網(wǎng)負載均衡,健康檢查源 IP 為 169.254.128.0/17 網(wǎng)段。

基礎(chǔ)網(wǎng)絡(luò)內(nèi)網(wǎng)負載均衡,健康檢查源 IP 為服務器物理 IP。

相關(guān)文檔

相關(guān)知識

負載均衡 健康檢查概述
健康檢查 負載均衡 ULB
負載均衡SLB四層(TCP/UDP)健康檢查出現(xiàn)異常的解決方法
神經(jīng)傳導檢查概述
小兒營養(yǎng)不均衡概述
取消健康檢查關(guān)聯(lián)
k8s健康檢查 spring k8s健康檢查探針多個地址
1.1《健康評估》概述.pdf
影像學檢查概述
食品安全快速檢測概述

網(wǎng)址: 負載均衡 健康檢查概述 http://m.u1s5d6.cn/newsview1131977.html

推薦資訊