基于WebLogic的集群Web服務(wù)器的實(shí)現(xiàn)_第1頁
基于WebLogic的集群Web服務(wù)器的實(shí)現(xiàn)_第2頁
基于WebLogic的集群Web服務(wù)器的實(shí)現(xiàn)_第3頁
基于WebLogic的集群Web服務(wù)器的實(shí)現(xiàn)_第4頁
基于WebLogic的集群Web服務(wù)器的實(shí)現(xiàn)_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、基于WebLogic的集群Web服務(wù)器的實(shí)現(xiàn)    摘  要  為了提高Web訪問的實(shí)時(shí)性和吞吐量,本文提出了一種基于WebLogic的負(fù)載均衡集群系統(tǒng)的構(gòu)建方案。應(yīng)用于我們的Internet網(wǎng)絡(luò)服務(wù)器上,將負(fù)載分給多個(gè)服務(wù)器分擔(dān),能夠解決Internet服務(wù)器面臨的大量并發(fā)訪問造成的CPU或I/O的高負(fù)載問題。本文對系統(tǒng)進(jìn)行了壓力測試,實(shí)驗(yàn)結(jié)果表明該系統(tǒng)能夠適應(yīng)大型商業(yè)網(wǎng)站的需求。    關(guān)鍵詞 負(fù)載均衡;集群;可伸縮性;可用性    0  引言   &

2、#160; 互聯(lián)網(wǎng)的出現(xiàn)使信息訪問產(chǎn)生了質(zhì)的飛躍,但隨之而來的是Web流量的激增(高并發(fā)訪問),由于涉及信息量十分龐大,用戶訪問的頻率也高,許多基于Web的大型公共信息系統(tǒng)(如電子圖書館、BBS、搜索引擎和遠(yuǎn)程教育等)需要在實(shí)時(shí)性和吞吐量方面都具有較高性能的Web服務(wù)器支持。一些熱門的Web站點(diǎn)由于負(fù)荷過重而變的反應(yīng)遲緩。如何提高Web服務(wù)器的性能和效率成為一個(gè)亟待解決的問題。     實(shí)際上,服務(wù)器的處理能力和I/O已經(jīng)成為提高Web服務(wù)的瓶頸。如果客戶的增多導(dǎo)致通信量超出了服務(wù)器能承受的范圍,那么其結(jié)果必然是服務(wù)質(zhì)量下降。顯然單臺服務(wù)器有限的性能不可能解決這個(gè)

3、問題,一臺普通服務(wù)器的處理能力只能達(dá)到每秒幾萬個(gè)到幾十萬個(gè)請求,無法在一秒內(nèi)處理上百萬個(gè)甚至更多的請求。顯然,采用高性能的主機(jī)系統(tǒng)(小型機(jī)或大型機(jī))是可行的,但是除了價(jià)格十分昂貴外,這種高速、高性能的主機(jī)系統(tǒng),很多情況下也不能解決同時(shí)處理幾萬個(gè)并發(fā),因?yàn)椋咚僦鳈C(jī)系統(tǒng)只是對于復(fù)雜的單一任務(wù)和有限的并發(fā)處理顯得高性能,而Internet中的Web服務(wù)器大多數(shù)處理是“簡單任務(wù)”、高強(qiáng)度并發(fā)處理,因此即便有大資金投入高性能、高價(jià)格的主機(jī)系統(tǒng),也不能很好的滿足Web應(yīng)用的需要。這就是利用Web服務(wù)器集群實(shí)現(xiàn)負(fù)載均衡的最初基本設(shè)計(jì)思想1。 1 負(fù)載均衡集群     高擴(kuò)展型

4、集群,即負(fù)載均衡集群技術(shù)2,就是帶均衡策略(算法)的服務(wù)器集群。負(fù)載均衡集群在多節(jié)點(diǎn)之間按照一定的策略(算法)分發(fā)網(wǎng)絡(luò)或計(jì)算處理負(fù)載。負(fù)載均衡建立在現(xiàn)有網(wǎng)絡(luò)結(jié)構(gòu)之上,它提供了一種廉價(jià)有效的方法來擴(kuò)展服務(wù)器帶寬,增加吞吐量,提高數(shù)據(jù)處理能力,同時(shí)又可以避免單點(diǎn)故障3。     以Web訪問為例,后臺的多個(gè)Web服務(wù)器上面有相同的Web內(nèi)容,Internet客戶端的訪問請求首先進(jìn)入一臺服務(wù)器,由它根據(jù)負(fù)載均衡策略(算法)合理地分配給某個(gè)服務(wù)器4。 1.1 基于WebLogic的負(fù)載均衡集群     WebLogic支持集群技術(shù),即讓一組S

