登錄

負(fù)載平衡

百科 > 計(jì)算機(jī) > 負(fù)載平衡

1.什么是負(fù)載平衡

  負(fù)載平衡是指劃分多臺(tái)計(jì)算機(jī)間必須完成的任務(wù)量,以便在同樣時(shí)間完成更多工作,并且所有用戶都能得到快速地服務(wù)。負(fù)載平衡可以通過(guò)硬件、軟件或兩者的組合實(shí)行。通常,負(fù)載平衡是計(jì)算機(jī)服務(wù)器分組的主要原因。

  在互聯(lián)網(wǎng)上,那些有大流量的公司通常會(huì)使用負(fù)載平衡。有幾種方法可以使網(wǎng)絡(luò)流量負(fù)載平衡。對(duì)于Web服務(wù)來(lái)說(shuō),一種方法是將各個(gè)請(qǐng)求轉(zhuǎn)向DNS表里每個(gè)不同的主機(jī)地址。通常,如果兩臺(tái)服務(wù)器需要使用平衡工作負(fù)擔(dān),需要第三臺(tái)服務(wù)器是來(lái)確定工作分配給哪臺(tái)服務(wù)器。由于負(fù)載平衡需要多臺(tái)服務(wù)器,它通常與故障轉(zhuǎn)移和備份服務(wù)結(jié)合使用。在一些方法里,服務(wù)器被分布在不同的地理位置。

  負(fù)載平衡最重要的一個(gè)應(yīng)用是利用多臺(tái)服務(wù)器提供單一服務(wù),這種方案有時(shí)也稱之為服務(wù)器農(nóng)場(chǎng)。通常,負(fù)載平衡主要應(yīng)用于Web網(wǎng)站,大型的Internet Relay Chat網(wǎng)絡(luò),高流量的文件下載網(wǎng)站,NNTP(Network News Transfer Protocol)服務(wù)和DNS服務(wù)。現(xiàn)在負(fù)載平衡器也開始支持數(shù)據(jù)庫(kù)服務(wù),稱之為數(shù)據(jù)庫(kù)負(fù)載平衡器。

  對(duì)于互聯(lián)網(wǎng)服務(wù),負(fù)載平衡器通常是一個(gè)軟體程序,這個(gè)程序偵聽一個(gè)外部端口,互聯(lián)網(wǎng)用戶可以通過(guò)這個(gè)端口來(lái)訪問(wèn)服務(wù),而作為負(fù)載平衡器的軟體會(huì)將用戶的請(qǐng)求轉(zhuǎn)發(fā)給后臺(tái)內(nèi)網(wǎng)服務(wù)器,內(nèi)網(wǎng)服務(wù)器將請(qǐng)求的響應(yīng)返回給負(fù)載平衡器,負(fù)載平衡器再將響應(yīng)發(fā)送到用戶,這樣就向互聯(lián)網(wǎng)用戶隱藏了內(nèi)網(wǎng)結(jié)構(gòu),阻止了用戶直接訪問(wèn)后臺(tái)(內(nèi)網(wǎng))服務(wù)器,使得服務(wù)器更加安全,可以阻止對(duì)核心網(wǎng)絡(luò)棧和運(yùn)行在其它端口服務(wù)的攻擊。

  當(dāng)所有后臺(tái)服務(wù)器出現(xiàn)故障時(shí),有些負(fù)載平衡器會(huì)提供一些特殊的功能來(lái)處理這種情況。例如轉(zhuǎn)發(fā)請(qǐng)求到一個(gè)備用的負(fù)載平衡器、顯示一條關(guān)于服務(wù)中斷的消息等。負(fù)載平衡器使得IT團(tuán)隊(duì)可以顯著提高容錯(cuò)能力。它可以自動(dòng)提供大量的容量以處理任何應(yīng)用程序流量的增加或減少。

