apache+tomcat集群配置

之前在项目中遇到过集群配置,当时被一大堆配置弄得一脸懵逼,完全不懂这些配置的含义,所以一直对集群有一些好奇心,最近利用了一点时间研究了一下apache+tomcat的集群配置。研究的不是很深入,只是看了一些网上的相关资料,自己搭建并实验成功了而已。
一、首先我们得准备好集群所需要的工具,这里只需要两样工具:1.apache2.2.15 2.tomcat。这里需要注意的一点就是apache2.2.15的windows安装文件的下载地址是http://archive.apache.org/dist/httpd/binaries/win32/,如果我不说明的话,可能大家到apache官网上找半天都找不到,因为我当初在官网上也找了半天没找到。
二、配置apache httpd服务器。
首先配置conf/httpd.conf文件
1.加载一些功能模块。
将以下配置前的注释去掉:
LoadModule proxy_module modules/mod_proxy.so 
LoadModule proxy_connect_module   modules/mod_proxy_connect.so 
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so 
LoadModule proxy_http_module modules/mod_proxy_http.so 
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so 
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
2.添加index.jsp
将
<IfModule dir_module> 
  DirectoryIndex index.html  
</IfModule>
修改成
<IfModule dir_module> 
  DirectoryIndex index.html index.jsp  
</IfModule>
3.加入反向代理配置
在文件末尾加上反向代理:
ProxyRequests Off 
<proxy balancer://cluster> 
     BalancerMember ajp://127.0.0.1:8019 loadfactor=1 route=jvm1 
     BalancerMember ajp://127.0.0.1:8029 loadfactor=1 route=jvm2 
</proxy>

4.增加虚拟主机配置
首先将conf/httpd.conf文件中的#Include conf/extra/httpd-vhosts.conf这行被注释掉的配置还原。
然后修改conf/extra/httpd-vhosts.conf文件,在文件中添加以下配置:
<VirtualHost *:80> 
     ServerAdmin zengwei.shao@samsung.com 
     ServerName localhost 
     ServerAlias localhost 
     ProxyPass / balancer://cluster/ stickysession=jsessionid nofailover=On 
     ProxyPassReverse / balancer://cluster/ 
     ErrorLog "logs/lbtest-error.log" 
     CustomLog "logs/lbtest-access.log" common 
</VirtualHost>

三、配置tomcat服务器
1.修改server.xml文件
首先修改tomcat1的server.xml:
<Connector port="8019" protocol="AJP/1.3" redirectPort="8443"/>中的port改为8019,与前面反向代理中jvm1的端口相对应
<Engine defaultHost="localhost" name="Catalina" jvmRoute="jvm1">中jvmRoute改为jvm1。
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>替换成
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"  channelSendOptions="6"> 
<Manager className="org.apache.catalina.ha.session.BackupManager" expireSessionsOnShutdown="false" notifyListenersOnReplication="true" mapSendOptions="6"/> 
<Manager className="org.apache.catalina.ha.session.DeltaManager" expireSessionsOnShutdown="false" notifyListenersOnReplication="true"/>   
<Channel className="org.apache.catalina.tribes.group.GroupChannel">
<Membership className="org.apache.catalina.tribes.membership.McastService" address="228.0.0.4" port="45564" frequency="500" dropTime="3000"/>   
 <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" address="auto" port="4444" selectorTimeout="100" maxThreads="6"/> 
 <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
   <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/> 
 </Sender> 
 <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
 <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
 <Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/> 
 </Channel>
 <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/> 
 <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer" tempDir="/tmp/war-temp/" deployDir="/tmp/war-deploy/" watchDir="/tmp/war-listen/" watchEnabled="false"/> 
 <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/> 
 </Cluster>
 这里需要注意的一点是Receiver 中的port需要保证唯一性。

接着修改一下tomcat2中的server.xml:

<Connector port="8019" protocol="AJP/1.3" redirectPort="8443"/>中的port改为8019,与     前面反向代理中jvm1的端口相对应
<Engine defaultHost="localhost" name="Catalina" jvmRoute="jvm1">中jvmRoute改为jvm1。

其他配置同上。

四、编写用于测试的jsp页面。
<%@ page contentType=”text/html; charset=utf-8” %>
<%@ page import=”java.util.*” %>
Cluster App Test

Server Info:
<%
out.println(request.getLocalAddr() + ” : ” + request.getLocalPort()+”
”);%>
<%
out.println(“
ID ” + session.getId()+”
”);
// 如果有新的 Session 属性设置
String dataName = request.getParameter(“dataName”);
if (dataName != null && dataName.length() > 0) {
String dataValue = request.getParameter(“dataValue”);
session.setAttribute(dataName, dataValue);
}
out.println(“Session 列表
”);
System.out.println(“============================”);
Enumeration e = session.getAttributeNames();
while (e.hasMoreElements()) {
String name = (String)e.nextElement();
String value = session.getAttribute(name).toString();
out.println( name + ” = ” + value+”
”);
System.out.println( name + ” = ” + value);
}
%>

名称:

值:




五、修改web.xml文件
在你所需要实现集群的web工程中的web.xml文件里增加一个属性< distributable/>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值