5、erver指向同一域名一起工作從而提供一個(gè)更強(qiáng)大、更可靠的應(yīng)用平臺。對于客戶端而言,無論Cluster中有幾個(gè)Server在工作,看上去都是一個(gè)5。集群技術(shù)有兩個(gè)最明顯的特色:     (1)可伸縮性:Cluster對加入其中的Server在性能上沒有限制(如普通的PC機(jī)),為了提高性能,當(dāng)客戶端的請求大幅增加時(shí),可以動(dòng)態(tài)地向Cluster中添加Server。并且,配置Cluster當(dāng)一臺機(jī)器的資源沒有被完全利用時(shí),可以在同一機(jī)器上啟動(dòng)多個(gè)Server,但要求每一個(gè)Server使用不同的IP,而不能用同一IP的不同端口。     (2

6、)高可用性:由于在Cluster中同一service在多個(gè)Server上同時(shí)存放或放在一個(gè)共享文件系統(tǒng)中,因此相同的請求可以有多個(gè)Server提供,并且Server間還可以復(fù)制狀態(tài)信息。這樣,當(dāng)其中某一Server宕機(jī)或無法響應(yīng)請求時(shí),其它的Server會立即接管它的任務(wù),從而把應(yīng)用和客戶端完全隔離開來。 1.2  WebLogic 集群的工作機(jī)制     每一個(gè)Clustered service,在每一個(gè)server上都會有一個(gè)instance,即一個(gè)replica,這些replicas集合在一起形成一個(gè)replica-aware stub。這些stu

7、bs負(fù)責(zé)客戶端與相關(guān)的服務(wù)器段對象的通信,當(dāng)客戶端請求該service時(shí),實(shí)際上是向stub發(fā)出請求,stub根據(jù)不同的算法調(diào)用集合中某一replica,如果調(diào)用失敗,stub會檢測到錯(cuò)誤并重新調(diào)用其它的replica。Cluster支持多種算法:隨機(jī)、輪循、基于性能的負(fù)載均衡的輪循(Weight-based round-robin)、根據(jù)參數(shù)值調(diào)用(Parameter-based routing)。     WebLogic Cluster通過負(fù)載均衡和容錯(cuò)最大程度的實(shí)現(xiàn)了它的可伸縮性和可用性。6 為了提高Cluster的可伸縮性,必須保證充分利用每一個(gè)Serv

8、er。WebLogic可以在不同平臺、不同性能的機(jī)器上安裝Server并進(jìn)行Cluster,然后采用Weight-based round-robin算法達(dá)到負(fù)載均衡,從而使每一個(gè)Server都得到充分的利用。     為了使Cluster具有高可用性,必須具備故障恢復(fù)的能力,這一點(diǎn)可以通過replica-aware stub的容錯(cuò)功能來實(shí)現(xiàn)。Stub 主要是通過在檢測到錯(cuò)誤信息時(shí)重新進(jìn)行調(diào)用的方式實(shí)現(xiàn)容錯(cuò)。當(dāng)重新調(diào)用不會導(dǎo)致錯(cuò)誤的結(jié)果時(shí)(如stub確認(rèn)failed server不能接收到請求),容錯(cuò)功能自動(dòng)實(shí)現(xiàn)。而有些情況下,重新調(diào)用可能會導(dǎo)致某一service被

9、請求了多次的錯(cuò)誤結(jié)果。例如:客戶端C請求Clustered購物車服務(wù)中的additem()方法,replica-aware stub接收到請求,根據(jù)算法調(diào)用Server1上的service,Server1響應(yīng)請求并返回結(jié)果,但在結(jié)果成功到達(dá)客戶端之前,Server1出現(xiàn)錯(cuò)誤。此時(shí)stub接收到錯(cuò)誤信息,因此重新調(diào)用Server2上的這一方法,但實(shí)際上Server1已經(jīng)將item加入購物車,這樣就造成重復(fù)。為了解決這種問題,可以為服務(wù)添加一個(gè)唯一標(biāo)識,如上述的additem()方法中可添加一個(gè)參數(shù)序列號。每一個(gè)item有一個(gè)唯一的sequence,相同sequence的item不能被重復(fù)添加。

10、2 構(gòu)建WebLogic集群 2.1  Domain和Server     Domain是WebLogic Server實(shí)例的基本管理單元。所謂Domain就是,由配置為Administrator Server的WebLogic Server實(shí)例管理的邏輯單元,這個(gè)單元是有所有相關(guān)資源的集合。     Server是一個(gè)相對獨(dú)立的,為實(shí)現(xiàn)某些特定功能而結(jié)合在一起的單元。7     一個(gè)Domain 可以包含一個(gè)或多個(gè)WebLogic Server實(shí)例,甚至是Server集群。一個(gè)Domain中有