2.負(fù)載平衡的原理

  負(fù)載平衡NAT(Network Address Translation網(wǎng)絡(luò)地址轉(zhuǎn)換)簡(jiǎn)單地說(shuō)就是將一個(gè)IP地址轉(zhuǎn)換為另一個(gè)IP地址,一般用于未經(jīng)注冊(cè)的內(nèi)部地址與合法的、已獲注冊(cè)的Internet IP地址間進(jìn)行轉(zhuǎn)換。適用于解決Internet IP地址緊張、不想讓網(wǎng)絡(luò)外部知道內(nèi)部網(wǎng)絡(luò)結(jié)構(gòu)等的場(chǎng)合下。

  此種負(fù)載平衡是當(dāng)前多WAN口路由器的帶寬匯聚技術(shù)基礎(chǔ),以欣向路由器為例:

  多WAN路由器實(shí)現(xiàn)的是業(yè)界先進(jìn)的動(dòng)態(tài)負(fù)載平衡機(jī)制,多WAN口動(dòng)態(tài)負(fù)載平衡技術(shù)可以在使用多條線路的情況下動(dòng)態(tài)分配內(nèi)網(wǎng)的數(shù)據(jù)流量,動(dòng)態(tài)的實(shí)現(xiàn)帶寬匯聚的功能,采用特有的三種負(fù)載平衡機(jī)制:

  1、Session:所有啟用的WAN口,采用均分session的方式工作。

  如第一個(gè)連接session通過(guò)WAN1口流出,則下一個(gè)session自動(dòng)選擇WAN2流出,第三個(gè)session選擇WAN3口流出(假設(shè)所有WAN口都啟用)

  這種方式適用于多條相同帶寬的線路捆綁時(shí)使用。

  2、這種方式適用于多條不同帶寬的線路能夠更好的協(xié)同工作。例如:WAN1口接一條512K的ADSL,WAN2口接2M的光纖,這種情況下我們就可以把比例設(shè)為1:4,這樣能夠充分利用兩條線路的帶寬。

  3、Traffic:按數(shù)據(jù)流量分配負(fù)載,系統(tǒng)自動(dòng)選擇流量最小的WAN口作為出口。

  此種方式適用于線路不穩(wěn)定時(shí)的多條線路混用的情況。在某一條線路暫時(shí)不通或者線路不穩(wěn)定的情況下會(huì)把流量自動(dòng)分配到另一條穩(wěn)定的線路上。但在多條線路穩(wěn)定的情況下不建議使用這種方式。

  有了這三種負(fù)載平衡使得路由器可以靈活的應(yīng)對(duì)多種線路混用的復(fù)雜情況,支持多種線路混接,支持多種協(xié)議,能夠滿足多種復(fù)雜應(yīng)用。

3.負(fù)載平衡的優(yōu)點(diǎn)

  第一,網(wǎng)絡(luò)負(fù)載平衡能將傳入的請(qǐng)求傳播到多達(dá)32臺(tái)服務(wù)器上,即可以使用最多32臺(tái)服務(wù)器共同分擔(dān)對(duì)外的網(wǎng)絡(luò)請(qǐng)求服務(wù)。網(wǎng)絡(luò)負(fù)載平衡技術(shù)保證即使是在負(fù)載很重的情況下,服務(wù)器也能做出快速響應(yīng);

  第二,網(wǎng)絡(luò)負(fù)載平衡對(duì)外只需提供一個(gè)IP地址(或域名);

  第三,當(dāng)網(wǎng)絡(luò)負(fù)載平衡中的一臺(tái)或幾臺(tái)服務(wù)器不可用時(shí),服務(wù)不會(huì)中斷。網(wǎng)絡(luò)負(fù)載平衡自動(dòng)檢測(cè)到服務(wù)器不可用時(shí),能夠迅速在剩余的服務(wù)器中重新指派客戶機(jī)通訊。這項(xiàng)保護(hù)措施能夠幫助你為關(guān)鍵的業(yè)務(wù)程序提供不中斷的服務(wù),并可以根據(jù)網(wǎng)絡(luò)訪問(wèn)量的增加來(lái)相應(yīng)地增加網(wǎng)絡(luò)負(fù)載平衡服務(wù)器的數(shù)量;

  第四,網(wǎng)絡(luò)負(fù)載平衡可在普通的計(jì)算機(jī)上實(shí)現(xiàn)。

