一、软件下载 在http://projects.apache.org/indexes/quick.html上找到Apache Tomcat和Apache Http Server工程并下载相应软件。 软件版本: Apache Tomcat 6.0.33 zip版的 Tomcat Connector 1.2,有很多版本,选择和Apache Http Server相匹配的。 Apache Http Server 2.2.21 (released 2011-09-13) 二、软件安装1、Apache Http Server 直接运行msi文件安装即可,安装完成并启动后,能访问http://localhost则安装成功。 *安装Apache Http Server后确认是否有其他服务(IIS)占用80端口。 2、tomcat 直接解压,重命名为tomcat1,然后再拷贝一份命名为tomcat2。 3、解压下载的Tomcat Connector,将mod_jk.so拷贝到Apache Http Server安装路径的modules目录/下。 三、配置Apache Http Server 1、修改conf/httpd.conf 在文件末尾增肌一行:include conf/mod_jk.conf 2、在conf/目录下创建mod_jk.conf,内容如下 #加载mod_jk Module LoadModule jk_module modules/mod_jk.so #指定 workers.properties文件路径 JkWorkersFile conf/workers.properties #指定那些请求交给tomcat处理,"controller"为在workers.propertise里指定的负载分配控制器 JkMount /*.jsp controller JkMount /*.do controller 3、在conf/目录下创建workers.properties文件,内容如下: worker.list = controller,jvm1,jvm2 #server 列表 #========tomcat1======== worker.jvm1.port=8009 #ajp13 端口号,在tomcat下server.xml配置,默认8009 worker.jvm1.host=localhost #tomcat的主机地址,如不为本机,请填写ip地址 worker.jvm1.type=ajp13 worker.jvm1.lbfactor = 1 #server的加权比重,值越高,分得的请求越多 #========tomcat2======== worker.jvm2.port=9009 #ajp13 端口号,在tomcat下server.xml配置,默认8009 worker.jvm2.host=localhost #tomcat的主机地址,如不为本机,请填写ip地址 worker.jvm2.type=ajp13 worker.jvm2.lbfactor = 1 #server的加权比重,值越高,分得的请求越多 #========controller,负载均衡控制器======== worker.controller.type=lb worker.controller.balance_workers=jvm1,jvm2 #指定分担请求的tomcat worker.controller.sticky_session=1 四、配置tomcat 1、放开cluster注释 <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/> 2、修改Engine,增加jvmRoute属性,jvmRoute的值和workers.properties中的works保持一致 tomcat1配置: <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1"> tomcat2配置: <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm2"> 3、如果tomcat1和tomcat2在同一台机器上,还需要修改tomcat2的端口,防止冲突 <Server port="8005" shutdown="SHUTDOWN"> <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> *AJP/1.3的端口修改后,workers.properties中的端口也需要相应调整。 五、测试 在tomcat1和tomcat2下的webapps创建测试工程test,目录结构如下: webapps |——WEB-INF | |_web.xml |_test.jsp 1、web.xml内容: <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> <display-name>TomcatDemo</display-name> <distributable/> </web-app> 2、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>"); // 如果有新的 Session 属性设置 String dataName = request.getParameter("dataName"); if (dataName != null && dataName.length() > 0) { String dataValue = request.getParameter("dataValue"); session.setAttribute(dataName, dataValue); } out.println("<b>Session 列表</b><br>"); 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+"<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> 3、访问http://localhost/test/test.jsp 不停刷新,界面上显示的ID项目为:xxxxxxxxxxxxx.jvm1或者xxxxxxxxxxxxx.jvm2;xxxxxxx部分内容不变,只有jvm1和jvm2轮换出现,说明session复制成功。 在名称、值中输入内容,点击按钮提交;重复几次操作。所有输入的内容,每次都能在界面上展示,说明session已经共享,每个集群成员对于同一访问均有相同的session,而且session的内容也复制了。 ps: 1、日志 初次配置完成后,没有实现负载均衡,查看apache/logs/mod_jk.log发现警告日志: [Fri Nov 11 14:51:15.296 2011] [5640:5644] [warn] jk_map_validate_property::jk_map.c (411): The attribute 'worker.controller.balanced_workers' is deprecated - please check the documentation for the correct replacement. 查参考资料发现tomcat-connectors-1.2.32中,该配置项改为了balance_workers 2、参考文档 http://tomcat.apache.org/connectors-doc/reference/workers.html http://tomcat.apache.org/connectors-doc/reference/apache.html \tomcat\webapps\docs\cluster-howto.html |