由于網(wǎng)絡(luò)的數(shù)據(jù)流量多集中在中心服務(wù)器一端,所以現(xiàn)在所說的負(fù)載均衡,多指的是對(duì)訪問服務(wù)器的負(fù)載進(jìn)行均衡(或者說分擔(dān))措施。負(fù)載均衡,從結(jié)構(gòu)上分為本地負(fù)載均衡和地域負(fù)載均衡(全局負(fù)載均衡),前一種是指對(duì)本地的服務(wù)器集群做負(fù)載均衡,后一種是指對(duì)分別放置在不同的地理位置、在不同的網(wǎng)絡(luò)及服務(wù)器群集之間作負(fù)載均衡。

  每個(gè)主機(jī)運(yùn)行一個(gè)所需服務(wù)器程序的獨(dú)立拷貝,諸如Web、FTP、Telnet或e-mail服務(wù)器程序。對(duì)于某些服務(wù)(如運(yùn)行在Web服務(wù)器上的那些服務(wù))而言,程序的一個(gè)拷貝運(yùn)行在群集內(nèi)所有的主機(jī)上,而網(wǎng)絡(luò)負(fù)載均衡則將工作負(fù)載在這些主機(jī)間進(jìn)行分配。對(duì)于其他服務(wù)(例如e-mail),只有一臺(tái)主機(jī)處理工作負(fù)載,針對(duì)這些服務(wù),網(wǎng)絡(luò)負(fù)載均衡允許網(wǎng)絡(luò)通訊量流到一個(gè)主機(jī)上,并在該主機(jī)發(fā)生故障時(shí)將通訊量移至其他主機(jī)。

  ■DNS

  早的負(fù)載均衡技術(shù)是通過DNS來實(shí)現(xiàn)的,在DNS中為多個(gè)地址配置同一個(gè)名字,因而查詢這個(gè)名字的客戶機(jī)將得到其中一個(gè)地址,從而使得不同的客戶訪問不同的服務(wù)器,達(dá)到負(fù)載均衡的目的。

  DNS負(fù)載均衡是一種簡(jiǎn)單而有效的方法,但是它不能區(qū)分服務(wù)器的差異,也不能反映服務(wù)器的當(dāng)前運(yùn)行狀態(tài)。當(dāng)使用DNS負(fù)載均衡的時(shí)候,必須盡量保證不同的客戶計(jì)算機(jī)能均勻獲得不同的地址。由于DNS數(shù)據(jù)具備刷新時(shí)間標(biāo)志,一旦超過這個(gè)時(shí)間限制,其他DNS服務(wù)器需要和這個(gè)服務(wù)器交互,以重新獲得地址數(shù)據(jù),有可能獲得不同IP地址。因此為了使地址能隨機(jī)分配,應(yīng)使刷新時(shí)間盡量短,不同地方的DNS服務(wù)器能更新對(duì)應(yīng)的地址,達(dá)到隨機(jī)獲得地址,然而將過期時(shí)間設(shè)置得過短,將使DNS流量大增,而造成額外的網(wǎng)絡(luò)問題。DNS負(fù)載均衡的另一個(gè)問題是,一旦某個(gè)服務(wù)器出現(xiàn)故障,即使及時(shí)修改了DNS設(shè)置,還是要等待足夠的時(shí)間(刷新時(shí)間)才能發(fā)揮作用,在此期間,保存了故障服務(wù)器地址的客戶計(jì)算機(jī)將不能正常訪問服務(wù)器。

  盡管存在多種問題,但它還是一種非常有效的做法,包括Yahoo在內(nèi)的很多大型網(wǎng)站都使用DNS。

  ■代理服務(wù)器

  使用代理服務(wù)器,可以將請(qǐng)求轉(zhuǎn)發(fā)給內(nèi)部的服務(wù)器,使用這種加速模式顯然可以提升靜態(tài)網(wǎng)頁(yè)的訪問速度。然而,也可以考慮這樣一種技術(shù),使用代理服務(wù)器將請(qǐng)求均勻轉(zhuǎn)發(fā)給多臺(tái)服務(wù)器,從而達(dá)到負(fù)載均衡的目的。

  這種代理方式與普通的代理方式有所不同,標(biāo)準(zhǔn)代理方式是客戶使用代理訪問多個(gè)外部服務(wù)器,而這種代理方式是代理多個(gè)客戶訪問內(nèi)部服務(wù)器,因此也被稱為反向代理模式。雖然實(shí)現(xiàn)這個(gè)任務(wù)并不算是特別復(fù)雜,然而由于要求特別高的效率,實(shí)現(xiàn)起來并不簡(jiǎn)單。

  使用反向代理的好處是,可以將負(fù)載均衡和代理服務(wù)器的高速緩存技術(shù)結(jié)合在一起,提供有益的性能。然而它本身也存在一些問題,首先是必須為每一種服務(wù)都專門開發(fā)一個(gè)反向代理服務(wù)器,這不是一個(gè)輕松的任務(wù)。

  代理服務(wù)器本身雖然可以達(dá)到很高效率,但是針對(duì)每一次代理,代理服務(wù)器必須維護(hù)兩個(gè)連接,一個(gè)對(duì)外的連接,一個(gè)對(duì)內(nèi)的連接,因此對(duì)于特別高的連接請(qǐng)求,代理服務(wù)器的負(fù)載也非常之大。反向代理方式下能應(yīng)用優(yōu)化的負(fù)載均衡策略,每次訪問空閑的內(nèi)部服務(wù)器來提供服務(wù)。但是隨著并發(fā)連接數(shù)量的增加,代理服務(wù)器本身的負(fù)載也變得非常大,后反向代理服務(wù)器本身會(huì)成為服務(wù)的瓶頸。

  ■地址轉(zhuǎn)換網(wǎng)關(guān)

  支持負(fù)載均衡的地址轉(zhuǎn)換網(wǎng)關(guān),可以將一個(gè)外部IP地址映射為多個(gè)內(nèi)部IP地址,對(duì)每次TCP連接請(qǐng)求動(dòng)態(tài)使用其中一個(gè)內(nèi)部地址,達(dá)到負(fù)載均衡的目的。很多硬件廠商將這種技術(shù)集成在他們的交換機(jī)中,作為他們第四層交換的一種功能來實(shí)現(xiàn),一般采用隨機(jī)選擇、根據(jù)服務(wù)器的連接數(shù)量或者響應(yīng)時(shí)間進(jìn)行選擇的負(fù)載均衡策略來分配負(fù)載。由于地址轉(zhuǎn)換相對(duì)來講比較接近網(wǎng)絡(luò)的低層,因此有可能將它集成在硬件設(shè)備中,通常這樣的硬件設(shè)備是局域網(wǎng)交換機(jī)。

  當(dāng)前局域網(wǎng)交換機(jī)所謂的第四層交換技術(shù),是按照IP地址和TCP端口進(jìn)行虛擬連接的交換,直接將數(shù)據(jù)包發(fā)送到目的計(jì)算機(jī)的相應(yīng)端口。通過交換機(jī)能將來自外部的初始連接請(qǐng)求,分別與內(nèi)部的多個(gè)地址相聯(lián)系,此后能對(duì)這些已經(jīng)建立的虛擬連接進(jìn)行交換。因此,一些具備第四層交換能力的局域網(wǎng)交換機(jī),能作為一個(gè)硬件負(fù)載均衡器,完成服務(wù)器的負(fù)載均衡。   由于第四層交換基于硬件芯片,因此其性能非常,尤其是對(duì)于網(wǎng)絡(luò)傳輸速度和交換速度遠(yuǎn)遠(yuǎn)超過普通的數(shù)據(jù)包轉(zhuǎn)發(fā)。然而,正因?yàn)樗鞘褂糜布䦟?shí)現(xiàn)的,因此也不夠靈活,僅僅能夠處理幾種標(biāo)準(zhǔn)的應(yīng)用協(xié)議的負(fù)載均衡,如HTTP 。當(dāng)前負(fù)載均衡主要用于解決服務(wù)器的處理能力不足的問題,因此并不能充分發(fā)揮交換機(jī)帶來的高網(wǎng)絡(luò)帶寬的優(yōu)點(diǎn)。

  ■協(xié)議內(nèi)部支持

  除了這三種負(fù)載均衡方式之外,有的協(xié)議內(nèi)部支持與負(fù)載均衡相關(guān)的功能,例如HTTP協(xié)議中的重定向能力等,HTTP運(yùn)行于TCP連接的高層。客戶端通過端口號(hào)80的TCP服務(wù)直接連接到服務(wù)器,然后通過TCP連接向服務(wù)器端發(fā)送一個(gè)HTTP請(qǐng)求。在服務(wù)器分清客戶端所需的網(wǎng)頁(yè)和資源之前,至少要進(jìn)行四次TCP的數(shù)據(jù)包交換請(qǐng)求。由于負(fù)載平衡設(shè)備要把進(jìn)入的請(qǐng)求分配給多個(gè)服務(wù)器,因此,它只能在TCP連接時(shí)建立,且HTTP請(qǐng)求通過后才能確定如何進(jìn)行負(fù)載的平衡。當(dāng)一個(gè)網(wǎng)站的點(diǎn)擊率達(dá)到每秒上百甚至上千次時(shí),TCP連接、HTTP報(bào)頭信息以及進(jìn)程的時(shí)延已經(jīng)變得很重要了。在HTTP請(qǐng)求和報(bào)頭中有很多對(duì)負(fù)載平衡有用的信息。首先,也是重要的一點(diǎn)是,我們可以從這些信息中獲知客戶端所請(qǐng)求的URL和網(wǎng)頁(yè),利用這個(gè)信息,負(fù)載平衡設(shè)備可以將所有的圖像請(qǐng)求引導(dǎo)到一個(gè)圖像服務(wù)器,或者根據(jù)URL的數(shù)據(jù)庫(kù)查詢內(nèi)容調(diào)用CGI程序,將請(qǐng)求引導(dǎo)到一個(gè)專用的高性能數(shù)據(jù)庫(kù)服務(wù)器。惟一能局限這些信息獲取的因素是負(fù)載平衡設(shè)備本身的靈活程度。事實(shí)上,如果網(wǎng)絡(luò)管理員熟悉Web內(nèi)容交換技術(shù),他可以僅僅根據(jù)HTTP報(bào)頭的cookie字段來使用Web內(nèi)容交換技術(shù)改善對(duì)特定客戶的服務(wù),如果能從HTTP請(qǐng)求中找到一些規(guī)律,還可以充分利用它作出各種決策。除了TCP連接表的問題外,如何查找合適的HTTP報(bào)頭信息以及作出負(fù)載平衡決策的過程,是影響Web內(nèi)容交換技術(shù)性能的重要問題。

  但它依賴于特定協(xié)議,因此使用范圍有限。根據(jù)現(xiàn)有的這些負(fù)載均衡技術(shù),并應(yīng)用優(yōu)化的均衡策略,來實(shí)現(xiàn)后端服務(wù)器負(fù)載分擔(dān)的優(yōu)狀態(tài)。