Chinaunix首页 | 论坛 | 博客
  • 博客访问: 208098
  • 博文数量: 53
  • 博客积分: 2059
  • 博客等级: 大尉
  • 技术积分: 577
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-30 03:03
文章分类
文章存档

2012年(4)

2011年(19)

2010年(30)

分类: LINUX

2011-09-28 17:34:13

最近公司项目由于开发人员没有sessions共享的概念,所以准备使用tomcat集群来完成session的共享。
首先,测试环境如下:
      |-tomcat01 :8081   shutdown 8015
Nginx -|-tomcat02 :8082   shutdown 8025
      |_tomcat03 :8083   shutdown 8035
1,详细部署
1,1JDK安装
./jdk-6u25-linux-x64-rpm.bin 
vim /etc/profile
添加如下配置,由于打算在同一台服务器上安装多个tomcat,如下配置:
JAVA_HOME=/usr/java/jdk1.6.0_25
CLASS_PATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib
PATH=$PATH:$JAVA_HOME/bin:.
export  JAVA_HOME
1,2安装tomcat
tar -zxvf apache-tomcat-7.0.20.tar.gz 
  mv apache-tomcat-7.0.20 tomcat01
  cd /usr/tomcat01/conf/
vim /usr/tomcat01/conf/server.xml#分别更改tomcat目录下server.xml的配置,端口按照之前设置的。
tomcat01

 
 

 tomcat02
 
 

  tomcat03
   
 
1,3配置tomcat启动变量 同理tomcat01 tomcat02 tomcat03
vim /usr/tomcat01/bin/startup.sh 
添加如下定义
JAVA_HOME=/usr/java/jdk1.6.0_25
CATALINA_HOME=/usr/tomcat01
export  CATALINA_HOME
1,4配置集群
vim /usr/tomcat01/conf/server.xml
+++++++++++++++++++++++++++++++++++++++++++
  1. channelSendOptions="8">
  2. expireSessionsOnShutdown="false"
  3. notifyListenersOnReplication="true"/>
  4. #tomcat集群IO层配置
  5. address="228.0.0.4" #组播地址
  6. port="45564"
  7. frequency="500"
  8. dropTime="3000"/>
  9. address="auto"
  10. port="4000"
  11. autoBind="100"
  12. selectorTimeout="5000"
  13. maxThreads="6"/>
  14. filter=""/>
  15. tempDir="/tmp/war-temp/"
  16. deployDir="/tmp/war-deploy/"
  17. watchDir="/tmp/war-listen/"
  18. watchEnabled="false"/>
按照如上的配置,分别配置tomcat01 02 03
然后在
vim /usr/tomcat01/webapps/ROOT/WEB-INF/web.xml
添加该配置
2,配置Nginx(略)
  1. upstream bakend {
  2. server 127.0.0.1:8081 weight=10;
  3. server 127.0.0.1:8082 weight=10;
  4. server 127.0.0.1:8083 weight=10;
  5. }
3,分别在tomcat的webapps目录下放如下测试脚本:
  1. <%@ page contentType="text/html; charset=Utf8" %>
  2. <%@ page import="java.util.*" %>
  3. Cluster App Test
  4. Server Info:
  5. <%
  6. out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"
    ");%>
  7. <%
  8. out.println("
    ID " + session.getId()+"
    ");
  9. String dataName = request.getParameter("dataName");
  10. if (dataName != null && dataName.length() > 0) {
  11. String dataValue = request.getParameter("dataValue");
  12. session.setAttribute(dataName, dataValue);
  13. }
  14. out.print("Session List");
  15. Enumeration e = session.getAttributeNames();
  16. while (e.hasMoreElements()) {
  17. String name = (String)e.nextElement();
  18. String value = session.getAttribute(name).toString();
  19. out.println( name + " = " + value+"
    ");
  20. System.out.println( name + " = " + value);
  21. }
  22. %>
  23. Name:

  24. Value:

4,启动nginx和tomcat集群
然后在浏览器输入
在name和Value输入
提交页面发现seession只会在各个tomcat直接复制,且输入的值不变




5,查看主机日志会有如下:
  1. Sep 28, 2011 4:30:48 PM org.apache.catalina.ha.tcp.SimpleTcpCluster memberAdded
  2. INFO: Replication member added:org.apache.catalina.tribes.membership.MemberImpl[tcp://{127, 0, 0, 1}:4002,{127, 0, 0, 1},4002, alive=58252, securePort=-1, UDP Port=-1, id={-103 -97 33 33 -4 -105 77 -113 -110 108 -31 122 67 -90 -22 123 }, payload={}, command={}, domain={}, ]
  3. Sep 28, 2011 4:30:48 PM org.apache.catalina.ha.tcp.SimpleTcpCluster memberAdded
  4. INFO: Replication member added:org.apache.catalina.tribes.membership.MemberImpl[tcp://{127, 0, 0, 1}:4001,{127, 0, 0, 1},4001, alive=79844, securePort=-1, UDP Port=-1, id={-29 -73 109 76 57 4 64 -50 -69 32 -7 -44 78 90 -115 -60 }, payload={}, command={}, domain={}, ]
  5. Sep 28, 2011 4:30:48 PM org.apache.catalina.tribes.io.BufferPool getBufferPool
  6. INFO: Created a buffer pool with max size:104857600 bytes of type:org.apache.catalina.tribes.io.BufferPool15Impl
通过监听端口可以发现,session正常进行复制了。













阅读(2073) | 评论(0) | 转发(0) |
0

上一篇:Nginx和php

下一篇:rsync同步相关设置

给主人留下些什么吧!~~