河海大学:基于GLASSFISH的负载均衡设计

2014-02-06 14:49李景奇梁正和张国宝
中国教育网络 2014年7期
关键词:均衡器高性能实例

文/李景奇 梁正和 张国宝

河海大学:基于GLASSFISH的负载均衡设计

文/李景奇 梁正和 张国宝

利用负载均衡集群可以使多个应用服务器实例并行工作,提高高性能服务器的资源利用率和应用系统的负载能力。针对目前数字校园中管理信息系统运行中存在的问题,本文提出了基于Glassfish应用服务器的负载均衡设计方案,以求达到节约成本、提高性能的目标。

管理信息系统的运行需求及存在问题

目前在高校中,管理信息系统的建设日益成为信息化的一项基本工作。管理信息系统作为软件,根据不同的业务要求,有不同的硬件需求。高性能计算机运行稳定,配置高,性能优越,成为管理信息系统基础硬件的最佳选择。但如何能利用好高性能计算机,如何提高其利用率,减少硬件支出,同时提供高可靠的服务,成为信息系统建设者的重要问题。

河海大学自主研发了研究生信息管理系统,用户多,业务复杂,对应用服务器要求高。目前运行的系统环境是:浪潮16核64G内存服务器,网络操作系统是REDHATE LINUX5.5,中间件使用Glassfish应用服务器。在使用中我们发现,当用户量大时经常出现应用服务器反应慢甚至死掉的情况。经观察,我们发现当应用服务器死掉后,机器仍在正常运行,但其CPU及内存使用率非常低。经过认真研究,发现存在的问题在于:在Glassfish应用服务器中只有一个独立实例,即只有一个JVM在运行。而JVM虚拟机的设置的内存只有1G,而根据相关资料,JVM虚拟机的设置的内存不宜设置过大或过小,以2G至3G为最佳。但我们硬件服务器是64G内存,所以提高性能的关键是提高系统硬件的利用率,发挥高性能服务器的效率。通过调研,我们准备采取软件负载均衡,在单机上建立应用服务器集群,建立多个实例,这样就有多个JVM虚拟机同时工作,从而提高机器的利用率和系统的可用性。

负载均衡集群设计方案

本方案采用软件负载均衡的方式,在高性能服务器中搭建应用服务集群。在本方案中,前置监听服务器采用SJSWS(SUN JAVASYSTEM WEB SERVER) 7.0,中间件使用GLASSFISH V2.1。前置监听服务器通过一个实例监听服务器的80端口,然后对该端口的请求转发到4个实例中,各实例各自独立运行Web应用,分担访问压力。

建立集群和应用服务器实例

1.启动domain1 :asadmin startdomain domain1。

2.建立节点代理nodeagent: asadmin create-node-agent --host localhost --port 4848 ng1。

3.建立集群cluster1:进入管理界面在集群结点进行添加,并将应用程序、EJB、资源等目标设置到cluster1上。

4.建立实例:进入管理界面,点击cluster1-实例,新建4个实例instance1、instance2、 instance3、 instance4。

配置前端监听服务器

1.安装配置前端监听服务器:

下 载 安 装sun java system web server7.0,(注:以下路径对应关系:

sun web server的安装目录

sun web server下实例的目录,文件夹的名字是https-机器名

glassfish的安装目录 )

2.创建以下文件夹:

/plugins/lbplugin/ bin

/plugins/lbplugin/ resource

/plugins/lbplugin/ errorpages

/lib/lbplugin

3.下载负载均衡插件:

下 载 地 址:http://dlc.sun.com. edgesuite.net/javaee5/external/Linux/aslb/ jars/aslb-9.1-MS4-b7.jar,解压jar包,得到两个压缩文件,将两个压缩文件解压到/lib/lbplugin下,得到一个lib文件夹,然后将lib文件下的文件属性改为可共享。

4.安装sun web server插件:

在解压得到的lib包中,完成下列文件的拷贝:

/lib/lbplugin/ lib/webserver-plugin/windows/sjsws/ libpassthrough.so拷贝到 /plugins/lbplugin/bin/;

/lib/lbplugin/lib下的libicudt2.so,libicuin2.so,libicuuc2. so,xerces-c.dll四个文件拷贝到/plugins/lbplugin/bin/ ;

/lib/lbplugin/lib/ webserver-plugin/windows/sjsws/errorpages/ default-error.html 和sun-http-lberror. html 拷贝到 /plugins/lbplugin/errorpages/ ;

