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

[经验分享] apache2+tomcat5.5集群+session同步

[复制链接]

尚未签到

发表于 2018-12-6 12:14:04 | 显示全部楼层 |阅读模式
apache2+tomcat5.5集群+session同步  作者:刘宇 liuyu.blog.运维网.com
  msn群:mgroup49073@hotmail.com (linuxtone)
  说明:借前人之鉴,写一篇关于tomcat集群及session同步的问题,首先介绍tomcat集成及做集群的原因和必要性,session同步的作用。然后包括各软件的安装配置。
  原理:tomcat 做个WEB服务器有它的局限性,处理能力低,效率低。承受并发小(1000左右)。但目前有不少网站或者页面是JSP的。并采用了tomcat做为WEB,因此只能在此基础上调优。
  目前采取的办法是Apache + Mod_JK + tomcat 来解决一部分请求,用户访问的是apache,但有jsp页面的时候才会去请求tomcat。如果量一大,那么tomcat无法承受,那么只能做tomat集群,Apache + Mod_JK 就是负载均衡器了。
  Mod_JK2负载均衡 可以把不同的jsp请求转发到不同的tomcat服务器,还可以侦测服务器存活。如果有条件可以给Mod_JK2做一个HA因为做完集群后压力就在JK上了。
  简单拓仆图:
  一、测试环境及软件安装:-----如果已经安装过的可以省略这步
  linux 2.6 内核  centos 5.2
  本例二台tomcat 不在同一机器。
  先安装了所需的程序库
yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel下载源码包:(本文不安装PHP)  apache2 和tomcat5都可以在 apache.org 下载
  tomcat5需要JDK1.5的版本。
  JK本文用的源码包tomcat-connectors
  Apache 安装:
  # tar zxvf httpd-2.2.8.tar.gz
  #cd httpd-2.2.8
  # ./configure --prefix=/usr/local/apache2 --enable-modules=so --enable-so
  # make && make install
  /usr/local/apache2/bin/apachectrl start
  看到apache就配置成功了。
  JDK的安装
  #chmod 755 jdk-1_5_0_16-linux-i586.bin
  #./jdk-1_5_0_16-linux-i586.bin
  # mv jdk-1_5_0_16 /usr/local/
  到此JDK已经安装完成
  到/usr/bin目录下,把原用的java,javac文件删除:
  #rm -rf java
  #rm –rf javac
  在/usr/bin 下建立 软连接 java
# ln -s /usr/local/jdk-1_5_0_16/bin/java /usr/bin/java  # ln -s /usr/local/jdk-1_5_0_16/bin/javac /usr/bin/javac
  # java –version
  # javac -version
  java version "1.4.2_08"
  Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_08-b03)
  Java HotSpot(TM) Client VM (build 1.4.2_08-b03, mixed mode)
为了方便下在的工作建立两个软链接:  ln -s /usr/local/jdk-1_5_0_16  /usr/local/jdk
  ln -s /usr/local/jdk-1_5_0_16/jre /usr/local/jre
  Tomcat的安装
  #tar -zxvf apache-tomcat-5.5.27.tar.gz
  # mv apache-tomcat-5.5.27 /usr/local/tomcat
  设置环境变量:
#Set  Environment  by NetSeek  JAVA_HOME=/usr/local/jdk
  export JAVA_HOME
  JRE_HOME=/usr/local/jre
  export JRE_HOME
  CLASSPATH=/usr=/usr/local/tomcat/common/lib/:/usr/local/jdk/lib:/usr/local/jre/lib

  export>  PATH=$PATH:/usr/local/tomcat/bin/:/usr/local/apache/bin:/usr/local/jdk/bin:/usr/local/jre/bin
  export PATH
  TOMCAT_HOME=/usr/local/tomcat
  export TOMCAT_HOME
启动tomcat以检查是否存在错误:  #cd /usr/local/tomcat/bin
  #./startup.sh
  http://IP地址:8080 可以看到猫头:)成功了。
  在另一台机器上也安装tomcat 并配置好。
  JK 安装 (整合apache tomcat)
  # tar zxvf tomcat-connectors-1.2.27-src.tar.gz
  #cd tomcat-connectors-1.2.27-src/native
  # ./configure --with-apxs=/usr/local/apache2/bin/apxs --with-java-home=/usr/local/jdk
  # make && make install
  在/usr/local/apache2/modules/ 下会产生mod_jk.so
  修改apache配置文件:
