[技術(shù)]談Web服務(wù)器的負(fù)載均衡技術(shù)
 
  當(dāng)前,無論在企業(yè)網(wǎng)、園區(qū)網(wǎng)還是在廣域網(wǎng)如Internet上,業(yè)務(wù)量的發(fā)展都超出了過去最樂觀的估計(jì),上網(wǎng)熱潮風(fēng)起云涌,新的應(yīng)用層出不窮,即使按照當(dāng)時(shí)最優(yōu)配置建設(shè)的網(wǎng)絡(luò),也很快會(huì)感到吃不消。尤其是各個(gè)網(wǎng)絡(luò)的核心部分,其數(shù)據(jù)流量和計(jì)算強(qiáng)度之大,使得單一設(shè)備根本無法承擔(dān),而如何在完成同樣功能的多個(gè)網(wǎng)絡(luò)設(shè)備之間實(shí)現(xiàn)合理的業(yè)務(wù)量分配,使之不致于出現(xiàn)一臺(tái)設(shè)備過忙、而別的設(shè)備卻未充分發(fā)揮處理能力的情況,就成了一個(gè)問題,負(fù)載均衡機(jī)制也因此應(yīng)運(yùn)而生。

  負(fù)載均衡建立在現(xiàn)有網(wǎng)絡(luò)結(jié)構(gòu)之上,它提供了一種廉價(jià)有效的方法擴(kuò)展服務(wù)器帶寬和增加吞吐量,加強(qiáng)網(wǎng)絡(luò)數(shù)據(jù)處理能力,提高網(wǎng)絡(luò)的靈活性和可用性。它主要完成以下任務(wù):解決網(wǎng)絡(luò)擁塞問題,服務(wù)就近提供,實(shí)現(xiàn)地理位置無關(guān)性;為用戶提供更好的訪問質(zhì)量;提高服務(wù)器響應(yīng)速度;提高服務(wù)器及其他資源的利用效率;避免了網(wǎng)絡(luò)關(guān)鍵部位出現(xiàn)單點(diǎn)失效。

  在負(fù)載均衡的思路下,多臺(tái)服務(wù)器為對(duì)稱方式,每臺(tái)服務(wù)器都具有同等的地位,可以單獨(dú)對(duì)外提供服務(wù)而無須其他服務(wù)器的輔助。通過負(fù)載分擔(dān)技術(shù),將外部發(fā)送來的請(qǐng)求按一定規(guī)則分配到對(duì)稱結(jié)構(gòu)中的某一臺(tái)服務(wù)器上,而接收到請(qǐng)求的服務(wù)器都獨(dú)立回應(yīng)客戶機(jī)的請(qǐng)求。

  提供服務(wù)的一組服務(wù)器組成了一個(gè)應(yīng)用服務(wù)器集群(cluster),并對(duì)外提供一個(gè)統(tǒng)一的地址。當(dāng)一個(gè)服務(wù)請(qǐng)求被發(fā)至該集群時(shí),根據(jù)一定規(guī)則選擇一臺(tái)服務(wù)器,并將服務(wù)轉(zhuǎn)定向給該服務(wù)器承擔(dān),即將負(fù)載進(jìn)行均衡分?jǐn)偂?

  通過應(yīng)用負(fù)載均衡技術(shù),使應(yīng)用服務(wù)超過了一臺(tái)服務(wù)器只能為有限用戶提供服務(wù)的限制,可以利用多臺(tái)服務(wù)器同時(shí)為大量用戶提供服務(wù)。當(dāng)某臺(tái)服務(wù)器出現(xiàn)故障時(shí),負(fù)載均衡服務(wù)器會(huì)自動(dòng)進(jìn)行檢測并停止將服務(wù)請(qǐng)求分發(fā)至該服務(wù)器,而由其他工作正常的服務(wù)器繼續(xù)提供服務(wù),從而保證了服務(wù)的可靠性。

  上述的集群技術(shù)一般都用于Web服務(wù)器、應(yīng)用服務(wù)器等,而不是用于數(shù)據(jù)庫服務(wù)器,即不是用于有共享的存儲(chǔ)的服務(wù)。數(shù)據(jù)庫服務(wù)器將涉及到加鎖、回滾等一系列問題,要復(fù)雜的多。一般數(shù)據(jù)庫服務(wù)器只是使用雙機(jī),其中一臺(tái)工作,另一臺(tái)備份。數(shù)據(jù)庫的雙機(jī)并行只用于大型數(shù)據(jù)庫中。

  負(fù)載均衡實(shí)現(xiàn)的方法有幾種:

  ■最簡單的是通過DNS,但只能實(shí)現(xiàn)簡單的輪流分配,也不能處理故障。

  ■如果是基于MS IIS,Windows 2003 Server本身就帶了負(fù)載均衡服務(wù)。但這一服務(wù)也只是輪流分配。

  ■硬件方式,通過交換機(jī)的功能或?qū)iT的負(fù)載均衡設(shè)備可以實(shí)現(xiàn)。對(duì)于流量的分配可以有多種方式,但基本上都是應(yīng)用無關(guān)的,與服務(wù)器的實(shí)現(xiàn)負(fù)載關(guān)系也不大。另外,設(shè)備的價(jià)格較貴(優(yōu)點(diǎn)是能支持很多臺(tái)服務(wù)器)。這種方式往往適合大流量、簡單應(yīng)用。

  ■軟件方式,通過一臺(tái)負(fù)載均衡服務(wù)器進(jìn)行,上面安裝軟件。這種方式比較靈活,成本相對(duì)也較低。另外一個(gè)很大的優(yōu)點(diǎn)就是可以根據(jù)應(yīng)用的情況和服務(wù)器的情況采取一些策略。

  關(guān)于負(fù)載均衡中比較高級(jí)的功能是FailOver,即一臺(tái)出現(xiàn)故障時(shí),在這臺(tái)服務(wù)器上正在進(jìn)行中的進(jìn)程也會(huì)被其他服務(wù)器接過去。相應(yīng)的成本也很高,一般是要象WebLogic、WebSphere軟件的群集版本才支持。