首頁 資訊 關(guān)閉健康檢查后恢復(fù)

關(guān)閉健康檢查后恢復(fù)

來源:泰然健康網(wǎng) 時(shí)間:2025年05月06日 22:49

負(fù)載均衡通過健康檢查來判斷后端服務(wù)器(ECS實(shí)例)的業(yè)務(wù)可用性。健康檢查機(jī)制提高了前端業(yè)務(wù)整體可用性,避免了后端ECS異常對(duì)總體服務(wù)的影響。

開啟健康檢查功能后,當(dāng)后端某臺(tái)ECS健康檢查出現(xiàn)異常時(shí),負(fù)載均衡會(huì)自動(dòng)將新的請(qǐng)求分發(fā)到其它健康檢查正常的ECS上;而當(dāng)該ECS恢復(fù)正常運(yùn)行時(shí),負(fù)載均衡會(huì)將其自動(dòng)恢復(fù)到負(fù)載均衡服務(wù)中。

如果您的業(yè)務(wù)對(duì)負(fù)載敏感性高,高頻率的健康檢查探測(cè)可能會(huì)對(duì)正常業(yè)務(wù)訪問造成影響。您可以結(jié)合業(yè)務(wù)情況,通過降低健康檢查頻率、增大健康檢查間隔、七層檢查修改為四層檢查等方式,來降低對(duì)業(yè)務(wù)的影響。但為了保障業(yè)務(wù)的持續(xù)可用,不建議關(guān)閉健康檢查。

健康檢查過程

負(fù)載均衡采用集群部署。LVS集群或Tengine集群內(nèi)的相關(guān)節(jié)點(diǎn)服務(wù)器同時(shí)承載了數(shù)據(jù)轉(zhuǎn)發(fā)和健康檢查職責(zé)。

LVS集群內(nèi)不同服務(wù)器分別獨(dú)立、并行地根據(jù)負(fù)載均衡策略進(jìn)行數(shù)據(jù)轉(zhuǎn)發(fā)和健康檢查操作。如果某一臺(tái)LVS節(jié)點(diǎn)服務(wù)器對(duì)后端某一臺(tái)ECS健康檢查失敗,則該LVS節(jié)點(diǎn)服務(wù)器將不會(huì)再將新的客戶端請(qǐng)求分發(fā)給相應(yīng)的異常ECS。LVS集群內(nèi)所有服務(wù)器同步進(jìn)行該操作。

負(fù)載均衡健康檢查使用的地址段是100.64.0.0/10,后端服務(wù)器務(wù)必不能屏蔽該地址段。您無需在ECS安全組中額外針對(duì)該地址段配置放行策略,但如有配置iptables等安全策略,請(qǐng)務(wù)必放行(100.64.0.0/10 是阿里云保留地址,其他用戶無法分配到該網(wǎng)段內(nèi),不會(huì)存在安全風(fēng)險(xiǎn))。

HTTP/HTTPS監(jiān)聽健康檢查機(jī)制

針對(duì)七層(HTTP或HTTPS協(xié)議)監(jiān)聽,健康檢查通過HTTP HEAD探測(cè)來獲取狀態(tài)信息,如下圖所示。

對(duì)于HTTPS監(jiān)聽,證書在負(fù)載均衡系統(tǒng)中進(jìn)行管理。負(fù)載均衡與后端ECS之間的數(shù)據(jù)交互(包括健康檢查數(shù)據(jù)和業(yè)務(wù)交互數(shù)據(jù)),不再通過HTTPS進(jìn)行傳輸,以提高系統(tǒng)性能。

七層監(jiān)聽的檢查機(jī)制如下:

Tengine節(jié)點(diǎn)服務(wù)器根據(jù)監(jiān)聽的健康檢查配置,向后端ECS的內(nèi)網(wǎng)IP+【健康檢查端口】+【檢查路徑】發(fā)送HTTP HEAD請(qǐng)求(包含設(shè)置的【域名】)。 后端ECS收到請(qǐng)求后,根據(jù)相應(yīng)服務(wù)的運(yùn)行情況,返回HTTP狀態(tài)碼。 如果在【響應(yīng)超時(shí)時(shí)間】之內(nèi),Tengine節(jié)點(diǎn)服務(wù)器沒有收到后端ECS返回的信息,則認(rèn)為服務(wù)無響應(yīng),判定健康檢查失敗。 如果在【響應(yīng)超時(shí)時(shí)間】之內(nèi),Tengine節(jié)點(diǎn)服務(wù)器成功接收到后端ECS返回的信息,則將該返回信息與配置的狀態(tài)碼進(jìn)行比對(duì)。如果匹配則判定健康檢查成功,反之則判定健康檢查失敗。

