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上启用压缩,如下: