全 宇 何 苗
摘要:本文討論了應(yīng)用系統(tǒng)的性能問題,介紹了服務(wù)器負(fù)載均衡的概念和方式,并詳細(xì)闡述了硬件負(fù)載均衡的算法、優(yōu)點。在文中,以一個案例為例描述了如何通過硬件負(fù)載均衡提高應(yīng)用系統(tǒng)性能,以及消除應(yīng)用系統(tǒng)服務(wù)器的單點故障,從而增強應(yīng)用系統(tǒng)的穩(wěn)定性和可靠性。
關(guān)鍵詞:負(fù)載均衡 服務(wù)器 性能
中圖分類號:TP393.01 文獻(xiàn)標(biāo)識碼:A 文章編號:1673-8454(2009)11-0017-03
一、引言
信息化、數(shù)字化、網(wǎng)絡(luò)化已經(jīng)普及到社會的各個行業(yè)。在校園里,選課,視頻課件點播、回放,消息發(fā)布等已經(jīng)成為校園網(wǎng)平臺上的重要應(yīng)用;在醫(yī)院里,讓患者自己通過網(wǎng)絡(luò)查詢檢驗、檢查結(jié)果已經(jīng)開始應(yīng)用;在銀行里,網(wǎng)上銀行已經(jīng)逐漸被人們所接受;在政府、在各個服務(wù)機(jī)構(gòu),越來越多的業(yè)務(wù)已經(jīng)開始在網(wǎng)絡(luò)上運行,給人們的學(xué)習(xí)、工作和日常生活帶來了很大的方便。但是這些系統(tǒng)在運行一段時間后都會暴露出性能問題,嚴(yán)重的會導(dǎo)致業(yè)務(wù)系統(tǒng)不可用。如:校園內(nèi)的系統(tǒng),其主要有兩個明顯的特點:一是用戶數(shù)量大,用戶主體是學(xué)生,每個學(xué)生都要訪問相應(yīng)的業(yè)務(wù)系統(tǒng),獲取相關(guān)的學(xué)習(xí)和上課信息;二是訪問時間集中,開學(xué)的一周內(nèi),所有的學(xué)生都要在網(wǎng)上選課,查看本學(xué)期相關(guān)的信息,在學(xué)期末,又要上網(wǎng)集中在一周內(nèi)查詢考試成績。在這兩個特點的影響下,每個學(xué)期,校園網(wǎng)平臺上的各個應(yīng)用大部分時間平穩(wěn)運行,而在幾個固定的時間段會出現(xiàn)訪問高峰,而恰恰就是這個訪問的高峰常常造成各個應(yīng)用系統(tǒng)性能低下,速度慢,甚至出現(xiàn)宕機(jī)的情況,影響了各項正常的業(yè)務(wù);再如:醫(yī)院為患者提供檢驗、檢查結(jié)果查詢的系統(tǒng),每天上午9-11點會出現(xiàn)一個訪問高峰,而其他時間段訪問量不高,而就是每天上午的這兩個小時,很多醫(yī)院遭到患者對查詢服務(wù)的不滿。各個企事業(yè)單位為了保證自己的各個應(yīng)用系統(tǒng)持續(xù)平穩(wěn)運行,必須要采取相應(yīng)的措施和手段。[1][2]
二、負(fù)載均衡
提高應(yīng)用系統(tǒng)性能最常用到的方法是提高服務(wù)器的硬件配置,這種做法在一定程度上可以提高應(yīng)用系統(tǒng)的性能,但是不能從根本上解決問題。事實證明,增加服務(wù)器的CPU、內(nèi)存的數(shù)量,其性能不會隨著線性增長,而且服務(wù)器的硬件配置也不能無限制的擴(kuò)充和提高。這種方法常常應(yīng)用在中小型的應(yīng)用系統(tǒng)中。
1.什么是負(fù)載均衡
負(fù)載均衡就是由多臺服務(wù)器以對稱的方式組成一個服務(wù)器集合,每臺服務(wù)器都具有等價的地位,都可以單獨對外提供服務(wù)而無需其他服務(wù)器的輔助。通過某種負(fù)載分擔(dān)的算法,將外部發(fā)送來的請求均勻分配到對稱結(jié)構(gòu)中的某一臺服務(wù)器上,而接收到請求的服務(wù)器獨立地回應(yīng)客戶的請求。完成負(fù)載均衡的幾臺服務(wù)器可以是相同軟硬件配置,也可以是不同的軟硬件配置,甚至操作系統(tǒng)也可以不一致。這使得管理部門可以利用幾臺低配置的服務(wù)器實現(xiàn)高性能的應(yīng)用系統(tǒng),而不必購買價格昂貴的高配置的服務(wù)器。負(fù)載均衡可以分為軟件負(fù)載均衡和硬件負(fù)載均衡。[3][4]
2.軟件負(fù)載均衡
利用專門的應(yīng)用軟件在多臺服務(wù)器之間做負(fù)載均衡。軟件負(fù)載均衡的優(yōu)點是實現(xiàn)簡單,投入成本低。缺點如下:
第一:由于實現(xiàn)負(fù)載均衡功能的軟件要安裝到業(yè)務(wù)服務(wù)器上,所以軟件自身要占用一部分性能已經(jīng)低下的服務(wù)器的資源。
第二:部分實現(xiàn)負(fù)載均衡功能的軟件對負(fù)載均衡的服務(wù)器平臺有局限性。
第三:軟件實現(xiàn)的負(fù)載均衡,流量分?jǐn)偹惴ㄉ?,有的時候流量分?jǐn)偟乃惴ú贿m合實際的環(huán)境。
第四:存在兼容性的問題。在生產(chǎn)系統(tǒng)的服務(wù)器上面安裝實現(xiàn)負(fù)載均衡功能的軟件,軟件的兼容性無法保障,沒有經(jīng)過測試就安裝,是一種冒險的行為。
所以,在實際中,軟件負(fù)載均衡通常用于小型應(yīng)用系統(tǒng),或者資金不充足的企事業(yè)單位。而大中型系統(tǒng)中通常使用硬件負(fù)載均衡。
3.硬件負(fù)載均衡
硬件負(fù)載均衡是利用專門的硬件設(shè)備實現(xiàn)多臺服務(wù)器之間的負(fù)載均衡。在實現(xiàn)過程中,無需改變現(xiàn)有的網(wǎng)絡(luò)環(huán)境,不在服務(wù)器上安裝任何軟件,所有的操作全部在硬件負(fù)載均衡設(shè)備上配置和實現(xiàn)。
(1)算法[5]
不同的應(yīng)用環(huán)境,要使用不同的負(fù)載均衡算法與之相匹配,才能充分提高整個應(yīng)用系統(tǒng)的性能。常用的負(fù)載均衡算法如下:
算法1:輪詢
將外部的請求均勻地分?jǐn)偟礁鱾€服務(wù)器上面,如:有3臺服務(wù)器實現(xiàn)負(fù)載均衡,那么3臺服務(wù)器接受處理的請求數(shù)量為1∶1∶1。這種算法適用于做負(fù)載均衡的幾臺服務(wù)器硬件配置相同,他們可以平均分?jǐn)偹辛髁俊?/p>
算法2:比率
將外部請求安裝預(yù)先設(shè)定好的比率分?jǐn)偟礁鱾€負(fù)載均衡的服務(wù)器上,如:有3臺服務(wù)器做負(fù)載均衡,設(shè)定他們接收處理請求的比率為1∶2∶3,那么每臺服務(wù)器處理的請求是不同的。這種算法適用于做負(fù)載均衡的幾臺服務(wù)器硬件配置不同,按照他們的處理能力,設(shè)定比率,從而使得性能高低不同的服務(wù)器都能夠平穩(wěn)運行,不會出現(xiàn)個別服務(wù)器負(fù)載過重,而另外的服務(wù)器負(fù)載過少的情況。
算法3:最少連接數(shù)
負(fù)載均衡的硬件設(shè)備會不斷地檢測做負(fù)載均衡的幾臺服務(wù)器上的連接數(shù)的數(shù)量,將新的請求轉(zhuǎn)發(fā)到連接數(shù)最少的服務(wù)器上面。這種算法適用于應(yīng)用為長連接的情況。
算法4:最快響應(yīng)時間
負(fù)載均衡的硬件設(shè)備會不斷地檢測做負(fù)載均衡的幾臺服務(wù)器中,哪臺服務(wù)器響應(yīng)速度最快,從而將請求轉(zhuǎn)發(fā)到響應(yīng)時間最快的服務(wù)器上面。這種算法適用于每臺做負(fù)載均衡的服務(wù)器都能夠在很短的時間內(nèi)處理完請求,沒有性能的問題。
(2)故障檢查方法[6]
負(fù)載均衡設(shè)備會不斷地檢測負(fù)載均衡服務(wù)器的狀態(tài),保證請求全部轉(zhuǎn)發(fā)到正常工作狀態(tài)的服務(wù)器上,而不轉(zhuǎn)發(fā)到故障服務(wù)器上。常用的檢測方法如下:
方法1:ping
ping是最直接的一種檢測網(wǎng)絡(luò)是否通暢的方法。負(fù)載均衡的硬件設(shè)備會不間斷地ping做負(fù)載均衡的幾臺服務(wù)器,如果某臺連續(xù)3次ping不通,則認(rèn)為該服務(wù)器已經(jīng)出現(xiàn)故障。
方法2:tcp open
負(fù)載均衡設(shè)備會模擬外部請求想做負(fù)載均衡的服務(wù)器發(fā)送請求,如果能夠得到回應(yīng),表明服務(wù)器狀態(tài)正常,反之,認(rèn)為服務(wù)器出現(xiàn)故障。如:一個服務(wù)器提供Web服務(wù),即負(fù)載均衡設(shè)備檢查負(fù)載均衡服務(wù)器的80端口是否正常,如果正常,則表明服務(wù)器的服務(wù)正常,如果檢測不到80端口的服務(wù),那么認(rèn)為該服務(wù)器上的Web服務(wù)已經(jīng)中斷。
(3)優(yōu)點
1)容錯
當(dāng)負(fù)載均衡設(shè)備檢測到某臺負(fù)載均衡服務(wù)器出現(xiàn)故障時,會自動旁路掉該服務(wù)器,新的請求將不再轉(zhuǎn)發(fā)到該服務(wù)器上,從而實現(xiàn)了容錯機(jī)制。容錯機(jī)制是實現(xiàn)負(fù)載均衡的同時帶來的好處,單憑一臺高性能、高配置的服務(wù)器是實現(xiàn)不了的,也就是說,一臺高配置的服務(wù)器存在單點故障,而負(fù)載均衡不但解決了整個業(yè)務(wù)系統(tǒng)的性能問題,而且消除了單點故障。
2)可擴(kuò)展性
硬件負(fù)載均衡的擴(kuò)展能力很強,若3臺服務(wù)器性能不能滿足需求,可以增加到4臺或5臺,甚至更多。
3)節(jié)省投資
只要有處理能力的服務(wù)器都可以加入到負(fù)載均衡的行列里,通過負(fù)載均衡技術(shù)利用一些過時的,配置很低的服務(wù)器提供高性能的服務(wù)。
4)平臺無關(guān)性
做負(fù)載均衡的服務(wù)器與軟硬件平臺無關(guān),只要基于TCP/IP協(xié)議就可以。
三、負(fù)載均衡的應(yīng)用
在實際應(yīng)用中,很多系統(tǒng)都可以通過負(fù)載均衡技術(shù)來提高整個系統(tǒng)的性能。如圖1所示是硬件負(fù)載均衡典型的拓?fù)浣Y(jié)構(gòu)。
圖1中,3臺硬件配置相同的服務(wù)器通過硬件負(fù)載均衡器做負(fù)載均衡,下面通過服務(wù)器全部正常工作和部分服務(wù)器出現(xiàn)故障兩種情況討論負(fù)載均衡在實際中的應(yīng)用。
1.服務(wù)器全部正常工作
來自于客戶端的所有請求,先到達(dá)負(fù)載均衡器,負(fù)載均衡器根據(jù)預(yù)先設(shè)置的輪詢算法,將所有的請求全部轉(zhuǎn)發(fā)到3臺服務(wù)器上,3臺服務(wù)器接收處理請求數(shù)量的比率為1∶1∶1。
2.部分服務(wù)器出現(xiàn)故障
當(dāng)負(fù)載均衡器檢測到3臺服務(wù)器中的Server1出現(xiàn)故障的時候,它會自動旁路掉出現(xiàn)故障的服務(wù)器,將來自于客戶端的請求全部轉(zhuǎn)發(fā)到Server2和Server3上。當(dāng)Server1從故障恢復(fù)后,負(fù)載均衡器又會重新把請求分發(fā)給Server1、Server2和Server3上。
綜上所述,3臺服務(wù)器通過負(fù)載均衡后,性能提高了3倍,并且消除了應(yīng)用系統(tǒng)中的單點故障,達(dá)到了為用戶提供高質(zhì)量、高性能服務(wù)的目的。
四、結(jié)束語
負(fù)載均衡技術(shù)在越來越多的應(yīng)用系統(tǒng)中發(fā)揮著重要的作用,在提供高質(zhì)量、高性能服務(wù)的同時,消除了網(wǎng)絡(luò)應(yīng)用系統(tǒng)中服務(wù)器的單點故障,節(jié)省了投資的成本,負(fù)載均衡技術(shù)已經(jīng)成為網(wǎng)絡(luò)應(yīng)用系統(tǒng)中安全可靠的保障手段之一。
參考文獻(xiàn):
[1]金雷,謝立.應(yīng)用系統(tǒng)中集群技術(shù)的實現(xiàn)[J].計算機(jī)應(yīng)用研究,2003,20(1):88-91.
[2]馬小星,呂建.分布式Web服務(wù)器技術(shù)綜述[J].計算機(jī)科學(xué),2002,29(1):7-12.
[3]劉愛潔.負(fù)載均衡技術(shù)淺析[R].北京:信息產(chǎn)業(yè)部北京郵電設(shè)計院第七屆新技術(shù)論壇,2002.
[4]唐俊奇.負(fù)載均衡技術(shù)的三種實現(xiàn)方法[J].微電腦世界,2003(4):72-74.
[5]李樹民.論服務(wù)器集群技術(shù)[J].互聯(lián)網(wǎng)世界,2000(7):36-37.
[6]朱文濤,洪佩琳,李津生.基于LINUX虛擬服務(wù)器的負(fù)載均衡[J].計算機(jī)工程,2002(12):55-57.