[服务器]基于mod_proxy+Apache 2.2.16+Tomcat 7的负载均衡与集群配置(二)

5 篇文章 0 订阅
2 篇文章 0 订阅
  第五章. 集群测试
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_b
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文件
稍前面加上
Java代码  
# 监听端口和监听地址
Listen 8000

2. conf/httpd.conf,去掉以下文本前的注释符(#)以便让Apache在启动时自动加载代理(proxy)模块。
Java代码
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
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值