4.負(fù)載平衡的持續(xù)性

  負(fù)載平衡器需要處理的一個(gè)重要問(wèn)題是:如何保存用戶會(huì)話?如果會(huì)話信息保存在后臺(tái)服務(wù)器,用戶接下來(lái)的請(qǐng)求可能會(huì)被分配到不同的后臺(tái)服務(wù)器,此時(shí)用戶會(huì)話就無(wú)法繼續(xù)。負(fù)載平衡器可以緩存用戶會(huì)話,然后將用戶請(qǐng)求分發(fā)到不同的后臺(tái)服務(wù)器。但是這將帶來(lái)負(fù)載平衡器的負(fù)載問(wèn)題。

  一個(gè)解決方案是將一個(gè)用戶會(huì)話中的所有請(qǐng)求都發(fā)送到同一個(gè)后臺(tái)服務(wù)器。即persistence或stickiness。這個(gè)方法的不足之處在于無(wú)法容錯(cuò)failover,如果后臺(tái)服務(wù)器故障,它提供的會(huì)話就會(huì)無(wú)法取得,任何依賴于它的會(huì)話都會(huì)丟失。這個(gè)問(wèn)題通常與數(shù)據(jù)中心有關(guān),盡管Web Service是非連結(jié)導(dǎo)向的,但是后端的數(shù)據(jù)庫(kù)先天上還是連結(jié)導(dǎo)向的。

  第二個(gè)方案是依據(jù)用戶名,客戶端IP來(lái)分配提供服務(wù)的服務(wù)器,也可以隨機(jī)分配。因?yàn)榭蛻艨赡苁峭ㄟ^(guò)DHCP,NAT或者Web代理來(lái)連接Internet的,其IP地址可能經(jīng)常變換,這使得這個(gè)方案的服務(wù)質(zhì)量無(wú)法保障。隨機(jī)分配由負(fù)載平衡器將會(huì)話信息存儲(chǔ)保存。如果負(fù)載平衡器被替換或故障,這些信息可會(huì)會(huì)丟失;另外(負(fù)載平衡器)負(fù)載較高的時(shí)候,為保證分配表空間不會(huì)被耗盡,超時(shí)的分配信息必須被刪除。隨機(jī)分配方法也要求客戶會(huì)維持會(huì)話狀態(tài),如果客戶瀏覽器禁用了cookies的功能,就會(huì)引起問(wèn)題。優(yōu)秀的負(fù)載平衡器會(huì)使用多種持續(xù)(會(huì)話保持)技術(shù),以避免其中某些不可以用時(shí)引起故障。

  另外一個(gè)方案是將每一會(huì)話信息保存到一個(gè)數(shù)據(jù)庫(kù)中。由于這個(gè)方案會(huì)增加數(shù)據(jù)庫(kù)的負(fù)載,所以這個(gè)方案對(duì)性能的提高并不好。數(shù)據(jù)庫(kù)最好是用來(lái)存儲(chǔ)會(huì)話時(shí)間比較長(zhǎng)的會(huì)話數(shù)據(jù)。為了避免數(shù)據(jù)庫(kù)出現(xiàn)單點(diǎn)故障,并且提高其擴(kuò)展性,數(shù)據(jù)庫(kù)通常會(huì)復(fù)制到多臺(tái)服務(wù)器上,通過(guò)負(fù)載平衡器來(lái)分發(fā)請(qǐng)求到數(shù)據(jù)庫(kù)服務(wù)器上。微軟ASP.net中的狀態(tài)服務(wù)器技術(shù)就是一個(gè)典型的會(huì)話數(shù)據(jù)庫(kù)的例子。集群中的所有服務(wù)器都將它們的會(huì)話信息保存到狀態(tài)服務(wù)器上,同時(shí)它們可以向狀態(tài)服務(wù)器查詢會(huì)話數(shù)據(jù)。

  通??蛻魹g覽器可以保存用戶的每個(gè)會(huì)話信息。例如使用瀏覽器cookie,對(duì)數(shù)據(jù)加密并加上一個(gè)時(shí)間戳就可以保證安全了;URL重寫。將會(huì)話信息存儲(chǔ)在客戶端通常是首選方案,因?yàn)檫@樣負(fù)載平衡器就可以靈活的選擇后臺(tái)服務(wù)器來(lái)處理用戶請(qǐng)求。然而這種方法不適應(yīng)于一些較復(fù)雜的電子商務(wù),因?yàn)殡娮由虅?wù)中會(huì)話數(shù)據(jù)較大,而且需要服務(wù)器需要經(jīng)常重新處理會(huì)話信息;與此同時(shí)URL重寫由于用戶可以改變會(huì)話流數(shù)據(jù)而存在安全問(wèn)題;加密客戶端cookies也一直存在著安全方面的爭(zhēng)議,除非所有的會(huì)話都通過(guò)HTTPS,但是HTTPS很容易遭到中間人攻擊。

5.負(fù)載平衡的應(yīng)用

  負(fù)載平衡對(duì)通訊鏈路的冗余是非常有用的。例如,一家公司可能有多條互聯(lián)網(wǎng)接入線路以保證某一條故障時(shí)仍可以正常接入互聯(lián)網(wǎng)。

  故障轉(zhuǎn)移的架構(gòu)意味著一條連接正常使用,另外一條連接作為備用,當(dāng)?shù)谝粭l出現(xiàn)故障時(shí)才會(huì)被啟用。

  使用負(fù)載平衡器,兩條(多條)連接可以都投入使用。有一個(gè)設(shè)備或者程序?qū)崟r(shí)監(jiān)控著所有連接的連通性,并且對(duì)正在發(fā)送的包進(jìn)行選路。同時(shí)使用多條連接可以增加帶寬。

  許多電信公司在其內(nèi)部網(wǎng)絡(luò)或連接到外部網(wǎng)絡(luò)(其它電信網(wǎng)絡(luò))都有多條線路可以使用。為避免某條鏈路出現(xiàn)網(wǎng)絡(luò)堵塞,最小化連接其它網(wǎng)絡(luò)的費(fèi)用或者提高網(wǎng)絡(luò)的可靠性,它們使用負(fù)載平衡將流量從一條鏈路轉(zhuǎn)移到另一條鏈路

  負(fù)載平衡的另一個(gè)用途是監(jiān)控網(wǎng)絡(luò)活動(dòng)。負(fù)載平衡器能用于將巨大的網(wǎng)絡(luò)流量分割為幾個(gè)子流并使用網(wǎng)絡(luò)分析器,每個(gè)都讀取原始數(shù)據(jù)的一部分。這對(duì)于監(jiān)視10GbE, STM64高速網(wǎng)絡(luò)非常有用,在這些網(wǎng)絡(luò)上由于數(shù)據(jù)量太大進(jìn)行復(fù)雜的數(shù)據(jù)處理幾乎是不可能的。

評(píng)論  |   0條評(píng)論