11、一個(gè)且只能有一個(gè)Server 擔(dān)任管理Server的功能,其它的Server具體實(shí)現(xiàn)一個(gè)特定的邏輯功能。 2.2  系統(tǒng)實(shí)現(xiàn)方案     在此,操作系統(tǒng)平臺使用Windows 2000,軟件使用Bea WebLogic Server 8.1 SP2,程序基于J2EE架構(gòu),有以下兩種方案:     a單層混合型的集群架構(gòu)(Cluster)     這種架構(gòu)將所有的Web應(yīng)用以及相關(guān)的服務(wù)應(yīng)用全部置于集群中的單一WLS實(shí)例中,這種架構(gòu)的優(yōu)勢在于:     易于管理; &

12、#160;   靈活的負(fù)載平衡機(jī)制;     更強(qiáng)的安全控制;     b多層結(jié)構(gòu)的集群架構(gòu)(Cluster)     這種架構(gòu)使用兩個(gè)WLS集群,一個(gè)放置表靜態(tài)內(nèi)容和集群Servlet,另一個(gè)放置集群EJB。一般應(yīng)用于下面這些情況: (1)在負(fù)載平衡機(jī)制需要調(diào)用集群EJB中的方法時(shí); (2)在提供內(nèi)容與提供對象的服務(wù)之間需要更大的機(jī)動(dòng)性時(shí); (3)在需要更高的系統(tǒng)穩(wěn)定性時(shí); 2.3 集群應(yīng)用的必要條件     集群中的所有Server必須位于同一網(wǎng)段,并

13、且必須是IP廣播(UDP)可到達(dá)的。8     集群中的所有Server必須使用相同的版本,包括Service Pack。     集群中的Server必須使用永久的靜態(tài)IP地址。動(dòng)態(tài)IP地址分配不能用于集群環(huán)境。如果服務(wù)器位于防火墻后面,而客戶機(jī)位于防火墻外面,那么服務(wù)器必須有公共的靜態(tài)IP地址,只有這樣,客戶端才能訪問服務(wù)器。  論文出處(作者):要以Cluster方式運(yùn)行,必須有包含Cluster許可的License。 3 系統(tǒng)實(shí)現(xiàn)及壓力測試     在配置集群應(yīng)用前要對集群的配置信息有一

14、個(gè)良好的設(shè)計(jì),下面就是我們配置的集群信息。如圖1: 圖1 集群配置信息 機(jī)器類型操作系統(tǒng)硬件配置角色DELL PCWindows 2000IP: PORT:7080Administrat or ServerDELL PCWindows 2000IP: PORT:8080Proxy ServerDELL PCWindows 2000IP: PORT:7082Managed ServerDELL PCWindows 2000IP:1 PORT:7084Managed ServerDELL PCWindows 2000I

15、P:2 PORT:7086Managed ServerDELL PCWindows 2000IP:3 PORT:7088Managed Server    我們使用了四臺DELL-PC機(jī)器,其中每個(gè)機(jī)器都作Managed Server,而選擇其中一臺機(jī)器兼作Administrator Server和Proxy Server。     管理服務(wù)器(Administration Server)是一個(gè)WebLogic 服務(wù)器實(shí)例,它負(fù)責(zé)配置與管理同一個(gè)域里的其它WebLogic Server 實(shí)例。管

16、理服務(wù)器實(shí)例的意外中止對整個(gè)域的運(yùn)行沒有什么影響。當(dāng)一個(gè)管理服務(wù)停止了,它所管理的其它服務(wù)實(shí)例(集群的或未集群的)都能正常運(yùn)行。如果在這個(gè)域里存在有集群,集群提供的Failover和負(fù)載均衡服務(wù)也能夠繼續(xù)而不受影響。9     代理服務(wù)器(Proxy Server)是整個(gè)網(wǎng)站系統(tǒng)的總?cè)肟冢ê途W(wǎng)站的域名對應(yīng)),它接受web server上所有請求,并轉(zhuǎn)給集群中的某一個(gè)Managed Server。Proxy對cluster的所有請求進(jìn)行負(fù)載均衡,并且當(dāng)請求失敗時(shí)會進(jìn)行恢復(fù)處理。Proxy還可以在cluster中特別是Server沒有正常完成請求響應(yīng)時(shí)保持sessio

