1.安装httpd-2.2.25-win32-x86-no_ssl.msi
按默认安装路径,我电脑如果自定义的话安装不了
2.下载mod_jk-apache-2.2.2.so
3.下载tomcat 我用的是apache-tomcat-7.0.56
4.首先设置各个tomcat的端口如果在同一台电脑上需保证端口号的唯一
打开server.xml文件修改里面的属性
<Server port="9015" shutdown="SHUTDOWN">这个端口要唯一 <Connector port="9080" protocol="HTTP/1.1" URIEncoding="UTF-8"/> 这个可以注释掉,不需要暴露tomcat出去了,apache是通过ajp协议通信的 <Connector port="9009" protocol="AJP/1.3" redirectPort="8443" />这个端口要唯一 <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">设置名称tomcat1 <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster">添加这个
打开各个tomcat保证各个tomcat能够正常启动
5.现在这一步稍微复杂一点,做配置文件
6.首先把mod_jk-apache-2.2.2.so文件复制到apache安装路径下的modules文件夹下
7.然后在conf文件夹下打开httpd.conf文件在文件最后添加
#指定模块路径 LoadModule jk_module modules/mod_jk.so #指定mod_jk的workers定义 Include "C:\Program Files\Apache Software Foundation\Apache2.2\conf\mod_jk.conf"
8.然后新建mod_jk.conf文件,此文件再conf下新增。
JkWorkersFile conf/workers.properties JkMount /*.jsp controller JkMount /*.do controller
9.然后新建workers.properties文件,此文件再conf下新增
#server #控制器名称 worker.list=controller #==========tomcat1=========== #ajp协议的端口,如果2个tomcat部署在同一个服务器中,那个ajp端口需要不同 worker.tomcat1.port=9009 #tomcat的所在主机的ip,如果是本机,则写本机的ip即可 worker.tomcat1.host=172.16.80.107 #协议类型 worker.tomcat1.type=ajp13 #负载因子 #如果2个tomcat,该参数相同,表示等比例,如果想tomcat负载多一点,只要把这个参数改的大一点即可,具体多少还是得看情况 worker.tomcat1.lbfactor=1 #==========tomcat2=========== worker.tomcat2.port=8809 worker.tomcat2.host=172.16.80.107 worker.tomcat2.type=ajp13 worker.tomcat2.lbfactor=1 #===================controller,负载均衡控制器========= worker.controller.type=lb #请求失败以后重试次数 worker.controller.retries=3 #controller控制的tomcat的名称,分别为tomcat1和tomcat2,由tomcat中的server.xml中设值 worker.controller.balance_workers=tomcat1,tomcat2 #回话是否有粘性,false表示无粘性,同一个回话的请求会到不同的tomcat中处理 worker.controller.sticky_session=false #当一个节点蹦了,如果设值为true,那么服务器返回500错误给客户端,如果设值为false,则转发给其他的#tomcat,但是会丢失回话信息 worker.controller.sticky_session_force=false #worker.controller.max_reply_timeouts=10
10. 新建一个web项目test,项目中 web.xml中必须添加<distributable/>属性
新建一个jsp页面test2.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="test2.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>
然后部署项目
最后启动apache在启动tomcat,然后访问项目
http://localhost/test/test2.jsp
显示
Server Info: localhost : 80
ID 70B5A490CDCA86E0A1D75019F03B8AFD.tomcat2
Session 列表
1 = 1
名称:
值: