apache+tomcat集群配置

来源:互联网 发布:淘宝有好看的衣服牌子 编辑:程序博客网 时间:2024/06/05 14:58
之前在项目中遇到过集群配置,当时被一大堆配置弄得一脸懵逼,完全不懂这些配置的含义,所以一直对集群有一些好奇心,最近利用了一点时间研究了一下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.so2.添加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/>

0 0
原创粉丝点击