TCP監(jiān)聽健康檢查機(jī)制

針對(duì)四層TCP監(jiān)聽,為了提高健康檢查效率,健康檢查通過定制的TCP探測(cè)來獲取狀態(tài)信息,如下圖所示。

TCP監(jiān)聽的檢查機(jī)制如下:

LVS節(jié)點(diǎn)服務(wù)器根據(jù)監(jiān)聽的健康檢查配置,向后端ECS的內(nèi)網(wǎng)IP+【健康檢查端口】發(fā)送TCP SYN數(shù)據(jù)包。 后端ECS收到請(qǐng)求后,如果相應(yīng)端口正在正常監(jiān)聽,則會(huì)返回SYN+ACK數(shù)據(jù)包。 如果在【響應(yīng)超時(shí)時(shí)間】之內(nèi),LVS節(jié)點(diǎn)服務(wù)器沒有收到后端ECS返回的數(shù)據(jù)包,則認(rèn)為服務(wù)無響應(yīng),判定健康檢查失??;并向后端ECS發(fā)送RST數(shù)據(jù)包中斷TCP連接。 如果在【響應(yīng)超時(shí)時(shí)間】之內(nèi),LVS節(jié)點(diǎn)服務(wù)器成功收到后端ECS返回的數(shù)據(jù)包,則認(rèn)為服務(wù)正常運(yùn)行,判定健康檢查成功,而后向后端ECS發(fā)送RST數(shù)據(jù)包中斷TCP連接。 說明 正常的TCP三次握手,LVS節(jié)點(diǎn)服務(wù)器在收到后端ECS返回的SYN+ACK數(shù)據(jù)包后,會(huì)進(jìn)一步發(fā)送ACK數(shù)據(jù)包,隨后立即發(fā)送RST數(shù)據(jù)包中斷TCP連接。

該實(shí)現(xiàn)機(jī)制可能會(huì)導(dǎo)致后端ECS認(rèn)為相關(guān)TCP連接出現(xiàn)異常(非正常退出),并在業(yè)務(wù)軟件如Java連接池等日志中拋出相應(yīng)的錯(cuò)誤信息,如Connection reset by peer。

解決方案:

TCP監(jiān)聽采用HTTP方式進(jìn)行健康檢查。 在后端ECS配置了獲取客戶端真實(shí)IP后,忽略來自前述負(fù)載均衡服務(wù)地址段相關(guān)訪問導(dǎo)致的連接錯(cuò)誤。

UDP監(jiān)聽健康檢查

針對(duì)四層UDP監(jiān)聽,健康檢查通過UDP報(bào)文探測(cè)來獲取狀態(tài)信息,如下圖所示。

UDP監(jiān)聽的檢查機(jī)制如下:

LVS節(jié)點(diǎn)服務(wù)器根據(jù)監(jiān)聽的健康檢查配置,向后端ECS的內(nèi)網(wǎng)IP+【健康檢查端口】發(fā)送UDP報(bào)文。 如果后端ECS相應(yīng)端口未正常監(jiān)聽,則系統(tǒng)會(huì)返回類似返回 port XX unreachable的ICMP報(bào)錯(cuò)信息;反之不做任何處理。 如果在【響應(yīng)超時(shí)時(shí)間】之內(nèi),LVS節(jié)點(diǎn)服務(wù)器收到了后端ECS返回的上述錯(cuò)誤信息,則認(rèn)為服務(wù)異常,判定健康檢查失敗。 如果在【響應(yīng)超時(shí)時(shí)間】之內(nèi),LVS節(jié)點(diǎn)服務(wù)器沒有收到后端ECS返回的任何信息,則認(rèn)為服務(wù)正常,判定健康檢查成功。 說明 當(dāng)前UDP協(xié)議服務(wù)健康檢查可能存在服務(wù)真實(shí)狀態(tài)與健康檢查不一致的問題:

