文/李景奇 梁正和 張國(guó)寶
河海大學(xué):基于GLASSFISH的負(fù)載均衡設(shè)計(jì)
文/李景奇 梁正和 張國(guó)寶
利用負(fù)載均衡集群可以使多個(gè)應(yīng)用服務(wù)器實(shí)例并行工作,提高高性能服務(wù)器的資源利用率和應(yīng)用系統(tǒng)的負(fù)載能力。針對(duì)目前數(shù)字校園中管理信息系統(tǒng)運(yùn)行中存在的問(wèn)題,本文提出了基于Glassfish應(yīng)用服務(wù)器的負(fù)載均衡設(shè)計(jì)方案,以求達(dá)到節(jié)約成本、提高性能的目標(biāo)。
目前在高校中,管理信息系統(tǒng)的建設(shè)日益成為信息化的一項(xiàng)基本工作。管理信息系統(tǒng)作為軟件,根據(jù)不同的業(yè)務(wù)要求,有不同的硬件需求。高性能計(jì)算機(jī)運(yùn)行穩(wěn)定,配置高,性能優(yōu)越,成為管理信息系統(tǒng)基礎(chǔ)硬件的最佳選擇。但如何能利用好高性能計(jì)算機(jī),如何提高其利用率,減少硬件支出,同時(shí)提供高可靠的服務(wù),成為信息系統(tǒng)建設(shè)者的重要問(wèn)題。
河海大學(xué)自主研發(fā)了研究生信息管理系統(tǒng),用戶多,業(yè)務(wù)復(fù)雜,對(duì)應(yīng)用服務(wù)器要求高。目前運(yùn)行的系統(tǒng)環(huán)境是:浪潮16核64G內(nèi)存服務(wù)器,網(wǎng)絡(luò)操作系統(tǒng)是REDHATE LINUX5.5,中間件使用Glassfish應(yīng)用服務(wù)器。在使用中我們發(fā)現(xiàn),當(dāng)用戶量大時(shí)經(jīng)常出現(xiàn)應(yīng)用服務(wù)器反應(yīng)慢甚至死掉的情況。經(jīng)觀察,我們發(fā)現(xiàn)當(dāng)應(yīng)用服務(wù)器死掉后,機(jī)器仍在正常運(yùn)行,但其CPU及內(nèi)存使用率非常低。經(jīng)過(guò)認(rèn)真研究,發(fā)現(xiàn)存在的問(wèn)題在于:在Glassfish應(yīng)用服務(wù)器中只有一個(gè)獨(dú)立實(shí)例,即只有一個(gè)JVM在運(yùn)行。而JVM虛擬機(jī)的設(shè)置的內(nèi)存只有1G,而根據(jù)相關(guān)資料,JVM虛擬機(jī)的設(shè)置的內(nèi)存不宜設(shè)置過(guò)大或過(guò)小,以2G至3G為最佳。但我們硬件服務(wù)器是64G內(nèi)存,所以提高性能的關(guān)鍵是提高系統(tǒng)硬件的利用率,發(fā)揮高性能服務(wù)器的效率。通過(guò)調(diào)研,我們準(zhǔn)備采取軟件負(fù)載均衡,在單機(jī)上建立應(yīng)用服務(wù)器集群,建立多個(gè)實(shí)例,這樣就有多個(gè)JVM虛擬機(jī)同時(shí)工作,從而提高機(jī)器的利用率和系統(tǒng)的可用性。
本方案采用軟件負(fù)載均衡的方式,在高性能服務(wù)器中搭建應(yīng)用服務(wù)集群。在本方案中,前置監(jiān)聽服務(wù)器采用SJSWS(SUN JAVASYSTEM WEB SERVER) 7.0,中間件使用GLASSFISH V2.1。前置監(jiān)聽服務(wù)器通過(guò)一個(gè)實(shí)例監(jiān)聽服務(wù)器的80端口,然后對(duì)該端口的請(qǐng)求轉(zhuǎn)發(fā)到4個(gè)實(shí)例中,各實(shí)例各自獨(dú)立運(yùn)行Web應(yīng)用,分擔(dān)訪問(wèn)壓力。
建立集群和應(yīng)用服務(wù)器實(shí)例
1.啟動(dòng)domain1 :asadmin startdomain domain1。
2.建立節(jié)點(diǎn)代理nodeagent: asadmin create-node-agent --host localhost --port 4848 ng1。
3.建立集群cluster1:進(jìn)入管理界面在集群結(jié)點(diǎn)進(jìn)行添加,并將應(yīng)用程序、EJB、資源等目標(biāo)設(shè)置到cluster1上。
4.建立實(shí)例:進(jìn)入管理界面,點(diǎn)擊cluster1-實(shí)例,新建4個(gè)實(shí)例instance1、instance2、 instance3、 instance4。
配置前端監(jiān)聽服務(wù)器
1.安裝配置前端監(jiān)聽服務(wù)器:
下 載 安 裝sun java system web server7.0,(注:以下路徑對(duì)應(yīng)關(guān)系:
2.創(chuàng)建以下文件夾:
3.下載負(fù)載均衡插件:
下 載 地 址:http://dlc.sun.com. edgesuite.net/javaee5/external/Linux/aslb/ jars/aslb-9.1-MS4-b7.jar,解壓jar包,得到兩個(gè)壓縮文件,將兩個(gè)壓縮文件解壓到
4.安裝sun web server插件:
在解壓得到的lib包中,完成下列文件的拷貝:
5.配置sun web server:
在
##BEGIN EE LB Plug-in Parameters
Init fn="load-modules" shlib="webserver-install-dir/plugins/lbplugin/ bin/libpassthrough.so" funcs="initpassthrough,service-passthrough,nametrans-passthrough" Thread="no"
Init fn="init-passthrough"
##END EE LB Plug-in Parameters=
在
NameTrans fn="name-transpassthrough" name="lbplugin" configfile="loadbalancer.xml"
在該文件末尾,加上下列語(yǔ)句,
ObjectType fn="force-type" type="magnus-internal/lbplugin"
PathCheck fn="deny-existence" path="*/WEB-INF/*"
Service type="magnus-internal/ lbplugin" fn="service-passthrough"
Error reason="Bad Gateway" fn="senderror" uri="$docroot/badgateway.html"
為Glassfish應(yīng)用服務(wù)器添加負(fù)載均衡器
1.添加負(fù)載均衡器:點(diǎn)擊http負(fù)載均衡器-新建,設(shè)備主機(jī)localhost,端口80(端口號(hào)可以在web server 7下的 configserver.xml中http-listener設(shè)定)。然后將從Glassfish負(fù)載均衡器中導(dǎo)出的loadbalancer.xml 拷貝到
2.運(yùn)行服務(wù):首先啟動(dòng)Glassfish應(yīng)用服務(wù)器,然后啟動(dòng)sun web server ,同時(shí)啟動(dòng)web server的實(shí)例。這樣通過(guò)80端口訪問(wèn)服務(wù)器就能實(shí)現(xiàn)負(fù)載均衡。
Linux系統(tǒng)下實(shí)現(xiàn)時(shí)出現(xiàn)的問(wèn)題及解決方法
1.loopback問(wèn)題:集群設(shè)置后實(shí)例總是無(wú)法啟動(dòng),報(bào)37676端口無(wú)法連接。
解 決 辦 法: 修 改/etc/hosts, 把hostname的配置文件為靜態(tài)ip地址。在Linux 系統(tǒng)中,要將代理連接為集群,有一個(gè)特殊的前提條件。某些 Linux 安裝程序自動(dòng)將 localhost 條目設(shè)置網(wǎng)絡(luò)回送 IP 地址為127.0.0.1。因此必須設(shè)置系統(tǒng)的 IP 地址,以便為集群中的所有代理設(shè)置正確的地址。
2.無(wú)法啟動(dòng)webserver7的問(wèn)題:報(bào)共享庫(kù)錯(cuò)誤,無(wú)法寫入臨時(shí)文件。
解決辦法是將防火墻中的SeLinux禁用。
JVM參數(shù)
1.更改JVM運(yùn)行模式:將參數(shù)-client改為-server,默認(rèn)的是-client。在部署環(huán)境下,使用SERVER模式能提高運(yùn)行效率。
2.調(diào)整JVM堆大?。和扑]將最大值與最小值設(shè)置相等,使得JVM堆不會(huì)因動(dòng)態(tài)調(diào)整大小而消耗資源。推薦將大小都設(shè)置為2至3G,如參數(shù)Xms2048m, -Xmx2048m。大小也可以根據(jù)服務(wù)器內(nèi)存情況而定。一般不能太大,太大了會(huì)導(dǎo)致垃圾回收時(shí)間延長(zhǎng),而在垃圾回收時(shí)間里,系統(tǒng)會(huì)停止對(duì)外工作。也不能太小,太小經(jīng)常會(huì)導(dǎo)致內(nèi)存泄漏的問(wèn)題。
3.修改http.maxConnection:該參數(shù)表示最大空閑長(zhǎng)連接數(shù),默認(rèn)值是5,推薦設(shè)置為200以上,可以在jvm參數(shù)中直接增加新的一項(xiàng)“-Dhttp. maxConnections=250”。
HTTP服務(wù)參數(shù)
1.修改HTTP服務(wù)最大線程數(shù):HTTP服務(wù)為HTTP請(qǐng)求進(jìn)程提供了一個(gè)線程池,默認(rèn)計(jì)數(shù)是5,推薦使用>32。
2.修改Keep Alive的連接數(shù)量:Keep Alive子系統(tǒng)保持HTTP連接活動(dòng)直至客戶端斷開或超時(shí),默認(rèn)連接數(shù)是250,推薦設(shè)置為10000以上。
搭建應(yīng)用服務(wù)器集群后,系統(tǒng)的穩(wěn)定性得到了提高,應(yīng)用服務(wù)器基本上沒(méi)再出現(xiàn)因用戶量大而死掉的情況。通過(guò)觀察,集群中4個(gè)實(shí)例全部運(yùn)行后,系統(tǒng)中存在5個(gè)JVM虛擬機(jī)同時(shí)運(yùn)行,每個(gè)JVM內(nèi)存占用在600M左右。雖然高性能計(jì)算機(jī)的內(nèi)存仍沒(méi)有充分利用,但已經(jīng)滿足了我們的實(shí)際需求,為未來(lái)留下了擴(kuò)展空間。從我們的經(jīng)驗(yàn)表明,利用Glassfish及Web服務(wù)器,搭建單機(jī)集群,實(shí)現(xiàn)高性能服務(wù)器的負(fù)載均衡,既能提高應(yīng)用系統(tǒng)的穩(wěn)定性,又能充分利用高性能服務(wù)器的硬件資源,減少投入,節(jié)約成本。
(作者單位為河海大學(xué)信息中心)
2013年,華容縣僅用3個(gè)月時(shí)間,就完成了“三通兩平臺(tái)”建設(shè):全縣132所學(xué)校全部接入寬帶,其中65所學(xué)校實(shí)現(xiàn)了有線無(wú)線全覆蓋;華容教育城域網(wǎng)及各學(xué)校校園網(wǎng)順利開通,并建成縣域中心機(jī)房。各教學(xué)班終端設(shè)備全部到位,已建成互聯(lián)網(wǎng)教室1667間。
有關(guān)人士指出,“華容樣本”,對(duì)中西部地區(qū)加快推進(jìn)教育信息化具有較強(qiáng)的借鑒意義。
2013年春季,華容縣教育局與有關(guān)公司正式簽約:前者向后者讓渡縣域內(nèi)20年教育信息化運(yùn)營(yíng)權(quán),后者負(fù)責(zé)基礎(chǔ)設(shè)施建設(shè)投資與教育信息化項(xiàng)目運(yùn)營(yíng)維護(hù)。具體協(xié)議是:網(wǎng)絡(luò)建設(shè)、辦公系統(tǒng)及“人人通”開發(fā)費(fèi)用由企業(yè)投入;網(wǎng)絡(luò)運(yùn)營(yíng)維修及硬件建設(shè)資金全部由企業(yè)先期投入,縣教育局分期償付3563萬(wàn)元,其中寬帶及運(yùn)維費(fèi)1703萬(wàn)元,分8年償付,其后12年完全免費(fèi);中心機(jī)房、“班班通”終端設(shè)備采購(gòu)1468萬(wàn)元、利息392萬(wàn)元,分5年償付。此外,每年用于信息化運(yùn)營(yíng)維護(hù)的耗材、人員工資以及20年內(nèi)設(shè)備更新與升級(jí)改造等,都由企業(yè)負(fù)責(zé)。
總體來(lái)說(shuō),華容縣20年教育信息化整體投入超過(guò)1.5億元,但政府用8年時(shí)間分期總投入僅3563萬(wàn)元,減少投入70%,更重要的是提前10年實(shí)現(xiàn)了信息化。
相關(guān)部門的數(shù)據(jù)顯示,截至目前,華容縣90%的教師已能夠?qū)崿F(xiàn)電子信息化備課,全縣5874名教師,有5800人開通了網(wǎng)絡(luò)學(xué)習(xí)空間,開通機(jī)構(gòu)空間34個(gè)和班級(jí)空間486個(gè)。
(來(lái)源:中國(guó)教育報(bào))