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