1、文件下载 httpd-2.0.65-win32-x86-no_ssl 和 tomcat-connectors-1.2.39-windows-i386-httpd-2.0.x
![](https://img-blog.csdn.net/20150715125841169)
安装 httpd-2.0.65-win32-x86-no_ssl 如果安装成功,是可以直接 访问 http://localhost 的。把 tomcat-connectors-1.2.39-windows-i386-httpd-2.0.x 解压出来的 mod_jk.so 放在 Apache的安装目录的 mode中
2、配置 Apache
1、修改httpd.conf
找到conf目录下的httpd.conf,在文件的最后一行添加 include conf\mod_jk.conf"
2、在 httpd.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
3、将下载的JK插件mod_jk-1.2.31-httpd-2.2.3.so复制到Apache安装目录的modules目录下。
4、新建并编辑workers.properties文件,内容如下:
worker.list = controller,tomcat1,tomcat2 #server 列表
#========tomcat1========worker.tomcat1.port=8009 #ajp13 端口号,在tomcat下server.xml配置,默认8009worker.tomcat1.host=localhost #tomcat的主机地址,如不为本机,请填写ip地址worker.tomcat1.type=ajp13worker.tomcat1.lbfactor = 1 #server的加权比重,值越高,分得的请求越多#========tomcat2========worker.tomcat2.port=8109 #ajp13 端口号,在tomcat下server.xml配置,默认8009worker.tomcat2.host=localhost #tomcat的主机地址,如不为本机,请填写ip地址worker.tomcat2.type=ajp13worker.tomcat2.lbfactor = 2 #server的加权比重,值越高,分得的请求越多
3、修改 service.xml 文件
#========controller,负载均衡控制器========worker.controller.type=lbworker.controller.balanced_workers=tomcat1,tomcat2,tomcat3worker.controller.sticky_session=falseworker.controller.sticky_session_force=1#worker.controller.sticky_session=1
tomcat1
这个端口默认是:8009的
<Connector port="9988" protocol="AJP/1.3" redirectPort="8443" />
这里的是说名配置的是tomcat1
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">
这句话默认是注释的,我们为了能集群,去掉注释
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
tomcat2
<Connector port="9999" protocol="AJP/1.3" redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat2">
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
小结: 这里就大概可以看出来 tomcat中的配置是根据 apacer的 worker.properties 中的配置文件相应的参数设置的。
4、修改tomcat2 service.xml文件的,我的tomcat是放在同一个机器上的,所以还要修改一些端口,不然启动会报错,当然如果tomcat是部署在不同的机器上,那么这一步可以省了
这两个配置 tomcat中应该是配置不同的,如果端口相同在同一个机器上启动就会报错
<Server port="9985" shutdown="SHUTDOWN">
<Connector port="9980" protocol="HTTP/1.1"
connectionTimeout="20000"redirectPort="8443" />
5、写一个测试项目(网上拷贝的)
<%@ page contentType="text/html; charset=GBK" %><%@ page import="java.util.*" %><html><head><title>Cluster App Test</title></head><body><%System.out.println("SessionID:" + session.getId());%>Server Info:<%out.println(request.getServerName() + " : " + request.getServerPort()+"<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.print("<b>Session 列表</b><br>");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>
6、在web.xml中写上 <distributable/> (表示可以分配的)
7、把项目发布到tomcat1和tomcat2中,启动tomcat1和tomcat2(先后启动无关)
6、在浏览器中输入
http://localhost/test/test2.jsp;不断刷新,可以看到session ID 不变,session内容不变,但是它是轮流请求 tomcat1 和 tomcat2的