随着web应用的交互性越来越强,其占用的网络带宽问题也日益凸显,最近正好要上线一个web应用,压力测试下的网络流量大的惊人,于是开始考虑http压缩的问题。
首先考虑的是mod_jk + jboss的环境,测试了一圈下来,发现mod_jk仅支持ajp协议,无法使用http压缩。后来了解到生产系统中用的是mod_cluster,于是又重新进行了测试,这次顺利搞定,压缩效果明显。
相关配置方法如下:
1、mod_cluster-1.1.3
下载mod_cluster,jboss官网下载对应平台的binaries,解压缩后里面就是一个apache httpd,初始的时候是没有httpd.conf文件的,运行bin目录下的installconf.bat,即可生成默认配置,该配置已经包含基本的mod_cluster配置,只需要修改对应的主机ip即可。具体如下:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_cluster_module modules/mod_proxy_cluster.so
LoadModule manager_module modules/mod_manager.so
LoadModule slotmem_module modules/mod_slotmem.so
LoadModule advertise_module modules/mod_advertise.so
# MOD_CLUSTER_ADDS
# Adjust to you hostname and subnet.
<IfModule manager_module>
Listen 172.27.15.7:6666
ManagerBalancerName mycluster
<VirtualHost 172.27.15.7:6666>
<Location />
Order deny,allow
Deny from all
Allow from all
</Location>
KeepAliveTimeout 300
MaxKeepAliveRequests 0
AdvertiseFrequency 5
#下面这两行会让管理界面显示的信息更详细
ServerAdvertise On
AllowDisplay On
<Location /mod_cluster_manager>
SetHandler mod_cluster-manager
Order deny,allow
Deny from all
Allow from all
</Location>
</VirtualHost>
</IfModule>
这里需要注意的是,mod_cluster的管理界面是这样写的:Location /mod_cluster_manager,网上搜到的很多配置里面都是mod_cluster-manager,就是最后一个下划线和横线的区别,如果你按照网上的写法http://ip:6666/mod_cluster-manager访问,那就坑爹了(始终打不开界面,还以为是httpd的配置有问题)。
配置好以后启动,访问http://ip:6666/mod_cluster_manager,就可以看到mod_cluster的管理界面了,详细信息里面有Protocol supported: http AJP,说明同时支持http协议和AJP协议。
另外,将上面的这段配置拷贝到已有的apache中也是一样的。
2、jboss-eap-5.0
下载mod_cluster的java bundles,解压缩后里面有:
mod_cluster.sar - 用于jboss配置
JBossWeb-Tomcat - 用于Tomcat环境下的jar包(这里不需要)
demo - mod_cluster的负载均衡测试demo,包括server和client
将mod_cluster.sar拷贝到JBOSS_HOME/server/default/deploy目录下,为了测试简单,将mod_cluster.sar\META-IN\mod_cluster-jboss-beans.xml里面ModClusterListener的ContainerEventHandler由HAModClusterService改为ModClusterService,这样就可以不用配置更复杂的HA了。
修改JBOSS_HOME/server/default/deploy/jbossweb.sar/server.xml,添加一个listener:
<Listener className="org.jboss.modcluster.catalina.ModClusterListener" advertise="true"/>
在<Service name="jboss.web">节点下添加:
<Engine name="jboss.web" defaultHost="localhost" jvmRoute="node0">
注:上面这一步是可选的,如果加了,在mod_cluster管理界面看到的就是“node0”,不加的话,看到的就是“node随机数”。
如果想用demo做测试的话,还可以将demo/server/load-demo.war拷贝到jboss的deploy目录。
启动jboss,启动完成后,刷新mod_cluster管理界面,可以看到,下面多了一个节点node0,说明配置成功了。但是这时仔细看节点的信息,可以看到节点名称后面写着mod_cluster连接jboss的url,默认是使用ajp协议的。比如,我的节点信息就是:
Node node0 (AJP://ip:8209)。
3、http压缩
如果想使用http压缩,则首先需要解决上面的问题,即让mod_cluster通过http协议连接jboss,而不是通过AJP协议。我查了mod_cluster的User Guide发现上面是这样说的:
Unlike mod_jk and mod_proxy_balancer, mod_cluster is not confined to AJP, but can use HTTP as well. While AJP is generally faster, an HTTP connector can optionally be secured via SSL. If multiple possible connectors are defined in your server.xml, mod_cluster uses the following algorithm to choose between them:
1. If an native (APR) AJP connector is available, use it.
2. If an AJP connector is available, use it.
3. Otherwise, choose the HTTP connector with the highest max threads.
显然就是说,虽然mod_cluster支持AJP、http,但是这个不是可配置的,而是由mod_cluster根据the following algorithm选择的,这个算法就是,如果有AJP则优先选择AJP,否则才会选择http。
因此,如果想利用jboss的http压缩,则需要让mod_cluster选择http,也就是说需要屏蔽掉所有的AJP connector。那么接下来的配置就简单了。首先注释掉AJP connector,然后在http connector上启用压缩,如下:
<Connector protocol="HTTP/1.1" port="8080" address="${jboss.bind.address}"
connectionTimeout="20000" redirectPort="8443"
compression ="on" compressionMinSize ="2048"
noCompressionUserAgents ="gozilla, traviata"
compressableMimeType ="text/html,text/xml,text/javascript,text/css,text/plain"/>
<!--<Connector protocol="AJP/1.3" port="8009" address="${jboss.bind.address}"
redirectPort="8443" />-->
至此,所有的配置都配好了,重启jboss,利用网络流量查看工具或firefox + firebug之类的工具测试一下网络流量,发现和直接在jboss上配置压缩效果是一样的。
分享到:
相关推荐
Jboss7 +apache 2.2.25+mod_jk 的配置集群 Jboss7 在windows下还没有看到有这块的文档 所以把写好的放上去和大家一志分享
网上讲的jboss集群大多出自同一人之手,各种复制粘贴,搞的我不得不自己研究,改进.
本资源包含了文章Apache2.2.x + Tomcat6.x + JK 集群配置,http://blog.csdn.net/qq396229783/article/details/74295797里面所用到的软件配置
Jboss6+mod_jk+apache2.2集群配置,mod_jk方式的分布式集群方案。
JBoss_AS7+JBoss_Tools+Eclipse3.7集成介绍
Eclipse+jboss的配置Eclipse+jboss的配置Eclipse+jboss的配置Eclipse+jboss的配置Eclipse+jboss的配置Eclipse+jboss的配置
Eclipse3_3+Jboss4_2+Lomboz3_3环境安装配置
apache+jboss集群参考,参考介绍集群实现办法
java代理服务器源码mod_cluster 项目 mod_cluster 是一个智能负载均衡器。 它使用通信通道将来自反向代理服务器的请求转发到一组应用程序服务器节点之一。 与 mod_jk 和 mod_proxy 不同,mod_cluster 利用应用服务器...
实现两个节点之间的无缝负载均衡,实时session复制,当一台机子的jboss的服务跨掉以后,自动会切换到另外一台服务器上面,对于用户的使用没有丝毫的影响。
发展过程 2007年之前 apache + mod_weblogic + Weblogic ...apache + mod_weblogic + jboss(4.05) 2008年低 apache(2.0.61) + mod_jk(1.2.26) + jboss(4.05) 2010年低 apache(2.2) + mod_proxy + jetty(7.2.0)
Jboss集群配置是根据网上的一些资料和自己配置过程中遇到的问题修改而成
英文文档 简单易懂 详细介绍了如何借助Apache2 mod_jk 1.2.x作为负载均衡搭建JBOSS集群 细分每个搭建步骤 文档内附带相关软件下载地址
redhat5+jboss4.2.3+apache2.2.19+mod_jk.so集群配置 文档中包括了jkd jboss apache mod_jk 的分别安装步骤,对linux不熟悉的人绝对有所帮助。 我把他搞定中途遇到了很多问题才写了这个文档,相对来说比较完善了,...
java+架构系列培训课程_JBOSS_SEAM开发
在真实机上面做的,测试通过。apache+jboss整合详细步骤全过程
Apache+Jboss负载均衡加域名转发
linux下jboss-eap搭建应用服务器集群。JBoss-EAP-6.4.0 域(Domain)模式+mod_cluster-1.2.6 集群环境配置
公司需要做 Apache Tomcat集群,研究了数日,终配置成功,把研究结果共享一下。 最下面的红色字体[在一台机器上启动两个JBoss服务器],不同机器端口和路径不同,可根据自己情况适当修改。
使用Apache、mod_jk为负载均衡器的jboss集群详细配置