17、n狀態(tài)。當(dāng)session初始化時(shí),proxy按照負(fù)載均衡算法選擇一臺Server保存session,此后,所有與此session相關(guān)的請求都由這同一臺Server處理。為了避免當(dāng)此Server出錯(cuò)時(shí),無法保存客戶端狀態(tài)信息,所以session會被復(fù)制下來,并且session的所有變化都會在備份中進(jìn)行及時(shí)更新,這樣,當(dāng)原有Server在響應(yīng)請求過程中失敗時(shí),proxy會立即獲取session的備份,并由此繼續(xù)響應(yīng)客戶端請求,同時(shí)做新的復(fù)制。     Managed Server上部署了網(wǎng)站的應(yīng)用程序,用于執(zhí)行Proxy Server分發(fā)過來的用戶請求。 我們對以上的

18、集群系統(tǒng)進(jìn)行了測試,編寫了一個(gè)簡單的WEB應(yīng)用,它會在控制臺和瀏覽器上同時(shí)打印出“OK”字樣,然后將這個(gè)WEB應(yīng)用部署到集群中所有Managed Server上面。在這里我們將通過Apache中所帶的ab包來進(jìn)行并發(fā)訪問的模擬測試,使用如下的命令進(jìn)行壓力測試。 ab -n 100 -c 10 :8080/index.jsp     ab是測試程序的名稱     參數(shù)n代表請求的總數(shù)量     參數(shù)c代表并發(fā)的請求數(shù)     url為要測試壓力的

19、頁面     使用這個(gè)命令時(shí),一定要在系統(tǒng)路徑中能夠找到該程序,否則不能執(zhí)行。我們?nèi)≌埱蟮目倲?shù)量n等于100,壓力測試完成后,我們從Managed Server的控制臺上可以看到,nodeA,nodeB,nodeC,nodeD(即四個(gè)Managed Server)分別打印出了27、23、24、26個(gè)“OK”字樣,這說明,在并發(fā)請求的情況下,集群能夠?qū)⒄埱筮M(jìn)行分發(fā),達(dá)到了負(fù)載平衡的目的。     另外,我們編寫了一個(gè)簡單的購物車程序,該系統(tǒng)能夠在某一臺機(jī)器宕機(jī)后把seesion轉(zhuǎn)交給其他機(jī)器,達(dá)到了故障接管的目的,增加了Web系統(tǒng)的高可

20、用性。 4 系統(tǒng)故障分析     我們經(jīng)常會遇到HTTP 請求在 WebLogic 集群節(jié)點(diǎn)之間的負(fù)載平衡不均,即,集群中一個(gè)或多個(gè)節(jié)點(diǎn)接收和執(zhí)行的 HTTP 請求比同一集群中的其它節(jié)點(diǎn)多。     發(fā)生這種情況的原因是由于 HTTP 會話分配不均。代理將不包含會話 cookie 的請求轉(zhuǎn)發(fā)到基于 round-robin 負(fù)載平衡模式的集群節(jié)點(diǎn),并在該節(jié)點(diǎn)上創(chuàng)建新會話。8理想狀態(tài)下,所有集群節(jié)點(diǎn)應(yīng)當(dāng)接收等量的 HTTP 會話。如果沒有出現(xiàn)這種情況,則由于負(fù)載平衡策略的“粘性”特點(diǎn),接收較多會話的節(jié)點(diǎn)將得到比其它節(jié)點(diǎn)數(shù)量更多的請求。最終

21、結(jié)果是造成集群節(jié)點(diǎn)之間負(fù)載分配不均。遇到這種問題,可以查看代理插件的有關(guān)信息是否正常。     另一個(gè)經(jīng)常遇到的問題是會話復(fù)制失敗。會話復(fù)制失敗通常是因?yàn)榫W(wǎng)絡(luò)組播問題引起的。有時(shí)候,配置問題也會導(dǎo)致失敗。此外,確保輸入到會話中的數(shù)據(jù)必須是可序列化的,否則復(fù)制可能會失敗。編碼的時(shí)候也應(yīng)該注意,比如不要使用 http 會話的 putValue 和removeValue 方法,因?yàn)樗鼈儾皇苤С?,并且?dāng)您在應(yīng)用程序中使用這些方法時(shí),可能會出現(xiàn)會話數(shù)據(jù)復(fù)制問題。相反,僅使用 HttpSession 的setAttribute和removeAttribute 方法。10     此外,還需要注意靜態(tài)變量的使用,緩存同步,EJB、Servlet、JSP同步等,在單機(jī)環(huán)境下不會發(fā)生變化的值在集群環(huán)境下有可能會發(fā)生變化。 5 結(jié)束語     本文提出了一種基于WebLogic的集群Web服務(wù)器的設(shè)計(jì)方案,通過壓力測試,系統(tǒng)能夠達(dá)到

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論