设为首页 收藏本站
查看: 1183|回复: 0

[经验分享] ajp_proxy连接Apache与Tomcat负载均衡与集群实践

[复制链接]

尚未签到

发表于 2017-1-13 09:59:00 | 显示全部楼层 |阅读模式
  一、测试环境:
   Apache  :apache_2.2.8
   Tomcat:  apache-tomcat-5.5.25 (zip版)
   链接方式有前文 Apache与Tomcat连接的三种方式 的三种。其中JK最老,但是配置复杂, http_proxy的性能太低,ajp_proxy 是自apache2.2以后推出的,配置简单,性能也不错。
二、本人采用的是
ajp_proxy的配置。
  其中apache的配置如下:

 #引入ajp模块
  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    
ProxyPass /test  balancer://mycluster stickysession=JSESSIONID
  
   BalancerMember ajp://localhost:8009/test route=tomcat1 loadfactor=50
   BalancerMember ajp://localhost:9009/test route=tomcat2 loadfactor=50
 
 #用于监控界面
 
   SetHandler balancer-manager


 
三、配置负载均衡(如果是水平集成,可以省略该步骤)。
如果你在不同电脑上安装tomcat,tomcat的安装数量为一个,可以不必修改tomcat配置文件

我这里是在同一台电脑上安装两个tomcat,所以需要更改其中一个的设置

打开tomcat2/conf/server.xml文件

1)将关闭Tomcat的监听端口改成由8005改为9005
即把
8005" shutdown="SHUTDOWN">
改为
9005" shutdown="SHUTDOWN">

2)把http服务端口号由8080改为9080
找到

    8080
"
把这里的8080改为9080

3)把AJP端口号由8009改为9009
找到

    8009
"
把这里的8009改为8109


到此负载均衡配置完毕。
四、配置集群

  只配置负载均衡还不行,还要session复制,也就是说其中任何一个tomcat的添加的session,是要同步复制到其它tomcat,集群内的tomcat都有相同的session。
1. 修改tomcat1, tomcat2的server.xml,将集群部分配置的在注释符删掉,并将tomcat2的4001端口改为4002,以避免与tomcat冲突,当然,如果是两台电脑,是不用改端口的,去掉注释符即可

2. 为Tomcat1和Tomcat2增加jvmRoute
在Tomcat1和Tomcat2的server.xml文件,找到

分别改为
jvmRoute="tomcat1">

jvmRoute="tomcat2">


说明:jvmRoute的配置是用来分开session的,即一个session只在一个tomcat中运行。

 

2,修改测试项目test

修改test.jsp,内容如下

  <%@ page contentType="text/html; charset=GBK" %>
<%@ page import="java.util.*" %>


Server Info:
<%
out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"
");%>
<%
  out.println("
ID " + session.getId()+"
");

  // 如果有新的 Session 属性设置
  String dataName = request.getParameter("dataName");
  if (dataName != null && dataName.length() > 0) {
     String dataValue = request.getParameter("dataValue");
     session.setAttribute(dataName, dataValue);
  }

  out.print("Session 列表");

  Enumeration e = session.getAttributeNames();
  while (e.hasMoreElements()) {
     String name = (String)e.nextElement();
     String value = session.getAttribute(name).toString();
     out.println( name + " = " + value+"
");
         System.out.println( name + " = " + value);
   }
%>
 


     名称:
    

    值:
    

   
  


然后在test 新建WEB-INF目录,WEB-INF下新建web.xml,内容如下

http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
       TomcatDemo
      

注意:在你的应用的web.xml加入  即可

ok,讲test复制到tomcat1,tomcat2的webapps下,重启apache,tomcat1,tomcat2,

输入网址 http://localhost/test/test.jsp  

新建一个session,提交查询,新开一个ie窗口,再提交查询,如图,可以看到,两个tomcat 是负载均衡,并且session同步的

五、结论


经过测试即使配置一个垂直的集成,在并发和稳定性方面都有很大的提升,水平的自不用说了。
以后抽时间看一下数据库的集成。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-327823-1-1.html 上篇帖子: apache_2.2.14+php-5.2.11+mysql5.0.18 下篇帖子: 使用DOM4J找不到org/apache/xerces/parsers/SAXParser解决方案
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表