/lib/lbplugin/lib/ webserver-plugin/windows/sjsws/*.res 拷贝到/plugins/lbplugin/ resource/ ;

/lib/lbplugin/lib/ dtds/sun-loadbalancer_1_2.dtd拷贝到/config/ 。

5.配置sun web server:

/config/下的magnus.conf文件中,添加以下两行语句。

##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=

/config/obj. conf 第一个NameTrans之前插入一行,

NameTrans fn="name-transpassthrough" name="lbplugin" configfile="loadbalancer.xml"

在该文件末尾,加上下列语句,

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应用服务器添加负载均衡器

1.添加负载均衡器:点击http负载均衡器-新建,设备主机localhost,端口80(端口号可以在web server 7下的 configserver.xml中http-listener设定)。然后将从Glassfish负载均衡器中导出的loadbalancer.xml 拷贝到/config/。

2.运行服务:首先启动Glassfish应用服务器,然后启动sun web server ,同时启动web server的实例。这样通过80端口访问服务器就能实现负载均衡。

Linux系统下实现时出现的问题及解决方法

1.loopback问题:集群设置后实例总是无法启动,报37676端口无法连接。

解 决 办 法: 修 改/etc/hosts, 把hostname的配置文件为静态ip地址。在Linux 系统中,要将代理连接为集群,有一个特殊的前提条件。某些 Linux 安装程序自动将 localhost 条目设置网络回送 IP 地址为127.0.0.1。因此必须设置系统的 IP 地址,以便为集群中的所有代理设置正确的地址。

2.无法启动webserver7的问题:报共享库错误,无法写入临时文件。

解决办法是将防火墙中的SeLinux禁用。

GLASSFISH性能调优

JVM参数

1.更改JVM运行模式:将参数-client改为-server,默认的是-client。在部署环境下,使用SERVER模式能提高运行效率。

2.调整JVM堆大小:推荐将最大值与最小值设置相等,使得JVM堆不会因动态调整大小而消耗资源。推荐将大小都设置为2至3G,如参数Xms2048m, -Xmx2048m。大小也可以根据服务器内存情况而定。一般不能太大,太大了会导致垃圾回收时间延长,而在垃圾回收时间里,系统会停止对外工作。也不能太小,太小经常会导致内存泄漏的问题。

3.修改http.maxConnection:该参数表示最大空闲长连接数,默认值是5,推荐设置为200以上,可以在jvm参数中直接增加新的一项“-Dhttp. maxConnections=250”。

HTTP服务参数

1.修改HTTP服务最大线程数:HTTP服务为HTTP请求进程提供了一个线程池,默认计数是5,推荐使用>32。

2.修改Keep Alive的连接数量:Keep Alive子系统保持HTTP连接活动直至客户端断开或超时,默认连接数是250,推荐设置为10000以上。

搭建应用服务器集群后,系统的稳定性得到了提高,应用服务器基本上没再出现因用户量大而死掉的情况。通过观察,集群中4个实例全部运行后,系统中存在5个JVM虚拟机同时运行,每个JVM内存占用在600M左右。虽然高性能计算机的内存仍没有充分利用,但已经满足了我们的实际需求,为未来留下了扩展空间。从我们的经验表明,利用Glassfish及Web服务器,搭建单机集群,实现高性能服务器的负载均衡,既能提高应用系统的稳定性,又能充分利用高性能服务器的硬件资源,减少投入,节约成本。

(作者单位为河海大学信息中心)

“华容样本”加速度

2013年,华容县仅用3个月时间,就完成了“三通两平台”建设:全县132所学校全部接入宽带,其中65所学校实现了有线无线全覆盖;华容教育城域网及各学校校园网顺利开通,并建成县域中心机房。各教学班终端设备全部到位,已建成互联网教室1667间。

有关人士指出,“华容样本”,对中西部地区加快推进教育信息化具有较强的借鉴意义。

2013年春季,华容县教育局与有关公司正式签约:前者向后者让渡县域内20年教育信息化运营权,后者负责基础设施建设投资与教育信息化项目运营维护。具体协议是:网络建设、办公系统及“人人通”开发费用由企业投入;网络运营维修及硬件建设资金全部由企业先期投入,县教育局分期偿付3563万元,其中宽带及运维费1703万元,分8年偿付,其后12年完全免费;中心机房、“班班通”终端设备采购1468万元、利息392万元,分5年偿付。此外,每年用于信息化运营维护的耗材、人员工资以及20年内设备更新与升级改造等,都由企业负责。

总体来说,华容县20年教育信息化整体投入超过1.5亿元,但政府用8年时间分期总投入仅3563万元,减少投入70%,更重要的是提前10年实现了信息化。

相关部门的数据显示,截至目前,华容县90%的教师已能够实现电子信息化备课,全县5874名教师,有5800人开通了网络学习空间,开通机构空间34个和班级空间486个。

(来源:中国教育报)

猜你喜欢
均衡器高性能实例
心情如曲调般平衡缤纷
基于Kalman滤波的水声混合双向迭代信道均衡算法
采用负电容结构的新型CTLE均衡器设计
一款高性能BGO探测器的研发
高性能砼在桥梁中的应用
SATA推出全新高性能喷枪SATAjet 5000 B
高性能可变进气岐管降低二氧化碳排放
完形填空Ⅱ
完形填空Ⅰ
压限器在舞台扩声系统的连接问题分析