Apache负载均衡+tomcat

本文介绍了在虚拟机上配置Apache负载均衡的过程,通过调整权值实现对Tomcat服务器的访问控制。详细步骤包括确保相关模块加载,设置BalancerMember权重,并通过ProxyPass指定访问路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2014-04-15

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

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



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     <Proxy balancer://mycluster>
1019           BalancerMember http://192.168.32.100:8080 loadfactor=1
1020           BalancerMember http://192.168.32.250:8080 loadfactor=1 status=+H  
1022     </Proxy>
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. <Location /balancer-manager>  
  3.     SetHandler balancer-manager  
  4.     order Deny,Allow  
  5.     Deny from all  
  6.     Allow from localhost  
  7. </Location>  
5.图片为测试服务是否成功
  (1)测试访问结果

再次访问的时候:依然是上面的结果:因为我添加了status +H 备份模式
(2)kill掉主节点的tomcat后再次访问

此时访问到了备份的服务器上:
(3)当我们将主节点服务器启动时候再次访问,会重新访问到主服务器了:
注:由于不会编程index.jsp是抄袭的,替换wabapps里面的ROOT中的index.jsp

代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.util.*" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<% 
  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="index.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>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值