




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、JBOSS服務(wù)器中的負(fù)載平衡機(jī)制實現(xiàn)詳解作 者 姓 名:魏翼如學(xué) 號:專 業(yè) 名 稱:研控計1014華 北 電 力 大 學(xué)2011年4月負(fù)載均衡 負(fù)載平衡也稱負(fù)載共享,是指對系統(tǒng)中的負(fù)載情況進(jìn)行動態(tài)調(diào)整,以盡量消除或減少系統(tǒng)中各站點(diǎn)負(fù)載不均勻的現(xiàn)象。具體的實現(xiàn)方法是將重載站點(diǎn)上的任務(wù)轉(zhuǎn)移到其他輕載站點(diǎn)上,盡可能實現(xiàn)系統(tǒng)中各站點(diǎn)的負(fù)載平衡,從而提高系統(tǒng)的吞吐量。JBOSS服務(wù)器中的負(fù)載平衡機(jī)制Jboss的負(fù)載均衡目前有兩種方案,一是使用apache的mod_jk,二是使用jboss自帶的負(fù)載均衡模塊下面分別講解這兩種配置mod_jk的配置(1)請確認(rèn)%apache%modules下已經(jīng)有mod_
2、jk-1.2.25-httpd-2.2.4.so文件(2)修改%apache%confhttpd.conf在文件末尾添加:Include conf/mod_jk2.conf(3)在%apache%conf下新建文件mod_jk2.conf文件內(nèi)容如下:1. #Loadmod_jkmodule.Specifythefilename 2. #ofthemod_jklibyouvedownloadedand 3. #installedintheprevioussection 4. LoadModulejk_modulemodules/mod_jk-1.2.25-httpd-2.2.4.so 5. #
3、Wperties 6. JkWorkersFileconf/perties 7. #Wheretoputjklogs 8. JkLogFilelogs/mod_jk.log 9. #Setthejklogleveldebug/error/info 10. JkLogLevelinfo 11. #Selectthelogformat 12. JkLogStampFormat%a%b%d%H:%M:%S%Y 13. #JkOptionsindicatetosendSSLKEYSIZE, 14. JkOptions+ForwardKe
4、ySize+ForwardURICompat-ForwardDirectories 15. #JkRequestLogFormatsettherequestformat 16. JkRequestLogFormat%w%V%T 17. JkMount/*loadbalancer其中JkMount /* loadbalancer的意思是,把所有的請求都發(fā)給loadbalancer處理可以通過修改url來控制發(fā)送某些request (4)在%apache%conf下新建文件perties其內(nèi)容為:worker.list=loadbalancer,server1,server
5、21. #Definethefirstnode. 2. worker.server1.port=80093. worker.server1.host= 4. worker.server1.type=ajp135. worker.server1.lbfactor=1 6. worker.server1.local_worker=1 7. worker.server1.cachesize=108. 9. #Definethefirstnode. 10. worker.server2.port=800911. worker.server2.host= 12
6、. worker.server2.type=ajp1313. worker.server2.lbfactor=114. worker.server2.local_worker=115. worker.server2.cachesize=1016. 17. #Nowwedefinetheload-balancingbehaviour 18. worker.loadbalancer.type=lb19. worker.loadbalancer.balance_workers=server1,server2 20. worker.loadbalancer.sticky_session=1其中對于no
7、de的命名規(guī)則是worker.節(jié)點(diǎn)名.xxxx所以上述文件定義了兩個節(jié)點(diǎn):server1和server28009端口是jboss默認(rèn)的ajp端口,另外需要注意的是worker.server2.lbfactor參數(shù),它是節(jié)點(diǎn)的負(fù)載加權(quán),它的值越大,獲得負(fù)載的機(jī)會就越大可以根據(jù)node的硬件性能進(jìn)行調(diào)整worker.loadbalancer.sticky_session參數(shù)是指定是否使用粘性session所有需要負(fù)載均衡的節(jié)點(diǎn),都在worker.loadbalancer.balanced_workers參數(shù)中列舉出來所有node的名稱都對應(yīng)著某臺機(jī)器,后面的配置中也會使用嘗試啟動apache:%a
8、pachebinapache.exe,正常情況下沒有任何提示(5)Jboss自帶均衡器的配置將文件夾%jboss%docsexamplesvarialoadbalancerloadbalancer.sar拷貝到%jboss%serveralldeploy下,并且修改loadbalancer.sarloadbalancer.sarMETA-INFjboss-service.xml,在標(biāo)簽中類出所有節(jié)點(diǎn),在標(biāo)簽中指定是否使用粘性session配置完成該均衡器的缺點(diǎn)是負(fù)載能力相對不高,配置參數(shù)太少,比如無法指定不同節(jié)點(diǎn)的負(fù)載加權(quán),所以后面都以mod_jk為例負(fù)載均衡的配置基本完成,啟動jboss,其
9、中過程中會列出DefaultPatition中所有的節(jié)點(diǎn):run.bat -c all。任何節(jié)點(diǎn)的關(guān)閉與啟動都會在cluster中廣播,比如加如一個新節(jié)點(diǎn)后,其他節(jié)點(diǎn)會得到提示(6)Jboss負(fù)載均衡的session sticky配置apache會以粘性session的方式分發(fā)請求部署一個應(yīng)用測試一下,會發(fā)現(xiàn)粘性session沒有起作用因為我們還沒有給jboss配置jvm路由( jvmRoute),apache就無法知道究竟哪些session是屬于哪個節(jié)點(diǎn)的繼續(xù):修改server1機(jī)器上的jboss的配置文件:%jboss%serverdefaultdeployjboss-web.deploy
10、er META-INF jboss-service.xml在110行有:false,將它改為true在這行標(biāo)簽上面有一段注釋,要求在server.xml中必須有:Engine name=jboss.web jmvRoute=Node1 defaultHost=localhost下面需要修改server1上的%jboss%serverdefaultdeployjboss-web.deployer server.xml,在32行左右有:給它增加一個jvmRoute屬性:jvmRoute的值必須和mod_jk中的節(jié)點(diǎn)名字正確對應(yīng),否則無法正確路由Cluster中的所有節(jié)點(diǎn)都應(yīng)該做相應(yīng)的配置Jboss
11、的配置完成了,下面需要在web應(yīng)用中修改配置文件,讓它支持集群在WEB-INFweb.xml中加入屬性:Ok,基于用戶的cluster完成了,每個用戶會綁定都某個節(jié)點(diǎn)上進(jìn)行交互這種綁定是如何完成的呢?原來apache把客戶分發(fā)到節(jié)點(diǎn)后,該節(jié)點(diǎn)會在用戶的session id后面加上此節(jié)點(diǎn)的路由名稱,變成這個樣子:Efdfxxd98daja87daj76da2dka*,server1有了這個標(biāo)志,就能分辨該session屬于哪個節(jié)點(diǎn) (7)session replication配置下面要做的是基于request的cluster,也就讓各個節(jié)點(diǎn)之間互相復(fù)制session狀態(tài)有兩種復(fù)制模式,同步與異步
12、使用同步的方式,jboss會把session復(fù)制的操作和對request的響應(yīng)放到一個應(yīng)用事務(wù)(application transaction),session復(fù)制完成后才去處理request異步復(fù)制則發(fā)送session復(fù)制的消息后馬上處理request,session復(fù)制則會稍有延遲但是在多框架的web頁面中,這樣的集群方式會有問題由于frame在同一時間發(fā)出多個request,會造成一些混亂,這也是采用基于用戶的集群方式的原因之一JBoss 4.0.2中采用了Jboss cache來實現(xiàn)session復(fù)制,實際上就是一個分布式緩存,由于session id中包含了jvm route,所以能
13、夠分辨session屬于哪個節(jié)點(diǎn)Session的更新類似于hibernate中的樂觀鎖,有了更新之后就讓session的版本號增加,其他節(jié)點(diǎn)通過對比版本號來決定是否同步session狀態(tài)配置session replication首先需要編輯18. %jboss%serveralldeployjbossweb-tomcat55.sarMETA-INFjboss-service.xml,88行左右有: 19. instant這就是剛才提到的復(fù)制模式,instant為立即復(fù)制,如果設(shè)為interval 那么系統(tǒng)會在延遲一段時間再進(jìn)行復(fù)制,時間長度在2000中指定,單位是毫秒單獨(dú)配置這一個地方還不夠,
14、在%jboss% serveralldeploy tc5-cluster-service.xml中有:REPL_ASYNC這里才真正決定復(fù)制是同步的還是異步的,可以指定為REPL_ASYNC(異步)或者REPL_SYNC(同步)之后Jboss負(fù)載均衡的配置在這個文件下面一點(diǎn),還有一個config標(biāo)簽,里面指定了各個節(jié)點(diǎn)在進(jìn)行session復(fù)制的時候如何通信,有udp和tcp兩種可選,如果使用udp方式,那么應(yīng)該將udp的lookback屬性指定為true,因為windows上有一個叫做media sense的東西會影響udp multicast如果采用tcp方式的話,應(yīng)該指定bind_addr
15、的值為本機(jī)ip,并且在TCPPING標(biāo)簽的initial_hosts屬性中列出所有節(jié)點(diǎn),格式是機(jī)器名端口號,比如在我的例子中,就應(yīng)該這樣配置tcp(以其中一個節(jié)點(diǎn)為例):20. 21. 22. 24. 25. 26. 27. 29. 30. 32. 33. JBoss的clustering版主建議盡量使用udp不過在Sobey內(nèi)部,建議使用tcp方式,經(jīng)測試可能有不明物體在影響udp通信,導(dǎo)致Timeout異常在%jboss% serveralldeploy cluster-service.xml中也有關(guān)于udp和tcp的配置信息,在4.0以前版本的jboss中,會以這個文件為主配置,4.0以
16、后都以tc5-cluster-service.xml為主配置Jboss的配置完成了,最后需要在web應(yīng)用中增加配置信息,控制session復(fù)制的粒度在WEB-INFjboss-web.xml中增加以下內(nèi)容:34. 35. SET_AND_NON_PRIMITIVE_GET36. SESSION37. 其中replication-trigger是指定哪些操作引發(fā)session的版本更新,它的取值有:1. SET_AND_GET 2. SET_AND_NON_PRIMITIVE_GET 3. SETreplication-granularity是復(fù)制粒度,可以取session或attribute如果取為attribute有可能導(dǎo)致復(fù)制失敗,這是目前版本的jboss cache的一個bug,等待修正部署項目,測試,如果配置沒有問題,可以在%jboss%0serveralllogserver.log中發(fā)現(xiàn)類似于這樣的信息:DEBUG org.jboss.web.tomcat.tc5.session.JBossCacheManager check to see if ne
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 45222-2025食品安全事故應(yīng)急演練要求
- 上下鋪銷售合同范本
- 臨汾購房合同范本
- 2025年寧夏貨運(yùn)從業(yè)資格證模擬考
- 勞務(wù)派人員合同范本
- 代理經(jīng)紀(jì)服務(wù)合同范本
- 農(nóng)村水電改造施工合同范本
- 修房勞動安全合同范本
- 醬菜批發(fā)合同范本
- 包租協(xié)議合同范例
- 漁業(yè)行業(yè)智能化海洋牧場養(yǎng)殖方案
- 2025屆廣東省佛山一中石門中學(xué)高考沖刺押題(最后一卷)數(shù)學(xué)試卷含解析
- 《工程勘察設(shè)計收費(fèi)標(biāo)準(zhǔn)》(2002年修訂本)
- 《電腦的組成》課件
- 小紅書運(yùn)營培訓(xùn)
- 《債權(quán)法教學(xué)》課件
- 太傻天書(完整版)
- 【正版授權(quán)】 ISO 24089:2023/Amd 1:2024 EN Road vehicles - Software update engineering - Amendment 1
- SZSD01 0012-2024智能交通大數(shù)據(jù)底座數(shù)據(jù)采集規(guī)范
- 醫(yī)療服務(wù)價格政策培訓(xùn)
- 經(jīng)典廣告歌曲大全(109首)
評論
0/150
提交評論