負載均衡通過健康檢查來判斷后端服務器的業(yè)務可用性。開啟健康檢查功能后,當某臺后端服務器健康檢查出現(xiàn)異常時,負載均衡會自動將新的請求分發(fā)到其他健康檢查正常的后端服務器上;而當該后端服務器恢復正常運行時,負載均衡會將其自動恢復到負載均衡服務中進行流量轉發(fā)。健康檢查機制提高了用戶業(yè)務整體可用性,避免了局部后端服務器異常對總體服務的影響,是保證業(yè)務高可用的重點要素。
配置健康檢查前,建議您先了解CLB健康檢查工作原理。
配置健康檢查
您可以在添加監(jiān)聽時配置健康檢查,通常情況下使用默認的健康檢查配置即可。
在頂部菜單欄,選擇實例所屬的地域。
在實例管理頁面,找到目標實例,單擊實例ID。
在實例詳情頁,單擊監(jiān)聽頁簽,單擊添加監(jiān)聽或在目標監(jiān)聽操作列單擊修改監(jiān)聽配置。
根據配置向導完成監(jiān)聽配置,直至進入健康檢查配置向導頁面,健康檢查默認開啟,單擊高級配置右側的修改,完成以下健康檢查配置。
健康檢查配置
說明
健康檢查協(xié)議
選擇健康檢查協(xié)議類型。監(jiān)聽為TCP協(xié)議時,健康檢查協(xié)議可選TCP或HTTP協(xié)議。監(jiān)聽為UDP協(xié)議時,健康檢查協(xié)議可選TCP、UDP或HTTP協(xié)議。監(jiān)聽為HTTP/HTTPS協(xié)議時,健康檢查協(xié)議可選HTTP協(xié)議。
TCP模式的健康檢查是基于網絡層探測,通過發(fā)送SYN握手報文來檢測服務器端口是否存活。
UDP模式的健康檢查通過UDP報文探測來獲取狀態(tài)信息。
HTTP模式的健康檢查是通過發(fā)送HEAD或GET請求模擬瀏覽器的訪問行為來檢查服務器應用是否健康。
健康檢查方法
(僅HTTP健康檢查協(xié)議支持)
七層監(jiān)聽(HTTP/HTTPS)健康檢查支持HEAD和GET方法,默認采用HEAD方法。
說明如果您的后端應用服務器不支持HEAD方法或HEAD方法被禁用,則可能會出現(xiàn)健康檢查失敗,此時可以使用GET方法來進行健康檢查。
使用GET方法時,如果Response長度超過8K,會被截斷,但不會影響健康檢查結果的判定。
健康檢查端口
健康檢查服務訪問后端時的探測端口。默認使用后端服務器的端口進行健康檢查。
說明如果該監(jiān)聽配置的后端服務器組內的后端服務器的端口都不相同,此時不需要配置檢查端口。負載均衡系統(tǒng)會使用各自的后端服務器端口進行健康檢查。
健康檢查路徑
(僅HTTP健康檢查協(xié)議支持)
HTTP健康檢查默認由負載均衡系統(tǒng)向該服務器應用配置的缺省首頁發(fā)起HTTP請求。
如果您用來進行健康檢查的頁面并不是應用服務器的缺省首頁,需要指定具體的檢查路徑。
建議對靜態(tài)頁面進行檢查。
健康檢查域名(僅HTTP健康檢查協(xié)議支持)
如果在健康檢查中配置了健康檢查域名,則SLB會將域名配置到請求頭host字段中,反之,如果沒有配置健康檢查域名,SLB則不會在請求中附帶host字段。
部分應用服務器會對請求中的host字段做校驗,即要求請求頭中必須存在host字段。如果健康檢查域名未配置,健康檢查請求頭中無host字段,則請求會被服務器拒絕,可能導致健康檢查失敗。因此,如果您的應用服務器需要校驗請求的host字段,則需要配置健康檢查域名,確保健康檢查正常工作。
正常狀態(tài)碼
(僅HTTP健康檢查協(xié)議支持)
選擇健康檢查正常的HTTP狀態(tài)碼。
默認值為http_2xx和http_3xx。
健康檢查響應超時時間
每次健康檢查響應的最大超時時間。
如果后端服務器在指定的時間內沒有正確響應,則判定為健康檢查失敗。
健康檢查間隔時間
進行健康檢查的時間間隔。
負載均衡集群內所有節(jié)點,都會獨立、并行地遵循該屬性對后端服務器進行健康檢查。由于各節(jié)點的檢查時間并不同步,所以,如果從后端某一服務器上進行單獨統(tǒng)計,會發(fā)現(xiàn)來自負載均衡的健康檢查請求在時間上并不會遵循上述時間間隔。
健康檢查健康閾值
云服務器從失敗到成功的連續(xù)健康檢查成功次數(shù)。
健康檢查不健康閾值
云服務器從成功到失敗的連續(xù)健康檢查失敗次數(shù)。
健康檢查請求和健康檢查返回結果(僅UDP健康檢查協(xié)議支持)
為UDP監(jiān)聽配置健康檢查時,您可以在健康檢查請求中輸入請求的內容(例如youraccountID),在健康檢查返回結果中輸入預期的返回結果(例如slb123)。
同時在后端服務器的應用邏輯中加入相應的健康檢查應答邏輯,如收到youraccountID的請求時,回應slb123。
此時,當負載均衡收到后端服務器發(fā)來的正確響應時,則認為健康檢查成功,否則認為健康檢查失敗。此方式能最大程度確保UDP健康檢查的可靠性。
單擊下一步直至監(jiān)聽配置完成。
查看健康檢查狀態(tài)
在頂部菜單欄,選擇實例所屬的地域。
在實例管理頁面,找到目標實例,單擊實例ID。
在實例詳情頁,單擊監(jiān)聽頁簽,查看監(jiān)聽的健康檢查狀態(tài)。
健康檢查主要包括以下狀態(tài):
初始化:表示健康檢查后端服務器列表初始化中。
正常:表示不存在異常狀態(tài)的后端服務器。
異常:表示存在異常狀態(tài)的后端服務器。
未打開:表示健康檢查未開啟。
單擊對應監(jiān)聽后的異常或者初始化,可以查看監(jiān)聽健康檢查為異常/初始化的監(jiān)聽/轉發(fā)策略、服務器組、云服務器/端口、健康狀態(tài)和異常原因。
健康檢查探測
健康檢查探測是根據負載均衡監(jiān)聽中的健康檢查配置生成探測腳本,通過ECS云助手在您的ECS實例上執(zhí)行腳本,獲取健康探測結果,用于在您配置后端服務器后提前探測后端服務器的健康狀態(tài)。
目前不支持對轉發(fā)策略中的后端服務器進行探測。
由于健康檢查探測和實際健康檢查上報采用了不同的鏈路,所以最終的結果可能不完全一致,探測為用戶提供健康檢查配置上的建議,而健康檢查以配置完成后實際結果為準。
健康檢查探測前提條件
確保您已授權RAM的
AliyunSLBHealthDiagnoseRole
權限策略,以允許阿里云傳統(tǒng)型負載均衡服務訪問您的ECS服務。后端服務器ECS需要同時滿足以下條件:
網絡類型是專有網絡(Virtual Private Cloud,簡稱VPC)。
已安裝Linux系統(tǒng)和云助手。如何安裝云助手,請參見安裝云助手Agent。
實例處于running狀態(tài),且系統(tǒng)默認Shell為bash。
監(jiān)聽已開啟健康檢查并且后端服務器組中已經添加ECS實例。
健康檢查探測操作步驟
在頂部菜單欄,選擇實例所屬的地域。
在實例管理頁面,找到目標實例,單擊實例ID。
在實例詳情頁,單擊監(jiān)聽頁簽,單擊添加監(jiān)聽或在目標監(jiān)聽操作列單擊修改監(jiān)聽配置。
根據配置向導完成監(jiān)聽配置,直至進入健康檢查配置向導頁面。
單擊高級配置右側的健康檢查探測。
首次使用時,需單擊立即前往開通,在彈出的云資源訪問授權頁面,單擊同意授權授權RAM。確保您已授權RAM訪問,系統(tǒng)會創(chuàng)建一個健康診斷角色AliyunSLBHealthDiagnoseRole,授權后CLB將使用此角色來訪問后端服務器ECS。
在健康檢查探測頁面,單擊目標后端服務器操作列下的開始探測。
負載均衡支持同時選擇5個ECS實例進行批量探測。如果ECS數(shù)量過大,請分批進行探測。
單擊確定開始診斷。診斷完成后控制臺將展示診斷結果。
目前監(jiān)聽支持的診斷項如下:
監(jiān)聽類型
健康檢查端口狀態(tài)
iptables配置
rpfilter配置
HTTP探測響應
UDP探測
TCP
?
?
?
?
-
UDP
?
?
?
-
?
HTTP
?
?
?
?
-
HTTPS
?
?
?
?
-
關閉健康檢查
如果您的業(yè)務對負載敏感性高,高頻率的健康檢查探測可能會對正常業(yè)務訪問造成影響。您可以結合業(yè)務情況,通過降低健康檢查頻率、增大健康檢查間隔、七層檢查修改為四層檢查等方式,來降低對業(yè)務的影響。但為了保障業(yè)務的持續(xù)可用,不建議關閉健康檢查。
您可以關閉健康檢查功能,但關閉健康檢查后,當后端某個ECS出現(xiàn)異常時,CLB還是會把請求轉發(fā)到該異常的ECS上,造成部分業(yè)務不可訪問。所以建議一般情況下不要關閉健康檢查。
在頂部菜單欄,選擇實例所屬的地域。
在實例管理頁面,找到目標實例,單擊實例ID。
在實例詳情頁,單擊監(jiān)聽頁簽,單擊添加監(jiān)聽或在目標監(jiān)聽操作列單擊修改監(jiān)聽配置。
根據配置向導完成監(jiān)聽配置,直至進入健康檢查配置向導頁面。
關閉健康檢查開關,單擊下一步并提交確認直至完成。
相關文檔
如果您不了解CLB健康檢查機制,您可參考CLB健康檢查工作原理。
如果您遇到CLB健康檢查相關問題,您可參考CLB健康檢查FAQ進行問題定位處理。
您可通過CLB提供的健康檢查日志功能,分析服務器健康檢查日志數(shù)據,詳情可參考存儲和下載健康檢查日志。