前言:可以說健康檢查機制是負載均衡的一個必須功能,我們本篇就來詳細的講述。
本篇有點長,為了使得看的不累,特此將文章拆分為上下篇:
本篇議題如下:
基本的健康檢查
基於應用的健康檢查
應用的依賴性
系列文章:
負載均衡詳解第三篇:服務器負載均衡的基本概念-使用負載均衡器的服務器群
負載均衡詳解第四篇:服務器負載均衡的基本概念-負載均衡時數據包流程
負載均衡詳解第六篇:服務器負載均衡的基本概念-網絡地址轉換(NAT)
負載均衡詳解第七篇:服務器負載均衡的基本概念-服務器直接返回
通過健康檢查來確定服務器和應用的健康狀況是負載均衡器器一個非常重要的功能。沒有負載均衡器,客戶端可能會將請求發送到已經停機的服務器上。網絡管理員必須手動干預替換這台服務器,或者排除服務器的故障。有時服務器可能沒有停機,但是因為某種原因,比如軟件的漏洞,服務器上面運行的應用系統已經不能正常工作。比如Web應用可能正常運行,但它返回的頁面卻是錯誤的內容。負載均衡器能夠檢測這些情況並立即將客戶請求導向到正常的服務器而不需要管理員的干預。
總的來說,健康檢查分有兩類:帶內健康檢查和帶外健康檢查。帶內健康檢查就是負載均衡器觀察客戶端跟服務器之間的流量判斷服務器是否健康。例如,如果負載均衡器發送一個客戶端的SYN數據包到真實服務器,但是沒有收到SYN ACK數據包回應,負載均衡器就會懷疑這台真實服務器有問題。負載均衡器也可以直接發送健康檢查的數據包來檢驗真實服務器是否健康,這種數據包是由負載均衡器自己產生的。
1 基本的健康檢查
負載均衡器可以提供多種健康檢查方式,能夠在OSI不同層面進行基本的健康檢查:
二層的健康檢查就是發送一個ARP請求查找給定IP地址的MAC地址。負載均衡器上面配置了真實服務器的IP地址,它會給每個IP地址都發送一個ARP請求,以找到其對應的MAC地址。服務器會響應這個ARP請求,除非它已經停機。
三層的健康檢查就是發送一個”PING”包到每個真實服務器的IP地址。”PING”是一個常用的程序,用來確認一個IP地址是否在網絡中存在,或者用來確認主機是否運行。
四層的健康檢查,負載均衡器會嘗試連接到服務器上面應用程序運行的特定的TCP或UDP端口。舉例來說,假定真實服務器通過80端口來提供Web應用,負載均衡器會嘗試建立一個到真實服務器80端口的連接。負載均衡器發送一個TCP SYN請求包到每個真實服務器的80端口,檢查是否接收到回應的TCP SYN ACK數據包,如果沒有收到,負載均衡器就認定相應服務器的80服務有故障。
負載均衡器有必要針對服務器的每個應用端口分別做健康檢查,比如,RS1的80服務可能有故障,但是21端口還能正常工作,負載均衡器可以繼續利用這個服務器的21端口提供FTP服務,但是把WEB應用標記為停機狀態。這樣一來就提供了一個高效率的負載均衡解決方案,精細的健康檢查有效地提高了服務器的處理能力。
2 基於應用的健康檢查
負載均衡器能夠對常用的應用進行七層或者應用級的健康檢查。針對應用級的健康檢查沒有統一的規范,而且不同的負載均衡產品也有不同的健康檢查方法,讓我們通過幾個例子看一下應用健康檢查包含哪些內容。
針對Web服務器,負載均衡器可以發送針對某一特定URL的HTTP GET或者HTTP HEAD請求。可以讓負載均衡器檢查HTTP響應狀態碼,這樣就可以檢測到“404 Object not found”之類的錯誤響應。對於DNS服務器,負載均衡器可以發送DNS查詢請求,把指定的域名解析成IP地址,並將結果與期望的結果做比對。對於FTP服務器,負載均衡器可以使用一個特定的賬號和密碼登陸到FTP服務器,來確認其是否正常工作。
3 應用的依賴性
有時侯我們可能在真實服務器上面運行多個互相關聯的應用。例如,WEB服務器在它的80端口提供購物車的Web應用,443端口則運行另外一個使用SSL協議的應用。SSL可以在通信過程中對信用卡信息等敏感內容進行加密,保證客戶端和服務器之間通信的安全性。客戶端首先瀏覽網頁,把商品放進購物車,然后按下結帳的按鈕。瀏覽器就會跳轉到SSL應用,即提交信用卡信息來購買購物車中的商品。SSL應用通過WEB應用獲取購物車的內容,如果SSL應用出現故障,那么WEB應用也應該停止服務。否則,就可能出現用戶可以在購物車中增加商品但是不能訪問SSL應用從而無法結帳的情況。
許多負載均衡產品支持端口分組的功能,就是將多個TCP或者UDP端口組合在一起。如果這個組中任何一個應用出現故障,負載均衡器就認為這台真實服務器的所有應用都出現故障。這樣就可以保證用戶被導向到能夠正常完成所有應用的服務器,從而保證交易的完整性。
另外,有關負載均衡的健康檢查機制的實戰使用,可以參看這篇文章(IIS負載均衡-Application Request Route詳解第三篇:使用ARR進行Http請求的負載均衡(上) ),具體的實現原理涉及到“內容檢查”我們下一篇講述。