此文档内容已经经过测试
JavaSDK版本: 1.6.20
Apache版本: 2.2.15 Tomcat版本: 6.0.26 ====================================安装 javaSDK就默认安装了.apache的安装没有什么特别的,一路下一步即可,当然,最好修改apache的默认安装目录.
安装时注意,80端口不要被占用了.tomcat的安装需要考虑下,是采用解压版本的tomcat,还是安装版本的tomcat.
我们这里采用解压版的tomcat(不是炫耀自己). 因为需要做tomcat的负载均衡,因此肯定需要解压2个以上的tomcat.我们这里用两个tomcat.解压到某一个目录中后,需要修改tomcat目录中bin目录下的catalina.bat文件和catalina.bat文件,在文件首部加入:
set JDK_DIR=C:\Program Files\Java\jdk1.6.0_20 set JAVA_HOME=%JDK_DIR% set tomcatStart="d:\tomcat1\bin\" 这样运行每个tomcat时,就不会因java和tomcat路径混乱导致出错了.配置
一、配置apache 修改apache的配置文件httpd.conf1. 启用moddle
将以下Module的注释去掉,这里并没有使用mod_jk.so进行apache和tomcat的链接,从2.X以后apache自身已集成了mod_jk.so的功能。只需简单的把下面几行去掉注释,就相当于以前用mod_jk.so比较繁琐的配置了。这里主要采用了代理的方法,就这么简单。 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注: 我启用了三个就OK了 mod_proxy.so / mod_proxy_ajp.so / mod_proxy_balancer.so
2. 添加页面
再找到<IfModule dir_module></IfModule>加上index.jsp修改成 <IfModule dir_module> DirectoryIndex index.html index.jsp </IfModule>3. 加入BalancerMember成员(与tomcat关联)
然后在httpd.conf文件最下方加入:ProxyRequests Off
<proxy balancer://cluster> BalancerMember ajp://127.0.0.1:8009 loadfactor=1 route=jvm1 BalancerMember ajp://127.0.0.1:8010 loadfactor=1 route=jvm2 </proxy>这里的IP跟端口就是跟tomcat中的配置一样即可.如果在同一台计算机上,就如上配置,如果不在同一台计算机上,就要修改IP.
上面的两个BalancerMember成员就是我们配置的tomcat集群.4. 虚拟主机设置
接下来进行虚拟主机的设置。APACHE的虚拟主机设置如下: 首先要修改 conf/httpd.conf找到(#Include conf/extra/httpd-vhosts.conf) , 把注释去掉。 # Virtual hosts Include conf/extra/httpd-vhosts.conf 在下面加入 <VirtualHost *:80> ServerAdmin ServerName localhost ServerAlias localhost ProxyPass / balancer://cluster/ stickysession=jsessionid nofailover=On ProxyPa***everse / balancer://cluster/ </VirtualHost> 其中的域名和路径根据你自己情况设置 然后再设置TOMCAT虚拟主机二、tomcat配置
修改tomcat1的配置文件 server.xml
1. 修改SHUTDOWN端口(tomcat的关闭端口)
tomcat1:<Server port="8005" shutdown="SHUTDOWN"> tomcat2:<Server port="8006" shutdown="SHUTDOWN">2. 修改运行端口
因为tomcat有两个,因此只需要修改其中某一个tomcat运行的端口即可: tomcat1: <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> tomcat2: <Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> 注:只需要修改port参数,不用修改redirectPort参数3. 修改connector的端口
tomcat1:<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> tomcat2:<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" /> 注:只需要修改port参数,不用修改redirectPort参数4. 启用配置 Engine
为了通过AJP来支持负载均衡,需要配置engine的jvmRoute属性. server.xml文件中, 修改Engine 段, 增加jvmRoute参数,如下: tomcat1:<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1"> tomcat2:<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm2">5. 配置Cluster
server.xml文件中,原来的配置 <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/> 应该是被注释的,现在用下面的配置代替:(tomcat文档中推荐的).这个设置是主要用以tomcat的集群. 关键在于 Receiver 段中的port参数,tomcat之间必须不同: tomcat1: <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="8"><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="4000" autoBind="100" selectorTimeout="5000" 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"/> </Channel><Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
filter=""/> <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/><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.JvmRouteSessionIDBinderListener"/>
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/> </Cluster>tomcat2:
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="8"><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="4001" autoBind="100" selectorTimeout="5000" 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"/> </Channel><Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
filter=""/> <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/><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.JvmRouteSessionIDBinderListener"/>
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/> </Cluster> 三、启动服务,测试tomcat自带的例子1、测试apache和tomcat协作。
先在每个tomcat中的\webapps\ROOT下的index.jsp下面加上以下的测试代码部分:(X代表不同的tomcat的输出不同的信息),把index.html删除,以免影响测试效果。在最后面的加上.即</table></body>之间。 <% System.out.println("hello,world!"); %> 然后再通过来访问一下,就会出现大家熟悉的猫猫。 然后再通过分别访问, , 它们访问的内容和上面的是一样的。 这样就说明apache和TOMCAT整合成功! 2、测试均衡器 通过http:// 127.0.0.1多次访问,要想看到真正的效果,必须用一些压力测试工具,可用微软Microsoft Web Application Stress Tool进行简单压力测试,不然你靠不停刷新是体现不出来的,你只会在一个tomcat的控制台有输出结果。只用用压力测试工具模拟大量用户同时访问,你会发现四个tomcat控制台均有打出控制信息,说明均衡器工作正常。 四、问题处理若启动时出现这样的错误提示:
2010-06-28 15:04:51 org.apache.catalina.ha.deploy.FarmWarDeployer start 严重: FarmWarDeployer can only work as host cluster subelement! 则将以下部分注释掉: (一般情况都会遇到的) <!-- <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer" tempDir="/tmp/war-temp/" deployDir="/tmp/war-deploy/" watchDir="/tmp/war-listen/" watchEnabled="false"/> -->
以上内容参考了诸多文档,终于自己测试OK并部署成功了.