经历了两天终于把Apache+Tomcat的负载均衡搞好了,写个Blog跟大家分享一下。 首先下载Tomcat7 和Apache2.4 然后安装Apache,安装完成后在IE中输入localhost访问,如果出现It Works则表示Apache安装好了,然后解压缩到Tomcat1和Tomcat2两个目录中。 分别启动Tomcat1和Tomcat2看是否可以正常启动。 2. 配置Apache2.4 ①打开conf/httpd.conf文件,加载以下模块。 #---------------------start------------------------ LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_ajp_module modules/mod_proxy_ajp.so LoadModule rewrite_module modules/mod_rewrite.so LoadModule proxy_balancer_module modules/mod_proxy_balancer.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 slotmem_shm_module modules/mod_slotmem_shm.so LoadModule speling_module modules/mod_speling.so LoadModule ssl_module modules/mod_ssl.so #----------------------end--------------------- ② 如果你想看到小猫页面, <IfModule dir_module> DirectoryIndex index.html </IfModule> 在上面的index.html下面添加index.jsp就可以了 ③去掉Include conf/extra/httpd-vhosts.conf的注释标记#。 ④在文件末尾加反向代理 ProxyRequests Off <proxy balancer://cluster> BalancerMember ajp://127.0.0.1:8009 loadfactor=1 route=jvm1 BalancerMember ajp://127.0.0.1:9009 loadfactor=1 route=jvm2 </proxy> ⑤修改conf/extra/httpd-vhosts.conf文件。 注释掉所有的dummy-host,添加以下内容 <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> 2.配置Tomcat Tomcat2 的修改conf/server.xml ① <Server port="8005" shutdown="SHUTDOWN">修改为9005 ②修改<Service name="Catalina">下的 <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />中的8080为9080 ③<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />修改为9009 ④ <Engine name="Catalina" defaultHost="localhost">在末尾加 jvmRoute="jvm2" 同时修改Tomcat1的这个标签为jvmRoute="jvm1" ⑤<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>改为 <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"> <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/> </Cluster> 配置完成之后,启动两个Tomcat测试一下Tomcat是否可以正常启动 如果可以正常启动,则进行下面步骤 在webApps下面添加Test目录,添加Test.jsp <%@ page contentType="text/html; charset=GBK" %> <%@ page import="java.util.*" %> <html><head><title>Cluster App Test</title></head> <body> Server Info: <% out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"<br>");%> <% out.println("<br> ID " + session.getId()+"<br>"); String dataName = request.getParameter("dataName"); if (dataName != null && dataName.length() > 0) { String dataValue = request.getParameter("dataValue"); session.setAttribute(dataName, dataValue); } out.print("<b>Session 列表</b>"); Enumeration e = session.getAttributeNames(); while (e.hasMoreElements()) { String name = (String)e.nextElement(); String value = session.getAttribute(name).toString(); out.println( name + " = " + value+"<br>"); System.out.println( name + " = " + value); } %> <form action="test.jsp" method="POST"> 名称:<input type=text size=20 name="dataName"> <br> 值:<input type=text size=20 name="dataValue"> <br> <input type=submit> </form> </body> </html> 创建WEB-INF目录,创建web.xml ?xml version="1.0" encoding="utf-8"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0" metadata-complete="true"> <distributable /> </web-app> 最后启动Apache2.4,在页面中输入localhost\test\test.jsp进行测试。 注意:Apache有可能启动不起来,那么解决方式是查看Apache安装目录下的logs目录下的error.log文件, 根据log文件解决可能存在的问题。直到Apache可以正常启动,至此Apache就可以正常启动了。
以上所述只是Apache+Tomcat集群配置的一种方式。还有两种其他的方式。后面试验后会写blog. |