在常規(guī)運(yùn)維工作中,經(jīng)常會(huì)運(yùn)用到負(fù)載均衡服務(wù)。負(fù)載均衡分為四層負(fù)載和七層負(fù)載,那么這兩者之間有什么不同?
廢話(huà)不多說(shuō),詳解如下:
一,什么是負(fù)載均衡
1)負(fù)載均衡(Load Balance)建立在現(xiàn)有網(wǎng)絡(luò)結(jié)構(gòu)之上,它提供了一種廉價(jià)有效透明的方法擴(kuò)展網(wǎng)絡(luò)設(shè)備和服務(wù)器的帶寬、增加吞吐量、加強(qiáng)網(wǎng)絡(luò)數(shù)據(jù)處理能力、提高網(wǎng)絡(luò)的靈活性和可用性。負(fù)載均衡有兩方面的含義:首先,大量的并發(fā)訪問(wèn)或數(shù)據(jù)流量分擔(dān)到多臺(tái)節(jié)點(diǎn)設(shè)備上分別處理,減少用戶(hù)等待響應(yīng)的時(shí)間;其次,單個(gè)重負(fù)載的運(yùn)算分擔(dān)到多臺(tái)節(jié)點(diǎn)設(shè)備上做并行處理,每個(gè)節(jié)點(diǎn)設(shè)備處理結(jié)束后,將結(jié)果匯總,返回給用戶(hù),系統(tǒng)處理能力得到大幅度提高。
2)簡(jiǎn)單來(lái)說(shuō)就是:其一是將大量的并發(fā)處理轉(zhuǎn)發(fā)給后端多個(gè)節(jié)點(diǎn)處理,減少工作響應(yīng)時(shí)間;其二是將單個(gè)繁重的工作轉(zhuǎn)發(fā)給后端多個(gè)節(jié)點(diǎn)處理,處理完再返回給負(fù)載均衡中心,再返回給用戶(hù)。目前負(fù)載均衡技術(shù)大多數(shù)是用于提高諸如在Web服務(wù)器、FTP服務(wù)器和其它關(guān)鍵任務(wù)服務(wù)器上的Internet服務(wù)器程序的可用性和可伸縮性。
二,負(fù)載均衡分類(lèi)
1)二層負(fù)載均衡(mac)
根據(jù)OSI模型分的二層負(fù)載,一般是用虛擬mac地址方式,外部對(duì)虛擬MAC地址請(qǐng)求,負(fù)載均衡接收后分配后端實(shí)際的MAC地址響應(yīng))
2)三層負(fù)載均衡(ip)
一般采用虛擬IP地址方式,外部對(duì)虛擬的ip地址請(qǐng)求,負(fù)載均衡接收后分配后端實(shí)際的IP地址響應(yīng))
3)四層負(fù)載均衡(tcp)
在三次負(fù)載均衡的基礎(chǔ)上,用ip+port接收請(qǐng)求,再轉(zhuǎn)發(fā)到對(duì)應(yīng)的機(jī)器。
4)七層負(fù)載均衡(http)
根據(jù)虛擬的url或IP,主機(jī)名接收請(qǐng)求,再轉(zhuǎn)向相應(yīng)的處理服務(wù)器)。
我們運(yùn)維中最常見(jiàn)的四層和七層負(fù)載均衡,這里重點(diǎn)說(shuō)下這兩種負(fù)載均衡。
1)四層的負(fù)載均衡就是基于IP+端口的負(fù)載均衡:在三層負(fù)載均衡的基礎(chǔ)上,通過(guò)發(fā)布三層的IP地址(VIP),然后加四層的端口號(hào),來(lái)決定哪些流量需要做負(fù)載均衡,對(duì)需要處理的流量進(jìn)行NAT處理,轉(zhuǎn)發(fā)至后臺(tái)服務(wù)器,并記錄下這個(gè)TCP或者UDP的流量是由哪臺(tái)服務(wù)器處理的,后續(xù)這個(gè)連接的所有流量都同樣轉(zhuǎn)發(fā)到同一臺(tái)服務(wù)器處理。
對(duì)應(yīng)的負(fù)載均衡器稱(chēng)為四層交換機(jī)(L4 switch),主要分析IP層及TCP/UDP層,實(shí)現(xiàn)四層負(fù)載均衡。此種負(fù)載均衡器不理解應(yīng)用協(xié)議(如HTTP/FTP/MySQL等等)。
實(shí)現(xiàn)四層負(fù)載均衡的軟件有:
F5:硬件負(fù)載均衡器,功能很好,但是成本很高。
lvs:重量級(jí)的四層負(fù)載軟件
nginx:輕量級(jí)的四層負(fù)載軟件,帶緩存功能,正則表達(dá)式較靈活
haproxy:模擬四層轉(zhuǎn)發(fā),較靈活
2)七層的負(fù)載均衡就是基于虛擬的URL或主機(jī)IP的負(fù)載均衡:在四層負(fù)載均衡的基礎(chǔ)上(沒(méi)有四層是絕對(duì)不可能有七層的),再考慮應(yīng)用層的特征,比如同一個(gè)Web服務(wù)器的負(fù)載均衡,除了根據(jù)VIP加80端口辨別是否需要處理的流量,還可根據(jù)七層的URL、瀏覽器類(lèi)別、語(yǔ)言來(lái)決定是否要進(jìn)行負(fù)載均衡。舉個(gè)例子,如果你的Web服務(wù)器分成兩組,一組是中文語(yǔ)言的,一組是英文語(yǔ)言的,那么七層負(fù)載均衡就可以當(dāng)用戶(hù)來(lái)訪問(wèn)你的域名時(shí),自動(dòng)辨別用戶(hù)語(yǔ)言,然后選擇對(duì)應(yīng)的語(yǔ)言服務(wù)器組進(jìn)行負(fù)載均衡處理。
對(duì)應(yīng)的負(fù)載均衡器稱(chēng)為七層交換機(jī)(L7 switch),除了支持四層負(fù)載均衡以外,還有分析應(yīng)用層的信息,如HTTP協(xié)議URI或Cookie信息,實(shí)現(xiàn)七層負(fù)載均衡。此種負(fù)載均衡器能理解應(yīng)用協(xié)議。
實(shí)現(xiàn)七層負(fù)載均衡的軟件有:
haproxy:天生負(fù)載均衡技能,全面支持七層代理,會(huì)話(huà)保持,標(biāo)記,路徑轉(zhuǎn)移;
nginx:只在http協(xié)議和mail協(xié)議上功能比較好,性能與haproxy差不多;
apache:功能較差
Mysql proxy:功能尚可。
總的來(lái)說(shuō),一般是lvs做4層負(fù)載;nginx做7層負(fù)載;haproxy比較靈活,4層和7層負(fù)載均衡都能做
三、兩者之間的區(qū)別
1)從技術(shù)原理上分析
所謂四層負(fù)載均衡,也就是主要通過(guò)報(bào)文中的目標(biāo)地址和端口,再加上負(fù)載均衡設(shè)備設(shè)置的服務(wù)器選擇方式,決定最終選擇的內(nèi)部服務(wù)器。
以常見(jiàn)的TCP為例,負(fù)載均衡設(shè)備在接收到第一個(gè)來(lái)自客戶(hù)端的SYN 請(qǐng)求時(shí),即通過(guò)上述方式選擇一個(gè)最佳的服務(wù)器,并對(duì)報(bào)文中目標(biāo)IP地址進(jìn)行修改(改為后端服務(wù)器IP),直接轉(zhuǎn)發(fā)給該服務(wù)器。TCP的連接建立,即三次握手是客戶(hù)端和服務(wù)器直接建立的,負(fù)載均衡設(shè)備只是起到一個(gè)類(lèi)似路由器的轉(zhuǎn)發(fā)動(dòng)作。在某些部署情況下,為保證服務(wù)器回包可以正確返回給負(fù)載均衡設(shè)備,在轉(zhuǎn)發(fā)報(bào)文的同時(shí)可能還會(huì)對(duì)報(bào)文原來(lái)的源地址進(jìn)行修改。
所謂七層負(fù)載均衡,也稱(chēng)為“內(nèi)容交換”,也就是主要通過(guò)報(bào)文中的真正有意義的應(yīng)用層內(nèi)容,再加上負(fù)載均衡設(shè)備設(shè)置的服務(wù)器選擇方式,決定最終選擇的內(nèi)部服務(wù)器。
以常見(jiàn)的TCP為例,負(fù)載均衡設(shè)備如果要根據(jù)真正的應(yīng)用層內(nèi)容再選擇服務(wù)器,只能先代理最終的服務(wù)器和客戶(hù)端建立連接(三次握手)后,才可能接受到客戶(hù)端發(fā)送的真正應(yīng)用層內(nèi)容的報(bào)文,然后再根據(jù)該報(bào)文中的特定字段,再加上負(fù)載均衡設(shè)備設(shè)置的服務(wù)器選擇方式,決定最終選擇的內(nèi)部服務(wù)器。負(fù)載均衡設(shè)備在這種情況下,更類(lèi)似于一個(gè)代理服務(wù)器。負(fù)載均衡和前端的客戶(hù)端以及后端的服務(wù)器會(huì)分別建立TCP連接。所以從這個(gè)技術(shù)原理上來(lái)看,七層負(fù)載均衡明顯的對(duì)負(fù)載均衡設(shè)備的要求更高,處理七層的能力也必然會(huì)低于四層模式的部署方式。
2)從應(yīng)用場(chǎng)景的需求上分析
七層應(yīng)用負(fù)載的好處,是使得整個(gè)網(wǎng)絡(luò)更"智能化"。可以參考這篇:http應(yīng)用優(yōu)化和加速說(shuō)明-負(fù)載均衡,就可以基本上了解這種方式的優(yōu)勢(shì)所在。例如訪問(wèn)一個(gè)網(wǎng)站的用戶(hù)流量,可以通過(guò)七層的方式,將對(duì)圖片類(lèi)的請(qǐng)求轉(zhuǎn)發(fā)到特定的圖片服務(wù)器并可以使用緩存技術(shù);將對(duì)文字類(lèi)的請(qǐng)求可以轉(zhuǎn)發(fā)到特定的文字服務(wù)器并可以使用壓縮技術(shù)。當(dāng)然這只是七層應(yīng)用的一個(gè)小案例,從技術(shù)原理上,這種方式可以對(duì)客戶(hù)端的請(qǐng)求和服務(wù)器的響應(yīng)進(jìn)行任意意義上的修改,極大的提升了應(yīng)用系統(tǒng)在網(wǎng)絡(luò)層的靈活性。很多在后臺(tái),例如Nginx或者Apache上部署的功能可以前移到負(fù)載均衡設(shè)備上,例如客戶(hù)請(qǐng)求中的Header重寫(xiě),服務(wù)器響應(yīng)中的關(guān)鍵字過(guò)濾或者內(nèi)容插入等功能。
另外一個(gè)常常被提到功能就是安全性。網(wǎng)絡(luò)中最常見(jiàn)的SYN Flood攻擊,即黑客控制眾多源客戶(hù)端,使用虛假I(mǎi)P地址對(duì)同一目標(biāo)發(fā)送SYN攻擊,通常這種攻擊會(huì)大量發(fā)送SYN報(bào)文,耗盡服務(wù)器上的相關(guān)資源,以達(dá)到Denial of Service(DoS)的目的。從技術(shù)原理上也可以看出,四層模式下這些SYN攻擊都會(huì)被轉(zhuǎn)發(fā)到后端的服務(wù)器上;而七層模式下這些SYN攻擊自然在負(fù)載均衡設(shè)備上就截止,不會(huì)影響后臺(tái)服務(wù)器的正常運(yùn)營(yíng)。另外負(fù)載均衡設(shè)備可以在七層層面設(shè)定多種策略,過(guò)濾特定報(bào)文,例如SQL Injection等應(yīng)用層面的特定攻擊手段,從應(yīng)用層面進(jìn)一步提高系統(tǒng)整體安全。
現(xiàn)在的7層負(fù)載均衡,主要還是著重于應(yīng)用HTTP協(xié)議,所以其應(yīng)用范圍主要是眾多的網(wǎng)站或者內(nèi)部信息平臺(tái)等基于B/S開(kāi)發(fā)的系統(tǒng)。 4層負(fù)載均衡則對(duì)應(yīng)其他TCP應(yīng)用,例如基于C/S開(kāi)發(fā)的ERP等系統(tǒng)。
3)七層應(yīng)用需要考慮的問(wèn)題
1.是否真的必要。七層應(yīng)用的確可以提高流量智能化,同時(shí)必不可免的帶來(lái)設(shè)備配置復(fù)雜,負(fù)載均衡壓力增高以及故障排查上的復(fù)雜性等問(wèn)題。在設(shè)計(jì)系統(tǒng)時(shí)需要考慮四層七層同時(shí)應(yīng)用的混雜情況。
2.是否真的可以提高安全性。例如SYN Flood攻擊,七層模式的確將這些流量從服務(wù)器屏蔽,但負(fù)載均衡設(shè)備本身要有強(qiáng)大的抗DDoS能力,否則即使服務(wù)器正常而作為中樞調(diào)度的負(fù)載均衡設(shè)備故障也會(huì)導(dǎo)致整個(gè)應(yīng)用的崩潰。
3.是否有足夠的靈活度。七層應(yīng)用的優(yōu)勢(shì)是可以讓整個(gè)應(yīng)用的流量智能化,但是負(fù)載均衡設(shè)備需要提供完善的七層功能,滿(mǎn)足客戶(hù)根據(jù)不同情況的基于應(yīng)用的調(diào)度。最簡(jiǎn)單的一個(gè)考核就是能否取代后臺(tái)Nginx或者Apache等服務(wù)器上的調(diào)度功能。能夠提供一個(gè)七層應(yīng)用開(kāi)發(fā)接口的負(fù)載均衡設(shè)備,可以讓客戶(hù)根據(jù)需求任意設(shè)定功能,才真正有可能提供強(qiáng)大的靈活性和智能性。
4)總體對(duì)比
1.智能性
七層負(fù)載均衡由于具備OIS七層的所有功能,所以在處理用戶(hù)需求上能更加靈活,從理論上講,七層模型能對(duì)用戶(hù)的所有跟服務(wù)端的請(qǐng)求進(jìn)行修改。例如對(duì)文件header添加信息,根據(jù)不同的文件類(lèi)型進(jìn)行分類(lèi)轉(zhuǎn)發(fā)。四層模型僅支持基于網(wǎng)絡(luò)層的需求轉(zhuǎn)發(fā),不能修改用戶(hù)請(qǐng)求的內(nèi)容。
2.安全性
七層負(fù)載均衡由于具有OSI模型的全部功能,能更容易抵御來(lái)自網(wǎng)絡(luò)的攻擊;四層模型從原理上講,會(huì)直接將用戶(hù)的請(qǐng)求轉(zhuǎn)發(fā)給后端節(jié)點(diǎn),無(wú)法直接抵御網(wǎng)絡(luò)攻擊。
3.復(fù)雜度
四層模型一般比較簡(jiǎn)單的架構(gòu),容易管理,容易定位問(wèn)題;七層模型架構(gòu)比較復(fù)雜,通常也需要考慮結(jié)合四層模型的混用情況,出現(xiàn)問(wèn)題定位比較復(fù)雜。
4.效率比
四層模型基于更底層的設(shè)置,通常效率更高,但應(yīng)用范圍有限;七層模型需要更多的資源損耗,在理論上講比四層模型有更強(qiáng)的功能,現(xiàn)在的實(shí)現(xiàn)更多是基于http應(yīng)用。
四、負(fù)載均衡技術(shù)方案說(shuō)明
目前有許多不同的負(fù)載均衡技術(shù)用以滿(mǎn)足不同的應(yīng)用需求,下面從負(fù)載均衡所采用的設(shè)備對(duì)象(軟/硬件負(fù)載均衡),應(yīng)用的OSI網(wǎng)絡(luò)層次(網(wǎng)絡(luò)層次上的負(fù)載均衡),及應(yīng)用的地理結(jié)構(gòu)(本地/全局負(fù)載均衡)等來(lái)分類(lèi)。
1)軟/硬件負(fù)載均衡
軟件負(fù)載均衡解決方案是指在一臺(tái)或多臺(tái)服務(wù)器相應(yīng)的操作系統(tǒng)上安裝一個(gè)或多個(gè)附加軟件來(lái)實(shí)現(xiàn)負(fù)載均衡,如DNS Load Balance,CheckPoint Firewall-1 ConnectControl,Keepalive+ipvs等,它的優(yōu)點(diǎn)是基于特定環(huán)境,配置簡(jiǎn)單,使用靈活,成本低廉,可以滿(mǎn)足一般的負(fù)載均衡需求。軟件解決方案缺點(diǎn)也較多,因?yàn)槊颗_(tái)服務(wù)器上安裝額外的軟件運(yùn)行會(huì)消耗系統(tǒng)不定量的資源,越是功能強(qiáng)大的模塊,消耗得越多,所以當(dāng)連接請(qǐng)求特別大的時(shí)候,軟件本身會(huì)成為服務(wù)器工作成敗的一個(gè)關(guān)鍵;軟件可擴(kuò)展性并不是很好,受到操作系統(tǒng)的限制;由于操作系統(tǒng)本身的Bug,往往會(huì)引起安全問(wèn)題。
硬件負(fù)載均衡解決方案是直接在服務(wù)器和外部網(wǎng)絡(luò)間安裝負(fù)載均衡設(shè)備,這種設(shè)備通常是一個(gè)獨(dú)立于系統(tǒng)的硬件,我們稱(chēng)之為負(fù)載均衡器。由于專(zhuān)門(mén)的設(shè)備完成專(zhuān)門(mén)的任務(wù),獨(dú)立于操作系統(tǒng),整體性能得到大量提高,加上多樣化的負(fù)載均衡策略,智能化的流量管理,可達(dá)到最佳的負(fù)載均衡需求。負(fù)載均衡器有多種多樣的形式,除了作為獨(dú)立意義上的負(fù)載均衡器外,有些負(fù)載均衡器集成在交換設(shè)備中,置于服務(wù)器與Internet鏈接之間,有些則以?xún)蓧K網(wǎng)絡(luò)適配器將這一功能集成到PC中,一塊連接到Internet上,一塊連接到后端服務(wù)器群的內(nèi)部網(wǎng)絡(luò)上。
軟件負(fù)載均衡與硬件負(fù)載均衡的對(duì)比:
軟件負(fù)載均衡的優(yōu)點(diǎn)是需求環(huán)境明確,配置簡(jiǎn)單,操作靈活,成本低廉,效率不高,能滿(mǎn)足普通的企業(yè)需求;缺點(diǎn)是依賴(lài)于系統(tǒng),增加資源開(kāi)銷(xiāo);軟件的優(yōu)劣決定環(huán)境的性能;系統(tǒng)的安全,軟件的穩(wěn)定性均會(huì)影響到整個(gè)環(huán)境的安全。
硬件負(fù)載均衡優(yōu)點(diǎn)是獨(dú)立于系統(tǒng),整體性能大量提升,在功能、性能上優(yōu)于軟件方式;智能的流量管理,多種策略可選,能達(dá)到最佳的負(fù)載均衡效果;缺點(diǎn)是價(jià)格昂貴。
2)本地/全局負(fù)載均衡
負(fù)載均衡從其應(yīng)用的地理結(jié)構(gòu)上分為本地負(fù)載均衡(Local Load Balance)和全局負(fù)載均衡(Global Load Balance,也叫地域負(fù)載均衡),本地負(fù)載均衡是指對(duì)本地的服務(wù)器群做負(fù)載均衡,全局負(fù)載均衡是指對(duì)分別放置在不同的地理位置、有不同網(wǎng)絡(luò)結(jié)構(gòu)的服務(wù)器群間作負(fù)載均衡。
本地負(fù)載均衡能有效地解決數(shù)據(jù)流量過(guò)大、網(wǎng)絡(luò)負(fù)荷過(guò)重的問(wèn)題,并且不需花費(fèi)昂貴開(kāi)支購(gòu)置性能卓越的服務(wù)器,充分利用現(xiàn)有設(shè)備,避免服務(wù)器單點(diǎn)故障造成數(shù)據(jù)流量的損失。其有靈活多樣的均衡策略把數(shù)據(jù)流量合理地分配給服務(wù)器群內(nèi)的服務(wù)器共同負(fù)擔(dān)。即使是再給現(xiàn)有服務(wù)器擴(kuò)充升級(jí),也只是簡(jiǎn)單地增加一個(gè)新的服務(wù)器到服務(wù)群中,而不需改變現(xiàn)有網(wǎng)絡(luò)結(jié)構(gòu)、停止現(xiàn)有的服務(wù)。
全局負(fù)載均衡主要用于在一個(gè)多區(qū)域擁有自己服務(wù)器的站點(diǎn),為了使全球用戶(hù)只以一個(gè)IP地址或域名就能訪問(wèn)到離自己最近的服務(wù)器,從而獲得最快的訪問(wèn)速度,也可用于子公司分散站點(diǎn)分布廣的大公司通過(guò)Intranet(企業(yè)內(nèi)部互聯(lián)網(wǎng))來(lái)達(dá)到資源統(tǒng)一合理分配的目的。
3)網(wǎng)絡(luò)層次上的負(fù)載均衡
針對(duì)網(wǎng)絡(luò)上負(fù)載過(guò)重的不同瓶頸所在,從網(wǎng)絡(luò)的不同層次入手,我們可以采用相應(yīng)的負(fù)載均衡技術(shù)來(lái)解決現(xiàn)有問(wèn)題。
隨著帶寬增加,數(shù)據(jù)流量不斷增大,網(wǎng)絡(luò)核心部分的數(shù)據(jù)接口將面臨瓶頸問(wèn)題,原有的單一線路將很難滿(mǎn)足需求,而且線路的升級(jí)又過(guò)于昂貴甚至難以實(shí)現(xiàn),這時(shí)就可以考慮采用鏈路聚合(Trunking)技術(shù)。
鏈路聚合技術(shù)(第二層負(fù)載均衡)將多條物理鏈路當(dāng)作一條單一的聚合邏輯鏈路使用,網(wǎng)絡(luò)數(shù)據(jù)流量由聚合邏輯鏈路中所有物理鏈路共同承擔(dān),由此在邏輯上增大了鏈路的容量,使其能滿(mǎn)足帶寬增加的需求。
現(xiàn)代負(fù)載均衡技術(shù)通常操作于網(wǎng)絡(luò)的第四層或第七層。第四層負(fù)載均衡將一個(gè)Internet上合法注冊(cè)的IP地址映射為多個(gè)內(nèi)部服務(wù)器的IP地址,對(duì)每次 TCP連接請(qǐng)求動(dòng)態(tài)使用其中一個(gè)內(nèi)部IP地址,達(dá)到負(fù)載均衡的目的。在第四層交換機(jī)中,此種均衡技術(shù)得到廣泛的應(yīng)用,一個(gè)目標(biāo)地址是服務(wù)器群VIP(虛擬 IP,Virtual IP address)連接請(qǐng)求的數(shù)據(jù)包流經(jīng)交換機(jī),交換機(jī)根據(jù)源端和目的IP地址、TCP或UDP端口號(hào)和一定的負(fù)載均衡策略,在服務(wù)器IP和VIP間進(jìn)行映射,選取服務(wù)器群中最好的服務(wù)器來(lái)處理連接請(qǐng)求。
七層負(fù)載均衡控制應(yīng)用層服務(wù)的內(nèi)容,提供了一種對(duì)訪問(wèn)流量的高層控制方式,適合對(duì)HTTP服務(wù)器群的應(yīng)用。第七層負(fù)載均衡技術(shù)通過(guò)檢查流經(jīng)的HTTP報(bào)頭,根據(jù)報(bào)頭內(nèi)的信息來(lái)執(zhí)行負(fù)載均衡任務(wù)。
七層負(fù)載均衡優(yōu)點(diǎn)表現(xiàn)在如下幾個(gè)方面:
1)通過(guò)對(duì)HTTP報(bào)頭的檢查,可以檢測(cè)出HTTP400、500和600系列的錯(cuò)誤信息,因而能透明地將連接請(qǐng)求重新定向到另一臺(tái)服務(wù)器,避免應(yīng)用層故障。
2)可根據(jù)流經(jīng)的數(shù)據(jù)類(lèi)型(如判斷數(shù)據(jù)包是圖像文件、壓縮文件或多媒體文件格式等),把數(shù)據(jù)流量引向相應(yīng)內(nèi)容的服務(wù)器來(lái)處理,增加系統(tǒng)性能。
3)能根據(jù)連接請(qǐng)求的類(lèi)型,如是普通文本、圖象等靜態(tài)文檔請(qǐng)求,還是asp、cgi等的動(dòng)態(tài)文檔請(qǐng)求,把相應(yīng)的請(qǐng)求引向相應(yīng)的服務(wù)器來(lái)處理,提高系統(tǒng)的性能及安全性。
七層負(fù)載均衡缺點(diǎn)表現(xiàn)在如下幾個(gè)方面:
1)七層負(fù)載均衡受到其所支持的協(xié)議限制(一般只有HTTP),這樣就限制了它應(yīng)用的廣泛性。
2)七層負(fù)載均衡檢查HTTP報(bào)頭會(huì)占用大量的系統(tǒng)資源,勢(shì)必會(huì)影響到系統(tǒng)的性能,在大量連接請(qǐng)求的情況下,負(fù)載均衡設(shè)備自身容易成為網(wǎng)絡(luò)整體性能的瓶頸。
五、負(fù)載均衡策略
在實(shí)際應(yīng)用中,我們可能不想僅僅是把客戶(hù)端的服務(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í)間長(zhǎng)的瓶頸。在各負(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è)方式和能力。
1、負(fù)載均衡算法
1)輪循均衡(Round Robin):每一次來(lái)自網(wǎng)絡(luò)的請(qǐng)求輪流分配給內(nèi)部中的服務(wù)器,從1至N然后重新開(kāi)始。此種均衡算法適合于服務(wù)器組中的所有服務(wù)器都有相同的軟硬件配置并且平均服務(wù)請(qǐng)求相對(duì)均衡的情況。
2)權(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ù)載過(guò)重。
3)隨機(jī)均衡(Random):把來(lái)自網(wǎng)絡(luò)的請(qǐng)求隨機(jī)分配給內(nèi)部中的多個(gè)服務(wù)器。
4)權(quán)重隨機(jī)均衡(Weighted Random):此種均衡算法類(lèi)似于權(quán)重輪循算法,不過(guò)在處理請(qǐng)求分擔(dān)時(shí)是個(gè)隨機(jī)選擇的過(guò)程。
5)響應(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í)間來(lái)決定哪一臺(tái)服務(wù)器來(lái)響應(yīng)客戶(hù)端的服務(wù)請(qǐng)求。此種均衡算法能較好的反映服務(wù)器的當(dāng)前運(yùn)行狀態(tài),但這最快響應(yīng)時(shí)間僅僅指的是負(fù)載均衡設(shè)備與服務(wù)器間的最快響應(yīng)時(shí)間,而不是客戶(hù)端與服務(wù)器間的最快響應(yīng)時(shí)間。
6)最少連接數(shù)均衡(Least Connection):客戶(hù)端的每一次請(qǐng)求服務(wù)在服務(wù)器停留的時(shí)間可能會(huì)有較大的差異,隨著工作時(shí)間加長(zhǎng),如果采用簡(jiǎn)單的輪循或隨機(jī)均衡算法,每一臺(tái)服務(wù)器上的連接進(jìn)程可能會(huì)產(chǎn)生極大的不同,并沒(méi)有達(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ù)載更加均衡。此種均衡算法適合長(zhǎng)時(shí)處理的請(qǐng)求服務(wù),如FTP。
7)處理能力均衡:此種均衡算法將把服務(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ì)來(lái)說(shuō)更加精確,尤其適合運(yùn)用到第七層(應(yīng)用層)負(fù)載均衡的情況下。
8)DNS響應(yīng)均衡(Flash DNS):在Internet上,無(wú)論是HTTP、FTP或是其它的服務(wù)請(qǐng)求,客戶(hù)端一般都是通過(guò)域名解析來(lái)找到服務(wù)器確切的IP地址的。在此均衡算法下,分處在不同地理位置的負(fù)載均衡設(shè)備收到同一個(gè)客戶(hù)端的域名解析請(qǐng)求,并在同一時(shí)間內(nèi)把此域名解析成各自相對(duì)應(yīng)服務(wù)器的IP地址(即與此負(fù)載均衡設(shè)備在同一位地理位置的服務(wù)器的IP地址)并返回給客戶(hù)端,則客戶(hù)端將以最先收到的域名解析IP地址來(lái)繼續(xù)請(qǐng)求服務(wù),而忽略其它的IP地址響應(yīng)。在種均衡策略適合應(yīng)用在全局負(fù)載均衡的情況下,對(duì)本地負(fù)載均衡是沒(méi)有意義的。
2、網(wǎng)絡(luò)系統(tǒng)狀況的檢測(cè)方式
盡管有多種的負(fù)載均衡算法可以較好的把數(shù)據(jù)流量分配給服務(wù)器去負(fù)載,但如果負(fù)載均衡策略沒(méi)有對(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è)方式和能力:
1)Ping偵測(cè):通過(guò)ping的方式檢測(cè)服務(wù)器及網(wǎng)絡(luò)系統(tǒng)狀況,此種方式簡(jiǎn)單快速,但只能大致檢測(cè)出網(wǎng)絡(luò)及服務(wù)器上的操作系統(tǒng)是否正常,對(duì)服務(wù)器上的應(yīng)用服務(wù)檢測(cè)就無(wú)能為力了。
2)TCP Open偵測(cè):每個(gè)服務(wù)都會(huì)開(kāi)放某個(gè)通過(guò)TCP連接,檢測(cè)服務(wù)器上某個(gè)TCP端口(如Telnet的23口,HTTP的80口等)是否開(kāi)放來(lái)判斷服務(wù)是否正常。
3)HTTP URL偵測(cè):比如向HTTP服務(wù)器發(fā)出一個(gè)對(duì)main.html文件的訪問(wèn)請(qǐng)求,如果收到錯(cuò)誤信息,則認(rèn)為服務(wù)器出現(xiàn)故障。
3、其他因素
負(fù)載均衡策略的優(yōu)劣除受上面所講的兩個(gè)因素影響外,在有些應(yīng)用情況下,我們需要將來(lái)自同一客戶(hù)端的所有請(qǐng)求都分配給同一臺(tái)服務(wù)器去負(fù)擔(dān),例如服務(wù)器將客戶(hù)端注冊(cè)、購(gòu)物等服務(wù)請(qǐng)求信息保存的本地?cái)?shù)據(jù)庫(kù)的情況下,把客戶(hù)端的子請(qǐng)求分配給同一臺(tái)服務(wù)器來(lái)處理就顯的至關(guān)重要了。有幾種方式可以解決此問(wèn)題:
1)一是根據(jù)IP地址把來(lái)自同一客戶(hù)端的多次請(qǐng)求分配給同一臺(tái)服務(wù)器處理,客戶(hù)端IP地址與服務(wù)器的對(duì)應(yīng)信息是保存在負(fù)載均衡設(shè)備上的;
2)二是在客戶(hù)端瀏覽器 cookie內(nèi)做獨(dú)一無(wú)二的標(biāo)識(shí)來(lái)把多次請(qǐng)求分配給同一臺(tái)服務(wù)器處理,適合通過(guò)代理服務(wù)器上網(wǎng)的客戶(hù)端。
3)還有一種路徑外返回模式(Out of Path Return),當(dāng)客戶(hù)端連接請(qǐng)求發(fā)送給負(fù)載均衡設(shè)備的時(shí)候,中心負(fù)載均衡設(shè)備將請(qǐng)求引向某個(gè)服務(wù)器,服務(wù)器的回應(yīng)請(qǐng)求不再返回給中心負(fù)載均衡設(shè)備,即繞過(guò)流量分配器,直接返回給客戶(hù)端,因此中心負(fù)載均衡設(shè)備只負(fù)責(zé)接受并轉(zhuǎn)發(fā)請(qǐng)求,其網(wǎng)絡(luò)負(fù)擔(dān)就減少了很多,并且給客戶(hù)端提供了更快的響應(yīng)時(shí)間。此種模式一般用于HTTP服務(wù)器群,在各服務(wù)器上要安裝一塊虛擬網(wǎng)絡(luò)適配器,并將其IP地址設(shè)為服務(wù)器群的VIP,這樣才能在服務(wù)器直接回應(yīng)客戶(hù)端請(qǐng)求時(shí)順利的達(dá)成三次握手。
六、負(fù)載均衡實(shí)施要素
1)性能
性能是我們?cè)谝刖夥桨笗r(shí)需要重點(diǎn)考慮的問(wèn)題,但也是一個(gè)最難把握的問(wèn)題。衡量性能時(shí)可將每秒鐘通過(guò)網(wǎng)絡(luò)的數(shù)據(jù)包數(shù)目做為一個(gè)參數(shù),另一個(gè)參數(shù)是均衡方案中服務(wù)器群所能處理的最大并發(fā)連接數(shù)目,但是,假設(shè)一個(gè)均衡系統(tǒng)能處理百萬(wàn)計(jì)的并發(fā)連接數(shù),可是卻只能以每秒2個(gè)包的速率轉(zhuǎn)發(fā),這顯然是沒(méi)有任何作用的。性能的優(yōu)劣與負(fù)載均衡設(shè)備的處理能力、采用的均衡策略息息相關(guān),并且有兩點(diǎn)需要注意:一、均衡方案對(duì)服務(wù)器群整體的性能,這是響應(yīng)客戶(hù)端連接請(qǐng)求速度的關(guān)鍵;二、負(fù)載均衡設(shè)備自身的性能,避免有大量連接請(qǐng)求時(shí)自身性能不足而成為服務(wù)瓶頸。有時(shí)我們也可以考慮采用混合型負(fù)載均衡策略來(lái)提升服務(wù)器群的總體性能,如DNS負(fù)載均衡與NAT負(fù)載均衡相結(jié)合。另外,針對(duì)有大量靜態(tài)文檔請(qǐng)求的站點(diǎn),也可以考慮采用高速緩存技術(shù),相對(duì)來(lái)說(shuō)更節(jié)省費(fèi)用,更能提高響應(yīng)性能;對(duì)有大量ssl/xml內(nèi)容傳輸?shù)恼军c(diǎn),更應(yīng)考慮采用ssl/xml加速技術(shù)。
2)可擴(kuò)展性
IT技術(shù)日新月異,一年以前最新的產(chǎn)品,現(xiàn)在或許已是網(wǎng)絡(luò)中性能最低的產(chǎn)品;業(yè)務(wù)量的急速上升,一年前的網(wǎng)絡(luò),現(xiàn)在需要新一輪的擴(kuò)展。合適的均衡解決方案應(yīng)能滿(mǎn)足這些需求,能均衡不同操作系統(tǒng)和硬件平臺(tái)之間的負(fù)載,能均衡HTTP、郵件、新聞、代理、數(shù)據(jù)庫(kù)、防火墻和 Cache等不同服務(wù)器的負(fù)載,并且能以對(duì)客戶(hù)端完全透明的方式動(dòng)態(tài)增加或刪除某些資源。
3)靈活性
均衡解決方案應(yīng)能靈活地提供不同的應(yīng)用需求,滿(mǎn)足應(yīng)用需求的不斷變化。在不同的服務(wù)器群有不同的應(yīng)用需求時(shí),應(yīng)有多樣的均衡策略提供更廣泛的選擇。
4)可靠性
在對(duì)服務(wù)質(zhì)量要求較高的站點(diǎn),負(fù)載均衡解決方案應(yīng)能為服務(wù)器群提供完全的容錯(cuò)性和高可用性。但在負(fù)載均衡設(shè)備自身出現(xiàn)故障時(shí),應(yīng)該有良好的冗余解決方案,提高可靠性。使用冗余時(shí),處于同一個(gè)冗余單元的多個(gè)負(fù)載均衡設(shè)備必須具有有效的方式以便互相進(jìn)行監(jiān)控,保護(hù)系統(tǒng)盡可能地避免遭受到重大故障的損失。
5)易管理性
管是通過(guò)軟件還是硬件方式的均衡解決方案,我們都希望它有靈活、直觀和安全的管理方式,這樣便于安裝、配置、維護(hù)和監(jiān)控,提高工作效率,避免差錯(cuò)。在硬件負(fù)載均衡設(shè)備上,目前主要有三種管理方式可供選擇:一、命令行接口(CLI:Command Line Interface),可通過(guò)超級(jí)終端連接負(fù)載均衡設(shè)備串行接口來(lái)管理,也能telnet遠(yuǎn)程登錄管理,在初始化配置時(shí),往往要用到前者;二、圖形用戶(hù)接口(GUI:Graphical User Interfaces),有基于普通web頁(yè)的管理,也有通過(guò)Java Applet 進(jìn)行安全管理,一般都需要管理端安裝有某個(gè)版本的瀏覽器;三、SNMP(Simple Network Management Protocol,簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議)支持,通過(guò)第三方網(wǎng)絡(luò)管理軟件對(duì)符合SNMP標(biāo)準(zhǔn)的設(shè)備進(jìn)行管理。
聯(lián)系客服