下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
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ù)載問題。本文對(duì)系統(tǒng)進(jìn)行了壓力測(cè)試,實(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ì)量下降。顯然單臺(tái)服務(wù)器有限的性能不可能解決這個(gè)
3、問題,一臺(tái)普通服務(wù)器的處理能力只能達(dá)到每秒幾萬個(gè)到幾十萬個(gè)請(qǐng)求,無法在一秒內(nèi)處理上百萬個(gè)甚至更多的請(qǐng)求。顯然,采用高性能的主機(jī)系統(tǒng)(小型機(jī)或大型機(jī))是可行的,但是除了價(jià)格十分昂貴外,這種高速、高性能的主機(jī)系統(tǒng),很多情況下也不能解決同時(shí)處理幾萬個(gè)并發(fā),因?yàn)?,高速主機(jī)系統(tǒng)只是對(duì)于復(fù)雜的單一任務(wù)和有限的并發(fā)處理顯得高性能,而Internet中的Web服務(wù)器大多數(shù)處理是“簡(jiǎn)單任務(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訪問為例,后臺(tái)的多個(gè)Web服務(wù)器上面有相同的Web內(nèi)容,Internet客戶端的訪問請(qǐng)求首先進(jìn)入一臺(tái)服務(wù)器,由它根據(jù)負(fù)載均衡策略(算法)合理地分配給某個(gè)服務(wù)器4。 1.1 基于WebLogic的負(fù)載均衡集群 WebLogic支持集群技術(shù),即讓一組S
5、erver指向同一域名一起工作從而提供一個(gè)更強(qiáng)大、更可靠的應(yīng)用平臺(tái)。對(duì)于客戶端而言,無論Cluster中有幾個(gè)Server在工作,看上去都是一個(gè)5。集群技術(shù)有兩個(gè)最明顯的特色: (1)可伸縮性:Cluster對(duì)加入其中的Server在性能上沒有限制(如普通的PC機(jī)),為了提高性能,當(dāng)客戶端的請(qǐng)求大幅增加時(shí),可以動(dòng)態(tài)地向Cluster中添加Server。并且,配置Cluster當(dāng)一臺(tái)機(jī)器的資源沒有被完全利用時(shí),可以在同一機(jī)器上啟動(dòng)多個(gè)Server,但要求每一個(gè)Server使用不同的IP,而不能用同一IP的不同端口。 (2
6、)高可用性:由于在Cluster中同一service在多個(gè)Server上同時(shí)存放或放在一個(gè)共享文件系統(tǒng)中,因此相同的請(qǐng)求可以有多個(gè)Server提供,并且Server間還可以復(fù)制狀態(tài)信息。這樣,當(dāng)其中某一Server宕機(jī)或無法響應(yīng)請(qǐng)求時(shí),其它的Server會(huì)立即接管它的任務(wù),從而把應(yīng)用和客戶端完全隔離開來。 1.2 WebLogic 集群的工作機(jī)制 每一個(gè)Clustered service,在每一個(gè)server上都會(huì)有一個(gè)instance,即一個(gè)replica,這些replicas集合在一起形成一個(gè)replica-aware stub。這些stu
7、bs負(fù)責(zé)客戶端與相關(guān)的服務(wù)器段對(duì)象的通信,當(dāng)客戶端請(qǐng)求該service時(shí),實(shí)際上是向stub發(fā)出請(qǐng)求,stub根據(jù)不同的算法調(diào)用集合中某一replica,如果調(diào)用失敗,stub會(huì)檢測(cè)到錯(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可以在不同平臺(tái)、不同性能的機(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 主要是通過在檢測(cè)到錯(cuò)誤信息時(shí)重新進(jìn)行調(diào)用的方式實(shí)現(xiàn)容錯(cuò)。當(dāng)重新調(diào)用不會(huì)導(dǎo)致錯(cuò)誤的結(jié)果時(shí)(如stub確認(rèn)failed server不能接收到請(qǐng)求),容錯(cuò)功能自動(dòng)實(shí)現(xiàn)。而有些情況下,重新調(diào)用可能會(huì)導(dǎo)致某一service被
9、請(qǐng)求了多次的錯(cuò)誤結(jié)果。例如:客戶端C請(qǐng)求Clustered購物車服務(wù)中的additem()方法,replica-aware stub接收到請(qǐng)求,根據(jù)算法調(diào)用Server1上的service,Server1響應(yīng)請(qǐng)求并返回結(jié)果,但在結(jié)果成功到達(dá)客戶端之前,Server1出現(xiàn)錯(cuò)誤。此時(shí)stub接收到錯(cuò)誤信息,因此重新調(diào)用Server2上的這一方法,但實(shí)際上Server1已經(jīng)將item加入購物車,這樣就造成重復(fù)。為了解決這種問題,可以為服務(wù)添加一個(gè)唯一標(biāo)識(shí),如上述的additem()方法中可添加一個(gè)參數(shù)序列號(hào)。每一個(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è)相對(duì)獨(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)平臺(tái)使用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)勢(shì)在于: 易于管理; &
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)容與提供對(duì)象的服務(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)及壓力測(cè)試 在配置集群應(yīng)用前要對(duì)集群的配置信息有一
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 我們使用了四臺(tái)DELL-PC機(jī)器,其中每個(gè)機(jī)器都作Managed Server,而選擇其中一臺(tái)機(jī)器兼作Administrator Server和Proxy Server。 管理服務(wù)器(Administration Server)是一個(gè)WebLogic 服務(wù)器實(shí)例,它負(fù)責(zé)配置與管理同一個(gè)域里的其它WebLogic Server 實(shí)例。管
16、理服務(wù)器實(shí)例的意外中止對(duì)整個(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)站的域名對(duì)應(yīng)),它接受web server上所有請(qǐng)求,并轉(zhuǎn)給集群中的某一個(gè)Managed Server。Proxy對(duì)cluster的所有請(qǐng)求進(jìn)行負(fù)載均衡,并且當(dāng)請(qǐng)求失敗時(shí)會(huì)進(jìn)行恢復(fù)處理。Proxy還可以在cluster中特別是Server沒有正常完成請(qǐng)求響應(yīng)時(shí)保持sessio
17、n狀態(tài)。當(dāng)session初始化時(shí),proxy按照負(fù)載均衡算法選擇一臺(tái)Server保存session,此后,所有與此session相關(guān)的請(qǐng)求都由這同一臺(tái)Server處理。為了避免當(dāng)此Server出錯(cuò)時(shí),無法保存客戶端狀態(tài)信息,所以session會(huì)被復(fù)制下來,并且session的所有變化都會(huì)在備份中進(jìn)行及時(shí)更新,這樣,當(dāng)原有Server在響應(yīng)請(qǐng)求過程中失敗時(shí),proxy會(huì)立即獲取session的備份,并由此繼續(xù)響應(yīng)客戶端請(qǐng)求,同時(shí)做新的復(fù)制。 Managed Server上部署了網(wǎng)站的應(yīng)用程序,用于執(zhí)行Proxy Server分發(fā)過來的用戶請(qǐng)求。 我們對(duì)以上的
18、集群系統(tǒng)進(jìn)行了測(cè)試,編寫了一個(gè)簡(jiǎn)單的WEB應(yīng)用,它會(huì)在控制臺(tái)和瀏覽器上同時(shí)打印出“OK”字樣,然后將這個(gè)WEB應(yīng)用部署到集群中所有Managed Server上面。在這里我們將通過Apache中所帶的ab包來進(jìn)行并發(fā)訪問的模擬測(cè)試,使用如下的命令進(jìn)行壓力測(cè)試。 ab -n 100 -c 10 :8080/index.jsp ab是測(cè)試程序的名稱 參數(shù)n代表請(qǐng)求的總數(shù)量 參數(shù)c代表并發(fā)的請(qǐng)求數(shù) url為要測(cè)試壓力的
19、頁面 使用這個(gè)命令時(shí),一定要在系統(tǒng)路徑中能夠找到該程序,否則不能執(zhí)行。我們?nèi)≌?qǐng)求的總數(shù)量n等于100,壓力測(cè)試完成后,我們從Managed Server的控制臺(tái)上可以看到,nodeA,nodeB,nodeC,nodeD(即四個(gè)Managed Server)分別打印出了27、23、24、26個(gè)“OK”字樣,這說明,在并發(fā)請(qǐng)求的情況下,集群能夠?qū)⒄?qǐng)求進(jìn)行分發(fā),達(dá)到了負(fù)載平衡的目的。 另外,我們編寫了一個(gè)簡(jiǎn)單的購物車程序,該系統(tǒng)能夠在某一臺(tái)機(jī)器宕機(jī)后把seesion轉(zhuǎn)交給其他機(jī)器,達(dá)到了故障接管的目的,增加了Web系統(tǒng)的高可
20、用性。 4 系統(tǒng)故障分析 我們經(jīng)常會(huì)遇到HTTP 請(qǐng)求在 WebLogic 集群節(jié)點(diǎn)之間的負(fù)載平衡不均,即,集群中一個(gè)或多個(gè)節(jié)點(diǎn)接收和執(zhí)行的 HTTP 請(qǐng)求比同一集群中的其它節(jié)點(diǎn)多。 發(fā)生這種情況的原因是由于 HTTP 會(huì)話分配不均。代理將不包含會(huì)話 cookie 的請(qǐng)求轉(zhuǎn)發(fā)到基于 round-robin 負(fù)載平衡模式的集群節(jié)點(diǎn),并在該節(jié)點(diǎn)上創(chuàng)建新會(huì)話。8理想狀態(tài)下,所有集群節(jié)點(diǎn)應(yīng)當(dāng)接收等量的 HTTP 會(huì)話。如果沒有出現(xiàn)這種情況,則由于負(fù)載平衡策略的“粘性”特點(diǎn),接收較多會(huì)話的節(jié)點(diǎn)將得到比其它節(jié)點(diǎn)數(shù)量更多的請(qǐng)求。最終
21、結(jié)果是造成集群節(jié)點(diǎn)之間負(fù)載分配不均。遇到這種問題,可以查看代理插件的有關(guān)信息是否正常。 另一個(gè)經(jīng)常遇到的問題是會(huì)話復(fù)制失敗。會(huì)話復(fù)制失敗通常是因?yàn)榫W(wǎng)絡(luò)組播問題引起的。有時(shí)候,配置問題也會(huì)導(dǎo)致失敗。此外,確保輸入到會(huì)話中的數(shù)據(jù)必須是可序列化的,否則復(fù)制可能會(huì)失敗。編碼的時(shí)候也應(yīng)該注意,比如不要使用 http 會(huì)話的 putValue 和removeValue 方法,因?yàn)樗鼈儾皇苤С?,并且?dāng)您在應(yīng)用程序中使用這些方法時(shí),可能會(huì)出現(xiàn)會(huì)話數(shù)據(jù)復(fù)制問題。相反,僅使用 HttpSession 的setAttribute和removeAttribute 方法。10 此外,還需要注意靜態(tài)變量的使用,緩存同步,EJB、Servlet、JSP同步等,在單機(jī)環(huán)境下不會(huì)發(fā)生變化的值在集群環(huán)境下有可能會(huì)發(fā)生變化。 5 結(jié)束語 本文提出了一種基于WebLogic的集群Web服務(wù)器的設(shè)計(jì)方案,通過壓力測(cè)試,系統(tǒng)能夠達(dá)到
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 低維雜化鈣鈦礦的設(shè)計(jì)、合成及X射線探測(cè)性能研究
- 乳牙疾病的治療與預(yù)防
- 用于微波加熱的能量輻射控制技術(shù)研究
- 二零二五年度企業(yè)內(nèi)部管理授權(quán)委托書模板與字號(hào)規(guī)范9篇
- 二零二五年度高端離婚協(xié)議書模板(含子女撫養(yǎng)及財(cái)產(chǎn)分割)2篇
- 二零二五年度健身貸款押證不押車合同助力健身行業(yè)騰飛6篇
- 二零二五版寵物服務(wù)行紀(jì)委托居間服務(wù)合同2篇
- 學(xué)會(huì)正確理解命題意圖
- 二零二五版施工現(xiàn)場(chǎng)環(huán)保責(zé)任追究與賠償協(xié)議3篇
- 二零二五版同居協(xié)議樣本:同居伴侶共同生活及財(cái)產(chǎn)權(quán)益保障合同18篇
- 第02講 導(dǎo)數(shù)與函數(shù)的單調(diào)性(教師版)-2025版高中數(shù)學(xué)一輪復(fù)習(xí)考點(diǎn)幫
- 2024屆新高考語文高中古詩文必背72篇 【原文+注音+翻譯】
- 中華人民共和國學(xué)前教育法
- 2024年高考八省聯(lián)考地理適應(yīng)性試卷附答案解析
- 三年級(jí)(下冊(cè))西師版數(shù)學(xué)全冊(cè)重點(diǎn)知識(shí)點(diǎn)
- 足浴技師與店內(nèi)禁止黃賭毒協(xié)議書范文
- 期末練習(xí)卷(試題)-2024-2025學(xué)年四年級(jí)上冊(cè)數(shù)學(xué)滬教版
- 中國高血壓防治指南(2024年修訂版)要點(diǎn)解讀
- 2024-2030年中國光電干擾一體設(shè)備行業(yè)發(fā)展現(xiàn)狀與前景預(yù)測(cè)分析研究報(bào)告
- 小學(xué)三年級(jí)下冊(cè)奧數(shù)題100道附答案
- 四年級(jí)數(shù)學(xué)脫式計(jì)算練習(xí)題100道
評(píng)論
0/150
提交評(píng)論