如果后端ECS是Linux服務(wù)器,在大并發(fā)場(chǎng)景下,由于Linux的防ICMP攻擊保護(hù)機(jī)制,會(huì)限制服務(wù)器發(fā)送ICMP的速度。此時(shí),即便服務(wù)已經(jīng)出現(xiàn)異常,但由于無法向前端返回port XX unreachable報(bào)錯(cuò)信息,會(huì)導(dǎo)致負(fù)載均衡由于沒收到ICMP應(yīng)答進(jìn)而判定健康檢查成功,最終導(dǎo)致服務(wù)真實(shí)狀態(tài)與健康檢查不一致。

解決方案:

負(fù)載均衡通過發(fā)送您指定的字符串到后端服務(wù)器,必須得到指定應(yīng)答后才認(rèn)為檢查成功。但該實(shí)現(xiàn)機(jī)制需要客戶端程序配合應(yīng)答。

健康檢查時(shí)間窗

健康檢查機(jī)制的引入,有效提高了業(yè)務(wù)服務(wù)的可用性。但是,為了避免頻繁的健康檢查失敗引起的切換對(duì)系統(tǒng)可用性的沖擊,健康檢查只有在健康檢查時(shí)間窗內(nèi)連續(xù)多次檢查成功或失敗后,才會(huì)進(jìn)行狀態(tài)切換。健康檢查時(shí)間窗由以下三個(gè)因素決定:

健康檢查間隔 (每隔多久進(jìn)行一次健康檢查) 響應(yīng)超時(shí)時(shí)間 (等待服務(wù)器返回健康檢查的時(shí)間) 檢查閾值 (健康檢查連續(xù)成功或失敗的次數(shù))

健康檢查時(shí)間窗的計(jì)算方法如下:

健康檢查失敗時(shí)間窗=響應(yīng)超時(shí)時(shí)間×不健康閾值+檢查間隔×(不健康閾值-1) 健康檢查成功時(shí)間窗= (健康檢查成功響應(yīng)時(shí)間x健康閾值)+檢查間隔x(健康閾值-1) 說明 健康檢查成功響應(yīng)時(shí)間是一次健康檢查請(qǐng)求從發(fā)出到響應(yīng)的時(shí)間。當(dāng)采用TCP方式健康檢查時(shí),由于僅探測(cè)端口是否存活,因此該時(shí)間非常短,幾乎可以忽略不計(jì)。當(dāng)采用HTTP方式健康檢查時(shí),該時(shí)間取決于應(yīng)用服務(wù)器的性能和負(fù)載,但通常都在秒級(jí)以內(nèi)。

健康檢查狀態(tài)對(duì)請(qǐng)求轉(zhuǎn)發(fā)的影響如下:

如果目標(biāo)ECS的健康檢查失敗,新的請(qǐng)求不會(huì)再分發(fā)到相應(yīng)ECS上,所以對(duì)前端訪問沒有影響。 如果目標(biāo)ECS的健康檢查成功,新的請(qǐng)求會(huì)分發(fā)到該ECS上,前端訪問正常。 如果目標(biāo)ECS存在異常,正處于健康檢查失敗時(shí)間窗,而健康檢查還未達(dá)到檢查失敗判定次數(shù)(默認(rèn)為三次),則相應(yīng)請(qǐng)求還是會(huì)被分發(fā)到該ECS,進(jìn)而導(dǎo)致前端訪問請(qǐng)求失敗。

相關(guān)知識(shí)

關(guān)閉健康檢查
redisson關(guān)閉健康檢查
閉經(jīng)后怎么恢復(fù)的快
閉經(jīng)后怎么恢復(fù)的快一點(diǎn)
女人閉經(jīng)能恢復(fù)嗎?女人閉經(jīng)恢復(fù)方法有哪些?
如何關(guān)閉nacos健康檢查
NLB怎么關(guān)閉健康檢查?
閉經(jīng)后怎么恢復(fù)得快
閉經(jīng)后怎么恢復(fù)的快些
42天產(chǎn)后孩子復(fù)查都查什么,42天產(chǎn)后恢復(fù)檢查什么

網(wǎng)址: 關(guān)閉健康檢查后恢復(fù) http://www.u1s5d6.cn/newsview1216299.html

推薦資訊