本文使用的是Apache2.2+apache-tomcat-6.0.35+mod_jk-1.2.31-httpd-2.2.3.so在windows xp 环境下进行。
准备工作下载相关软件以及安装:
(1)下载Apache2.2.x服务,并且将其安装,其默认端口号为80,在浏览器中输入“http://localhost/”或者输入“http://127.0.0.1/”,如果能够浏览到如图1.34所示的窗口,说明Apache服务器安装成功。(有些旧版本不是显示这个)

(要想修改显示的页面,在apache文件夹里面,修改htdocs文件夹里面的index.html就可以)
(2)下载tomcat6或6以上版本,分别在D盘创建2个文件夹(tomcat1,tomcat1),然后将下载的tomcat解答到刚刚创建的2个目录下(D:\tomcat1\apache-tomcat-6.0.35,D:\tomcat2\apache-tomcat-6.0.35)。
(3)修改相关tomcat的server.xml文件。
修改tomcat1的server.xml文件如下:
将<Engine name="Catalina" defaultHost="localhost">
修改成<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">
将<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>的注释
解开。
注意:在Engine节点里面添加jvmRoute="jvm1"属性,将Cluster节点的注释解开。
修改tomcat2的server.xml文件如下:
将<Server port="8005" shutdown="SHUTDOWN">
修改成<Server port="8006" shutdown="SHUTDOWN">
将<Connector URIEncoding="UTF-8" port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
修改成<Connector URIEncoding="UTF-8" port="9090" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
将<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
修改成<Connector port="9009" protocol="AJP/1.3" redirectPort="8443" />
注意:因为本实例是在同一台机器上进行的,所以以上tomcat2的修改是避免tomcat的端口发生冲突而修改的,
如果不是在同一台机器上进行,以上操作可以避免。
将<Engine name="Catalina" defaultHost="localhost">
修改成<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm2">
将<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>的注释
解开
注意:在Engine节点里面添加jvmRoute="jvm2"属性,将Cluster节点的注释解开。
(3)下载mod_jk-1.2.31-httpd-2.2.3.so,将其放在Apache安装目录下的modules目录下。
(4)配置Apache相关文件。
a、我的Apache安装在E:\developspace\Server\Apache2.2,找到conf目录下的httpd.conf,在文件的最后一行添加
include "E:\developspace\Server\Apache2.2\conf\mod_jk.conf"
b、
新建mod_jk.conf
文件,内容如下:
LoadModule jk_module modules/mod_jk-1.2.31-httpd-2.2.3.so
JkWorkersFile conf/workers.properties
#指定那些请求交给tomcat处理,"controller"为在workers.propertise里指定的负载分配控制器名
JkMount /*.jsp controller c、
新建并编辑
workers.properties
文件,内容如下:
#server
worker.list = controller
#========tomcat1========
worker.jvm1.port=8009
worker.jvm1.host=localhost
worker.jvm1.type=ajp13
worker.jvm1.lbfactor = 1
#========tomcat2========
worker.jvm2.port=9009
worker.jvm2.host=localhost
worker.jvm2.type=ajp13
worker.jvm2.lbfactor = 1
#========controller,负载均衡控制器========
worker.controller.type=lb
worker.controller.balanced_workers=jvm1,jvm2
worker.controller.sticky_session=false
worker.controller.sticky_session_force=1
#worker.controller.sticky_session=1
准备工作下载相关软件以及安装完毕。
准备即将测试的工程。
a、用eclipse创建一个web工程,我这边的工程名为test
b、在test工程里创建一个jsp文件,我这边的是test.jsp,其内容如下:
<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="java.util.*" %>
<html>
<head>
<title>test</title>
</head>
<body>
Server Info:
<% out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"<br>");%>
<% out.println("<br> session 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/><br/>
值:<input type=text size=20 name="dataValue"><br/><br/>
<input type=submit value="提交"/>
</form>
</body>
</html>
c、在工程的web.xml文件里面添加<distributable/>节点。
d、将工程分别打成war包,拷贝到D:\tomcat1\apache-tomcat-6.0.35\webapps和
D:\tomcat2\apache-tomcat-6.0.35\webapps下,并分别启动tomcat1、tomcat2
开始测试我们的成果:
在浏览器地址上输入:http://11.11.4.55/test/test.jsp
如果访问的test.jsp页面出现,说明离我们的成功差不多了,接下来继续
在test.jsp页面上的文本框分别随便输入,然后“提交”按钮
页面效果如下:

在当前浏览器下在开一个窗口,并在地址上输入:http://11.11.4.55/test/test.jsp,效果如下:

注意:session ID一样,并且都成功调转到jvm1、jvm2所对应的tomcat1、tomcat2上,并且在tomcat1、tomcat2都可以看到打印的日志。
到此我们配置的负载均衡已实现,并且session也得到共享。
本文详细介绍了如何使用Apache2.2与Tomcat6搭建负载均衡环境,并通过mod_jk模块实现两个Tomcat服务器之间的负载均衡及session共享。

1143

被折叠的 条评论
为什么被折叠?



