配置Apache
官方下载地址:http://httpd.apache.org/download.cgi#apache20
CSDN下载地址:
Apache安装方法不赘述,网上一搜一大把,能够访问http://localhost/则说明安装成功
安装配置Tomcat
官方下载地址:http://tomcat.apache.org/download-70.cgi
CSDN下载地址:
在我的机器上Tomcat安装路径如下:
C:\Program Files\Apache Software Foundation\Tomcat 7.0
在eclipse中点击window->Show View->Server
在server选项卡中新建三个server,分别起名为Server-1/Server-2/Server-3方法如下:
JK
官方下载地址:http://www.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/windows/
选择合适的版本下载,这里我们使用tomcat-connectors-1.2.37-windows-i386-httpd-2.0.x.zip
下面开始配置过程
修改Apache配置
- 修改http.conf
我的Apache安装在D:\Program Files\Apache Group\Apache2,在该目录下的conf目录下的httpd.conf,在文件的最后添加一行:
include "D:\Program Files\Apache Group\Apache2\conf\mod_jk.conf"
- 新建mod_jk.conf文件,并且在该文件中写入如下内容:
LoadModule jk_module modules/mod_jk.so
JkWorkersFile conf/workers.properties
#指定那些请求交给tomcat处理,"controller"为在workers.propertise里指定的负载分配控制器名
JkMount /*.jsp controller
- 将下载的JK插件mod_jk.so复制到Apache安装目录下的modules目录下。
- 新建并且编辑workers.properties文件,内容如下:
#server
worker.list = controller
#========tomcat1========
worker.tomcat1.port=9080
worker.tomcat1.host=localhost
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor = 1
#========tomcat2========
worker.tomcat2.port=9000
worker.tomcat2.host=localhost
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor = 1
#========tomcat3========
worker.tomcat3.port=9070
worker.tomcat3.host=localhost
worker.tomcat3.type=ajp13
worker.tomcat3.lbfactor = 1
#========controller,负载均衡控制器========
worker.controller.type=lb
worker.controller.balanced_workers=tomcat1,tomcat2,tomcat3
worker.controller.sticky_session=false
worker.controller.sticky_session_force=1
#worker.controller.sticky_session=1
配置Tomcat
这里可以配置任意多个Tomcat,此处配置了3个Tomat服务器.
修改每个Tomcat对应的server.xml
Server-1:
类似地:
Server-2:
Server-3:
建立测试项目工程名为Test,工程目录如下:
- 在web.xml文件中添加 <distributable/>
- 在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="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>
将项目部署到3个服务器,然后分别启动Apache和3个Tocmat服务器,这些Tomcat启动顺序随意,然后打开http://localhost/test/test.jsp,
点击刷新页面(F5),多次刷新页面的sessionID看是同一个ID,说明session是复制成功了。
多次刷新页面的sessionID看是同一个ID,说明session是复制成功了。