第五章. 集群测试
1. tomcat7_a和tomcat7_b的cluster工程中分别添加测试文件:testCluster.jsp
3. 进入http://localhost:8081/cluster/testCluster.jsp 对应tomcat7_a(8081),登录几次,可看到
4. 另外打开一个浏览器,进入http://localhost:8082/cluster/testCluster.jsp对应tomcat7_b(8082),登录name:tomcat_b,value:b value可看到
5. 刷新tomcat7_a(8081)相关页面,可以看到从tomcat7_b提交的值session同步过来了,说明集群成功。
第六章. Session集群工作步骤
参照tomcat7 doc:
To make it easy to understand how clustering works, We are gonna take you through a series of scenarios. In the scenario we only plan to use two tomcat instances TomcatA and TomcatB. We will cover the following sequence of events:
1. TomcatA starts up
2. TomcatB starts up (Wait that TomcatA start is complete)
3. TomcatA receives a request, a session S1 is created.
4. TomcatA crashes
5. TomcatB receives a request for session S1
6. TomcatA starts up
7. TomcatA receives a request, invalidate is called on the session (S1)
8. TomcatB receives a request, for a new session (S2)
9. TomcatA The session S2 expires due to inactivity.
第七章. 负载均衡配置
Tomcat有两种负载均衡的方式:
1. 使用 JK1.2.x native connector
2. 使用Apache HTTP Server 2.x with mod_proxy
我们使用的是mod_proxy,在Apache Http Server2.2以上版本已经自动带有:
Mod_proxy supports either HTTP or AJP load balancing. 我们通过ajp方式。
详细查看:tomcat7\webapps\docs\balancer-howto.html
1. 首先,监听8000端口, 在Apache安装目录下找到conf/httpd.conf文件
稍前面加上
2. conf/httpd.conf,去掉以下文本前的注释符(#)以便让Apache在启动时自动加载代理(proxy)模块。
3. conf/httpd.conf文件最后加上:
因为是同一机器,两个应用,所以配不同的端口,不同机器则不用配,要和前面的ajp对应上。
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
<Connector port="9009" protocol="AJP/1.3" redirectPort="8443" />
第八章. 负载均衡测试
Tomcat7_a的cluster工程的测试文件:testCluster.jsp加上html代码:
<b>负载均衡测试:此为:Tomcat7_a上的文件,<font color=red>aaaaaaaaaaaaaaaaaa</font><b>
Tomcat7_b的cluster工程的测试文件:testCluster.jsp加上html代码
<b>负载均衡测试:此为:Tomcat7_b上的文件,<font color=red>bbbbbbbbbbbbbbbbbb</font><b>
打开浏览器,进入地址:http://localhost:8000/cluster/testCluster.jsp
多刷新几次,会看到页面值会在aaaaa和bbbbb间切换,说明负载均衡配置成功。
第九章. Mod_proxy负载均衡算法
目前mod_proxy有3种负载均衡算法:
1. Request Counting(我猜是Round-robin), lbmethod=byrequests
2. Weighted Traffic Counting(这个是按权重,此例也是用此算法), lbmethod=bytraffic
3. Pending Request Counting(从apche文档来看,应该是按负载量,也就是往负载少的派发新请求). lbmethod=bybusyness
它们通过lbmethod值设置。
第十章. 参考文档:
Tomcat 7 doc文档
http://httpd.apache.org/docs/2.2/mod/mod_proxy_balancer.html
http://httpd.apache.org/docs/2.2/mod/mod_proxy.html
第十一章. 补充内容:负载均衡管理器
负载均衡管理器可以动态更新负载均衡的应用,你可以用管理器更改负载因子或者特定的应用,还可以把应用设为off模式。
为了使用balancer management, mod_status和mod_proxy_balancer 必需要加载到apache.
设置:
#此项为mod_proxy_balancer管理器需要
LoadModule status_module modules/mod_status.so
在负载均衡项前加上:
#mod_balancer管理应用
<Location /balancer-manager>
SetHandler balancer-manager
Order Allow,Deny
Allow from all
</Location>
可以通过以下地址访问:http://localhost:8000/balancer-manager
1. tomcat7_a和tomcat7_b的cluster工程中分别添加测试文件:testCluster.jsp
<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="java.util.*" %>
<html><head><title>Cluster Test</title></head>
<body>
<%
//HttpSession session = request.getSession(true);
System.out.println(session.getId());
out.println("<br> SESSION ID:" + session.getId()+"<br>");
// 如果有新的请求,则添加session属性
String name = request.getParameter("name");
if (name != null && name.length() > 0) {
String value = request.getParameter("value");
session.setAttribute(name, value);
}
out.print("<b>Session List:</b>");
Enumeration<String> names = session.getAttributeNames();
while (names.hasMoreElements()) {
String sname = names.nextElement();
String value = session.getAttribute(sname).toString();
out.println( sname + " = " + value+"<br>");
System.out.println( sname + " = " + value);
}
%>
<form action="testCluster.jsp" method="post">
名称:<input type=text size=20 name="name">
<br>
值:<input type=text size=20 name="value">
<br>
<input type=submit value="提交">
</form>
</body>
</html>
2. 启动tomcat7_a,启动完毕后,启动tomcat7_b3. 进入http://localhost:8081/cluster/testCluster.jsp 对应tomcat7_a(8081),登录几次,可看到
4. 另外打开一个浏览器,进入http://localhost:8082/cluster/testCluster.jsp对应tomcat7_b(8082),登录name:tomcat_b,value:b value可看到
5. 刷新tomcat7_a(8081)相关页面,可以看到从tomcat7_b提交的值session同步过来了,说明集群成功。
第六章. Session集群工作步骤
参照tomcat7 doc:
To make it easy to understand how clustering works, We are gonna take you through a series of scenarios. In the scenario we only plan to use two tomcat instances TomcatA and TomcatB. We will cover the following sequence of events:
1. TomcatA starts up
2. TomcatB starts up (Wait that TomcatA start is complete)
3. TomcatA receives a request, a session S1 is created.
4. TomcatA crashes
5. TomcatB receives a request for session S1
6. TomcatA starts up
7. TomcatA receives a request, invalidate is called on the session (S1)
8. TomcatB receives a request, for a new session (S2)
9. TomcatA The session S2 expires due to inactivity.
第七章. 负载均衡配置
Tomcat有两种负载均衡的方式:
1. 使用 JK1.2.x native connector
2. 使用Apache HTTP Server 2.x with mod_proxy
我们使用的是mod_proxy,在Apache Http Server2.2以上版本已经自动带有:
Mod_proxy supports either HTTP or AJP load balancing. 我们通过ajp方式。
详细查看:tomcat7\webapps\docs\balancer-howto.html
1. 首先,监听8000端口, 在Apache安装目录下找到conf/httpd.conf文件
稍前面加上
# 监听端口和监听地址
Listen 8000
2. conf/httpd.conf,去掉以下文本前的注释符(#)以便让Apache在启动时自动加载代理(proxy)模块。
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
3. conf/httpd.conf文件最后加上:
#虚拟机配置,负载均衡配置
<VirtualHost *:8000>
ServerAdmin weigbo@163.com
ServerName localhost
ServerAlias localhost
#小心,有些地方要有空格,要不然会出错哈哈。
ProxyPass / balancer://cluster/ stickysession=JSESSIONID|jsessionid nofailover=On
ProxyPassReverse / balancer://cluster/
#ErrorLog "logs/error.log"
#CustomLog "logs/access.log" common
</VirtualHost>
#The ProxyRequests directive should usually be set off when using ProxyPass.
ProxyRequests Off
<proxy balancer://cluster>
BalancerMember ajp://localhost:8009 loadfactor=1 route=tomcat7_a smax=5 max=20 ttl=120 retry=300 timeout=15
BalancerMember ajp://localhost:9009 loadfactor=1 route=tomcat7_b smax=5 max=20 ttl=120 retry=300 timeout=15
# status=+H为配置热备,当所有机器都over时,才会请求该机器
#BalancerMember http://192.168.1.218:8009 status=+H
ProxySet lbmethod=bytraffic
</proxy>
4. Tomcat7配置(server.xml):因为是同一机器,两个应用,所以配不同的端口,不同机器则不用配,要和前面的ajp对应上。
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
<Connector port="9009" protocol="AJP/1.3" redirectPort="8443" />
第八章. 负载均衡测试
Tomcat7_a的cluster工程的测试文件:testCluster.jsp加上html代码:
<b>负载均衡测试:此为:Tomcat7_a上的文件,<font color=red>aaaaaaaaaaaaaaaaaa</font><b>
Tomcat7_b的cluster工程的测试文件:testCluster.jsp加上html代码
<b>负载均衡测试:此为:Tomcat7_b上的文件,<font color=red>bbbbbbbbbbbbbbbbbb</font><b>
打开浏览器,进入地址:http://localhost:8000/cluster/testCluster.jsp
多刷新几次,会看到页面值会在aaaaa和bbbbb间切换,说明负载均衡配置成功。
第九章. Mod_proxy负载均衡算法
目前mod_proxy有3种负载均衡算法:
1. Request Counting(我猜是Round-robin), lbmethod=byrequests
2. Weighted Traffic Counting(这个是按权重,此例也是用此算法), lbmethod=bytraffic
3. Pending Request Counting(从apche文档来看,应该是按负载量,也就是往负载少的派发新请求). lbmethod=bybusyness
它们通过lbmethod值设置。
第十章. 参考文档:
Tomcat 7 doc文档
http://httpd.apache.org/docs/2.2/mod/mod_proxy_balancer.html
http://httpd.apache.org/docs/2.2/mod/mod_proxy.html
第十一章. 补充内容:负载均衡管理器
负载均衡管理器可以动态更新负载均衡的应用,你可以用管理器更改负载因子或者特定的应用,还可以把应用设为off模式。
为了使用balancer management, mod_status和mod_proxy_balancer 必需要加载到apache.
设置:
#此项为mod_proxy_balancer管理器需要
LoadModule status_module modules/mod_status.so
在负载均衡项前加上:
#mod_balancer管理应用
<Location /balancer-manager>
SetHandler balancer-manager
Order Allow,Deny
Allow from all
</Location>
可以通过以下地址访问:http://localhost:8000/balancer-manager