負(fù)載均衡策略基礎(chǔ)的呈現(xiàn)
隨著服務(wù)器的不斷升級,對負(fù)載均衡技術(shù)的要求也越來越高。更簡便的操作,更強(qiáng)的功能,一項項更高的標(biāo)準(zhǔn)促進(jìn)著技術(shù)的發(fā)展和進(jìn)步。那么,一個有效的網(wǎng)絡(luò)規(guī)劃和應(yīng)用方案也就是現(xiàn)在的熱門話題了。基于此,我們來談一談負(fù)載均衡策略的問題。
負(fù)載均衡策略
在實際應(yīng)用中,我們可能不想僅僅是把客戶端的服務(wù)請求平均地分配給內(nèi)部服務(wù)器,而不管服務(wù)器是否宕機(jī)。而是想使Pentium III服務(wù)器比Pentium II能接受更多的服務(wù)請求,一臺處理服務(wù)請求較少的服務(wù)器能分配到更多的服務(wù)請求,出現(xiàn)故障的服務(wù)器將不再接受服務(wù)請求直至故障恢復(fù)等等。
選擇合適的負(fù)載均衡策略,使多個設(shè)備能很好的共同完成任務(wù),消除或避免現(xiàn)有網(wǎng)絡(luò)負(fù)載分布不均、數(shù)據(jù)流量擁擠反應(yīng)時間長的瓶頸。在各負(fù)載均衡方式中,針對不同的應(yīng)用需求,在OSI參考模型的第二、三、四、七層的負(fù)載均衡都有相應(yīng)的負(fù)載均衡策略。
負(fù)載均衡策略的優(yōu)劣及其實現(xiàn)的難易程度有兩個關(guān)鍵因素:
一、負(fù)載均衡算法
考慮到服務(wù)請求的不同類型、服務(wù)器的不同處理能力以及隨機(jī)選擇造成的負(fù)載分配不均勻等問題,為了更加合理的把負(fù)載分配給內(nèi)部的多個服務(wù)器,就需要應(yīng)用相應(yīng)的能夠正確反映各個服務(wù)器處理能力及網(wǎng)絡(luò)狀態(tài)的負(fù)載均衡算法:
輪循均衡(Round Robin):每一次來自網(wǎng)絡(luò)的請求輪流分配給內(nèi)部中的服務(wù)器,從1至N然后重新開始。此種均衡算法適合于服務(wù)器組中的所有服務(wù)器都有相同的軟硬件配置并且平均服務(wù)請求相對均衡的情況。
權(quán)重輪循均衡(Weighted Round Robin):根據(jù)服務(wù)器的不同處理能力,給每個服務(wù)器分配不同的權(quán)值,使其能夠接受相應(yīng)權(quán)值數(shù)的服務(wù)請求。例如:服務(wù)器A的權(quán)值被設(shè)計成1,B的權(quán)值是3,C的權(quán)值是6,則服務(wù)器A、B、C將分別接受到10%、30%、60%的服務(wù)請求。此種均衡算法能確保高性能的服務(wù)器得到更多的使用率,避免低性能的服務(wù)器負(fù)載過重。
隨機(jī)均衡(Random):把來自網(wǎng)絡(luò)的請求隨機(jī)分配給內(nèi)部中的多個服務(wù)器。權(quán)重隨機(jī)均衡(Weighted Random):此種均衡算法類似于權(quán)重輪循算法,不過在處理請求分擔(dān)時是個隨機(jī)選擇的過程。
響應(yīng)速度均衡(Response Time):負(fù)載均衡設(shè)備對內(nèi)部各服務(wù)器發(fā)出一個探測請求(例如Ping),然后根據(jù)內(nèi)部中各服務(wù)器對探測請求的最快響應(yīng)時間來決定哪一臺服務(wù)器來響應(yīng)客戶端的服務(wù)請求。此種均衡算法能較好的反映服務(wù)器的當(dāng)前運行狀態(tài),但這最快響應(yīng)時間僅僅指的是負(fù)載均衡設(shè)備與服務(wù)器間的最快響應(yīng)時間,而不是客戶端與服務(wù)器間的最快響應(yīng)時間。
最少連接數(shù)均衡(Least Connection):客戶端的每一次請求服務(wù)在服務(wù)器停留的時間可能會有較大的差異,隨著工作時間加長,如果采用簡單的輪循或隨機(jī)均衡算法,每一臺服務(wù)器上的連接進(jìn)程可能會產(chǎn)生極大的不同,并沒有達(dá)到真正的負(fù)載均衡。最少連接數(shù)均衡算法對內(nèi)部中需負(fù)載的每一臺服務(wù)器都有一個數(shù)據(jù)記錄,記錄當(dāng)前該服務(wù)器正在處理的連接數(shù)量,當(dāng)有新的服務(wù)連接請求時,將把當(dāng)前請求分配給連接數(shù)最少的服務(wù)器,使均衡更加符合實際情況,負(fù)載更加均衡。此種均衡算法適合長時處理的請求服務(wù),如FTP。
處理能力均衡:此種均衡算法將把服務(wù)請求分配給內(nèi)部中處理負(fù)荷(根據(jù)服務(wù)器CPU型號、CPU數(shù)量、內(nèi)存大小及當(dāng)前連接數(shù)等換算而成)最輕的服務(wù)器,由于考慮到了內(nèi)部服務(wù)器的處理能力及當(dāng)前網(wǎng)絡(luò)運行狀況,所以此種均衡算法相對來說更加精確,尤其適合運用到第七層(應(yīng)用層)負(fù)載均衡的情況下。
DNS響應(yīng)均衡(Flash DNS):在Internet上,無論是HTTP、FTP或是其它的服務(wù)請求,客戶端一般都是通過域名解析來找到服務(wù)器確切的IP地址的。在此均衡算法下,分處在不同地理位置的負(fù)載均衡設(shè)備收到同一個客戶端的域名解析請求,并在同一時間內(nèi)把此域名解析成各自相對應(yīng)服務(wù)器的IP地址(即與此負(fù)載均衡設(shè)備在同一位地理位置的服務(wù)器的IP地址)并返回給客戶端,則客戶端將以***收到的域名解析IP地址來繼續(xù)請求服務(wù),而忽略其它的IP地址響應(yīng)。在種均衡策略適合應(yīng)用在全局負(fù)載均衡的情況下,對本地負(fù)載均衡是沒有意義的。
二、對網(wǎng)絡(luò)系統(tǒng)狀況的檢測方式和能力
盡管有多種的負(fù)載均衡算法可以較好的把數(shù)據(jù)流量分配給服務(wù)器去負(fù)載,但如果負(fù)載均衡策略沒有對網(wǎng)絡(luò)系統(tǒng)狀況的檢測方式和能力,一旦在某臺服務(wù)器或某段負(fù)載均衡設(shè)備與服務(wù)器網(wǎng)絡(luò)間出現(xiàn)故障的情況下,負(fù)載均衡設(shè)備依然把一部分?jǐn)?shù)據(jù)流量引向那臺服務(wù)器,這勢必造成大量的服務(wù)請求被丟失,達(dá)不到不間斷可用性的要求。所以良好的負(fù)載均衡策略應(yīng)有對網(wǎng)絡(luò)故障、服務(wù)器系統(tǒng)故障、應(yīng)用服務(wù)故障的檢測方式和能力:
Ping偵測:通過ping的方式檢測服務(wù)器及網(wǎng)絡(luò)系統(tǒng)狀況,此種方式簡單快速,但只能大致檢測出網(wǎng)絡(luò)及服務(wù)器上的操作系統(tǒng)是否正常,對服務(wù)器上的應(yīng)用服務(wù)檢測就無能為力了。
TCP Open偵測:每個服務(wù)都會開放某個通過TCP連接,檢測服務(wù)器上某個TCP端口(如Telnet的23口,HTTP的80口等)是否開放來判斷服務(wù)是否正常。
HTTP URL偵測:比如向HTTP服務(wù)器發(fā)出一個對main.html文件的訪問請求,如果收到錯誤信息,則認(rèn)為服務(wù)器出現(xiàn)故障。
負(fù)載均衡策略的優(yōu)劣除受上面所講的兩個因素影響外,在有些應(yīng)用情況下,我們需要將來自同一客戶端的所有請求都分配給同一臺服務(wù)器去負(fù)擔(dān),例如服務(wù)器將客戶端注冊、購物等服務(wù)請求信息保存的本地數(shù)據(jù)庫的情況下,把客戶端的子請求分配給同一臺服務(wù)器來處理就顯的至關(guān)重要了。有兩種方式可以解決此問題,一是根據(jù)IP地址把來自同一客戶端的多次請求分配給同一臺服務(wù)器處理,客戶端IP地址與服務(wù)器的對應(yīng)信息是保存在負(fù)載均衡設(shè)備上的;二是在客戶端瀏覽器cookie內(nèi)做***的標(biāo)識來把多次請求分配給同一臺服務(wù)器處理,適合通過代理服務(wù)器上網(wǎng)的客戶端。
還有一種路徑外返回模式(Out of Path Return),當(dāng)客戶端連接請求發(fā)送給負(fù)載均衡設(shè)備的時候,中心負(fù)載均衡設(shè)備將請求引向某個服務(wù)器,服務(wù)器的回應(yīng)請求不再返回給中心負(fù)載均衡設(shè)備,即繞過流量分配器,直接返回給客戶端,因此中心負(fù)載均衡設(shè)備只負(fù)責(zé)接受并轉(zhuǎn)發(fā)請求,其網(wǎng)絡(luò)負(fù)擔(dān)就減少了很多,并且給客戶端提供了更快的響應(yīng)時間。此種模式一般用于HTTP服務(wù)器群,在各服務(wù)器上要安裝一塊虛擬網(wǎng)絡(luò)適配器,并將其IP地址設(shè)為服務(wù)器群的VIP,這樣才能在服務(wù)器直接回應(yīng)客戶端請求時順利的達(dá)成三次握手。