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

[经验分享] apache tomcat 集群 + session 复制

[复制链接]

尚未签到

发表于 2017-1-2 11:30:57 | 显示全部楼层 |阅读模式
  发过篇关于apache 跟 tomcat 多站点配置 整合的,所以这部分今天就不多说了,主要还是标题为主

集群这个东西说来话长,我长话短说  主要目标
  1、能够使用apache 跟 tomcat 实现集群
  2、能保证tomcat之间进行session值复制
  

  测试环境:apache2.2 、tomcat 7.0
  步骤一:加载mod_proxy_balancer.so 集群模块,网上都喜欢说找个这个东西,然后把前面的#号去掉,但是我懒一点不想找,如果你确定你以前没有配置过得话,直接在
  httpd.conf 的最下面加上以下一句:
  LoadModule proxy_balancer_module modules/mod_proxy_balancer.so

  步骤二:再加上以下几句

ProxyPass /examples  balancer://test stickysession=jsessionid nofailover=On
<proxy balancer://test/>
BalancerMember http://127.0.0.1:8080/examples  loadfactor=1 route=jvm1
BalancerMember http://127.0.0.1:9080/examples  loadfactor=1 route=jvm2
</proxy>
  简单说一下
  这里跟反向代理差不多,只不过以前代理后面直接跟的是目标服务器,现在变成了一个集群组了
  上面的test 是集群名字,随意取
  BalancerMember 后面的是集群成员,后面的东西就不用多说了,随便看看就知道大概什么意思了

  每个BalancerMember 代表一个集群,这里只有两个,当然还可以更多
  /examples 是tomcat 自带的一个应用,用它来测试一下就足以说明问题了
  启动两个tomcat,然后启动apache2.2
  如果你apache 没有配置过反向代理的话,会报错,配置过的话就没问题,没配置过的就加上
  LoadModule proxy_http_module modules/mod_proxy_http.so

LoadModule proxy_module modules/mod_proxy.so

  LoadModule proxy_balancer_module modules/mod_proxy_balancer.so

  步骤三:在每个tomcat 的webapps目录下的examples的WEB-INF/web.xml里面加上以下一句
  <distributable/>

  这叫的作用是现实session复制,挺简单的,加在头尾都行,我的是这样:
  

<description>
Servlet and JSP Examples.
</description>
<display-name>Servlet and JSP Examples</display-name>
<distributable/>

  步骤四:配置tomcat,分别修改tomcat的 server.xml 配置文件,
  Engine标签加上jvmRoute="jvm1"属性,之后变成:

  <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">

  把Engine下面的
  <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
  注释去掉即可
  上面的jvm1 分别用来表示tomcat的,另外一个tomcat可以用jvm2这样
  测试一下
  新建一个test.jsp ,假如内容来测试
  

<%@ page contentType="text/html; charset=UTF-8" %>
<%@ page import="java.util.*" %>
<html><head><title>Cluster App Test</title></head>
<body>
Server Info:  
<%  
out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"<br>");%>
<%  
out.println("<br> ID " + session.getId()+"<br>");   
String dataName = request.getParameter("dataName");  
if (dataName != null && dataName.length() > 0) {  
String dataValue = request.getParameter("dataValue");  
session.setAttribute(dataName, dataValue);  
}   
out.print("<b>Session 列表</b>");   
Enumeration e = session.getAttributeNames();  
while (e.hasMoreElements()) {  
String name = (String)e.nextElement();  
String value = session.getAttribute(name).toString();  
out.println( name + " = " + value+"<br>");  
System.out.println( name + " = " + value);  
}  
%>
<form action="test.jsp" method="POST">
名称:<input type=text size=20 name="dataName">
<br>
值:<input type=text size=20 name="dataValue">
<br>
<input type=submit>
</form>
</body>
</html>


分别复制一份到两个tomcat 的webapps 下的examples 目录下  最后
  打开浏览器,访问 http://127.0.0.1/examples/test.jsp
   DSC0000.png

  看到以上界面说明成功了,不断刷新,会发现端口跟jvm会一直切换
  说明集群已经起效了
  填上session name 跟值,提交 不管你怎么刷新,tomcat 怎么变,值都不会丢失,当然session id 也没变
  到这里就告一段落了,更多详情参考官网文档

运维网声明 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-322833-1-1.html 上篇帖子: apache多域名绑定 下篇帖子: Apache Maven 入门篇 ( 上 )
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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