LoadModule jk_module modules/mod_jk.so  JkWorkersFile /usr/local/tomcat/conf/jk/workers.properties   JK配置文件 负载的配置
  JkShmFile logs/mod_jk.shm
  JkLogFile /usr/local/tomcat/logs/mod_jk.log  相关日志的设置
  JkLogLevel info
  JkMount /*.jsp controller  将jsp的请求转发给 controller(负载均衡控制器)
修改DoucmentRoot 与tomcat的目录一致。  本文修改为:/usr/local/tomcat/webapps/
  二、调度器JK的配置
  建立JK配置文件:
  #vi /usr/local/tomcat/conf/jk/workers.properties
workers.tomcat_home=/usr/local/tomcat    #指定tomcat的目录――如果2个tomcat在同一台机器该选项去掉  workers.java_home=/usr/local/jdk         #指定jdk的目录
  ps=/
  worker.list=controller                   #指定负载名,这个可以随便起,与下面的 worker.controller.type=lb要对应
  #========tomcat1======== 第一台tomcat的配置
  worker.tomcat1.port=8009
  worker.tomcat1.host=localhost   #这里也可以写IP
  worker.tomcat1.type=ajp13
  worker.tomcat1.lbfactor=1       #权量 数值越大,分配的机率就最小
  #========tomcat2===========
  worker.tomcat2.port=8009
  worker.tomcat2.host=192.168.19.81 (tomcat2的IP)
  worker.tomcat2.type=ajp13
  worker.tomcat2.lbfactor=1
  #========controller,负载均衡器=======
  worker.controller.type=lb
  worker.controller.balance_workers=tomcat1,tomcat2  # server.xml配置文件里的jvmRoute="tomcat1"指定的名字
  worker.controller.sticky_session=1
三、tomcat集群配置,session 同步配置:  1、tomca1 tomcat 2 在同一台机器
  Tomcat 1  (IP: 192.168.19.199)
A、修改Engine节点信息:   B、去掉   的注释符
  C、修改Cluster 节点信息
  
  
Tomcat 2  (IP: 192.168.19.81) A、修改Engine节点信息:   B、去掉   的注释符
  C、修改Cluster 节点信息
  
  
  D、将8080 8009 8082三个节点的端口改为
  9080 9009 9082 避免 与tomcat1端口冲突
  注:这里的IP也可以不改
2、tomca1 tomcat 2 在不同机器上  Tomcat 1  (IP: 192.168.19.199)
  A、修改Engine节点信息:
  B、去掉   的注释符
  C、修改Cluster 节点信息
  
  
Tomcat 2  (IP: 192.168.19.81) A、修改Engine节点信息:   B、去掉   的注释符
  C、修改Cluster 节点信息
  
  
修改web应用里面WEB-INF目录下的web.xml文件,加入标签  
  直接加在之前就可以了
  做tomcat集群必须需要这一步,否则用户的session就无法正常使用。
  注意事项:1、mcastAddr="224.0.0.1"  这主广播地址因此需要开启网卡组播功能
  route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0
  分别在各机器上运行
  2、查看端口情况:
  Netstat –antl |grep 4001 同步监听的端口
  tomcat1
  tomcat2
  3、测试广播:
  java -cp tomcat-replication.jar MCaster 224.0.0.1 45564 Terminal1
  java -cp tomcat-replication.jar MCaster 224.0.0.1 45564 Terminal2
  如果不报错则能正常广播
  tomcat-replication.jar 下载:http://cvs.apache.org/~fhanik/tomcat-replication.jar
  如果是二台机器,可以用tcpdump 抓取包
  五、测试 集群及session同步
  在webapps 下新建test 目录
  目录下建WEB-INF目录下的web.xml文件

  TomcatDemo
  
  
再在webapps 下 建立print.jsp   test.jsp  Print.jsp :

test.jsp   
  Cluster App Test
  
  Server Info:
  
  ");
  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);
  }
  %>
  

  û³?  

  ?:  
  
  
  
  
重启所有的服务。  访问 http://192.168.19.199/test/print.jsp
  如图可以看出tomcat 集群配置完成
  Session 复制的查看
  在同一窗口,输入名称和值,
  在日志可以看到如下结果. 这种结果表明成功了
  tomcat1
  tomca2
  错误总汇:
  skipping state transfer. No members active in cluster group."
  mcastBindAddress 没有添加或添加得不对
  ?Unknown default host: ajp13
  JK 配置不当


运维网声明 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-643968-1-1.html 上篇帖子: 第1 章在Tomcat中快速上手 下篇帖子: jvisualvm 远程监控Linux下的tomcat
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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