Apache负载均衡+tomcat

2014-04-15

今天做了一件很有意思的事情,对于我来说算是一个挑战了,研究了Apache的负载均衡,虽然研究的很简单,但是还是很好玩的。

我是在虚拟机上做的。简单架构是下面这样的:tomcat1和Apache跑在了同一个虚拟机上:


Apache负载均衡+tomcat_第1张图片

1.首先保证/et c/httpd/conf/httpd.conf以下参数没有被注释掉

  1. LoadModule proxy_module modules/mod_proxy.so  
  2. LoadModule proxy_balancer_module modules/mod_proxy_balancer.so  
  3. LoadModule proxy_http_module modules/mod_proxy_http.so

2.修改httpd.conf配置文件,添加如下

1017            ProxyRequests Off
1018    
1019           BalancerMember http://192.168.32.100:8080 loadfactor=1
1020           BalancerMember http://192.168.32.250:8080 loadfactor=1 status=+H  
1022    

1023     ProxyPass /swmagic balancer://mycluster

#loadfactor=1 

 此参数为权值,例如你的权值越大,那相当于访问此tomcat几率越大,这是一种算法

#BalancerMember http://192.168.32.250:8080 loadfactor=1 status=+H 

 后面加了status=+H 表示将此台服务器作为备份服务器:每次访问的时候都会访问第一台服务器上的tomcat:即192.168.32.100这台,它会实时的去检测主节点是否当机,如果当机了会马上切换到此背负的服务器上。如果不加则按照设定的权值去访问服务器 

#ProxyPass ProxyPass /swmagic balancer://mycluster  

ProxyPass后面的参数/swmagic可以自己任意设定:例如我访问tomcat的时候后面就要加上/swmagic就可以了。

3.lbmethod表示负载均衡的算法,lbmethod可能的取值有: 
lbmethod=byrequests 按照请求次数均衡(默认)                 
lbmethod=bytraffic 按照流量均衡 
lbmethod=bybusyness 按照繁忙程度均衡(总是分配给活跃请求数最少的服务器) 这个目前还没有试过,这个是抄的:

4.

  1. # 警告:以下这段配置仅用于调试,绝不要添加到生产环境中!!!  
  2.   
  3.     SetHandler balancer-manager  
  4.     order Deny,Allow  
  5.     Deny from all  
  6.     Allow from localhost  
  7.  
5.图片为测试服务是否成功
  (1)测试访问结果
Apache负载均衡+tomcat_第2张图片
再次访问的时候:依然是上面的结果:因为我添加了status +H 备份模式
(2)kill掉主节点的tomcat后再次访问
Apache负载均衡+tomcat_第3张图片
此时访问到了备份的服务器上:
(3)当我们将主节点服务器启动时候再次访问,会重新访问到主服务器了:
注:由于不会编程index.jsp是抄袭的,替换wabapps里面的ROOT中的index.jsp

代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.util.*" %> 




Insert title here


<% 
  System.out.println(session.getId()); 
  out.println("
SESSION ID:" + session.getId()+"
"); // 如果有新的请求,则添加session属性 String name = request.getParameter("name"); if (name != null && name.length() > 0) { String value = request.getParameter("value"); session.setAttribute(name, value); } out.print("Session List:"); Enumeration names = session.getAttributeNames(); while (names.hasMoreElements()) { String sname = names.nextElement(); String value = session.getAttribute(sname).toString(); out.println( sname + " = " + value+"
"); System.out.println( sname + " = " + value); } %>
名称:
值:



你可能感兴趣的:(tomcat+mysql,linux操作系统)