读书人

apache tomcat负载均衡实验记要

发布时间: 2012-08-29 08:40:14 作者: rapoo

apache tomcat负载均衡实验记录

?

http://www.iteye.com/topic/1017961

?

?

?

?

?

准备工作

Tomcat7?http://tomcat.apache.org/download-70.cgi

apache httpd server 2.2:?http://httpd.apache.org/download.cgi

apache tomcat connector:?http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/win32/jk-1.2.31/

?

相关文档:

web server how to:

http://tomcat.apache.org/connectors-doc/webserver_howto/apache.html

?

安装路径:

httpd: ? ? ? ? ? ? D:\Server\Apache httpd2_2

tomcatD:\Server\tomcat7-1 tomcat7-2 tomcat7-3

JK?D:\Server\Apache httpd2_2\modules\mod_jk-1.2.31-httpd-2.2.3.so

?

step 1: 添加并配置JK

D:\Server\Apache httpd2_2\conf\httpd.conf文件最后加上,意思是把这个配置加载进来

?

include conf\mod_jk.conf

?

LoadModule jk_module modules/mod_jk-1.2.31-httpd-2.2.3.soJkWorkersFile conf/workers.properties#指定那些请求交给tomcat处理,"controller"为在workers.propertise里指定的负载分配控制器名JkMount /*.jsp controller?

?

Step 2: 配置worker

#serverworker.list = controller#========tomcat1========worker.tomcat1.port=11009worker.tomcat1.host=localhostworker.tomcat1.type=ajp13worker.tomcat1.lbfactor = 1#========tomcat2========worker.tomcat2.port=12009worker.tomcat2.host=localhostworker.tomcat2.type=ajp13worker.tomcat2.lbfactor = 1#========tomcat3========worker.tomcat3.port=13009worker.tomcat3.host=192.168.0.80 //在我的虚拟机中的,可以算远程的吧worker.tomcat3.type=ajp13worker.tomcat3.lbfactor = 1 #========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

?

如果三个tomcat不在同一台机器上,那么下面改端口的事情就可以省很多力气,不过因为要单机做负载均衡,所以要更改三个tomcat的8005,8080的端口,确保都不一样,不然tomcat是没办法同时启动三个的。

?

测试的时候我三个tomcat都放在本地,因为要同时启动三个tomcat,所以需要更改三个tomcat中的Connector端口号,将三个tomcat的的protocol="HTTP/1.1" 的connector的port改为10080,11080,12080。(原来是8080)

?

同时讲原来8005的端口分别改成10005,11005,12005(这个是关闭tomcat的端口号)

?

tomcat7-1

?

?

    <Connector port="10080" protocol="HTTP/1.1" connectionTimeout="20000"                redirectPort="8443" />
?

?

tomcat7-2

?

    <Connector port="11080" protocol="HTTP/1.1" connectionTimeout="20000"                redirectPort="8443" />
?

?

tomcat7-3

?

    <Connector port="12080" protocol="HTTP/1.1" connectionTimeout="20000"                redirectPort="8443" />
?

除了更改server.xml中 原来的8080的端口(protocol="HTTP/1.1" 的端口号)

还需要配置AJP13的端口号,同时打开默认注释掉的<Cluster>标签,对应的<Engine>的jvmRoute改成workers.property里面对应的名字,配置如下(删除了注释)

tomcat7-1

?

<Connector port="11009" protocol="AJP/1.3" redirectPort="8443" />    <Engine name="Catalina" defaultHost="localhost"                   jvmRoute="tomcat1">      <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
?

tomcat7-2

?

<Connector port="12009" protocol="AJP/1.3" redirectPort="8443" />    <Engine name="Catalina" defaultHost="localhost"                   jvmRoute="tomcat2">      <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
?

?

tomcat7-3

?

<Connector port="13009" protocol="AJP/1.3" redirectPort="8443" />    <Engine name="Catalina" defaultHost="localhost"                   jvmRoute="tomcat3">      <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
?

?

OK,这时候可以成功启动三个tomcat7了,当tomcat7-2启动后,tomcat7-1会打印出replication的信息

类似于

?

2011-9-20 14:12:18 org.apache.catalina.ha.tcp.SimpleTcpCluster memberAdded信息: Replication member added:org.apache.catalina.tribes.membership.MemberImpl[tcp://{172, 16, 10, 96}:4001,{172, 16, 10, 96},4001, alive=1000, securePort=-1, UDP Port=-1, id={109 112 -14 -8 -44 98 79 85 -89 -48 -33 -127 -47 -3026 -75 }, payload={}, command={}, domain={}, ]
?

?

?

<%@ 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="testlb.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负载均衡实验记要apache tomcat负载均衡实验记要apache tomcat负载均衡实验记要多次刷新页面的sessionID看是同一个ID,说明session是复制成功了。那么session中的存储的东西呢,在输入框中分别输入1、1,2、2,3、3后,显示结果如下图:?apache tomcat负载均衡实验记要
apache tomcat负载均衡实验记要apache tomcat负载均衡实验记要

?

读书人网 >Apache

热点推荐