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

[经验分享] httpd+tomcat+memcached实现session保持

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-9-29 09:27:07 | 显示全部楼层 |阅读模式
本节我将带大家认识tomcat以及如何基于memcached实现tomcat的会话保持。好了废话不多说,下面我们就开始了。
tomcat的介绍
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。实际上Tomcat 是Apache 服务器的扩展,但它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。通常在我们的应用过程中,我们让Apache 来处理HTML页面请求,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。
tomcat的安装
首先我们要做到是部署Java环境,只有安装JDK即可。
这里我已经有下好的JDK了
我使用的是jdk-7u9-linux-x64.rpm这个版本
直接安装即可。
[iyunv@TomcatA ~]# rpm -ivh jdk-7u9-linux-x64.rpm
tomcat的话我这里也是下载好了。直接解压就可以用了apache-tomcat-7.0.55.tar.gz
[iyunv@TomcatA ~]# tar xf apache-tomcat-7.0.55.tar.gz -C /usr/local/             我们把它放在/usr/local/
一般我们都做个链接
[iyunv@TomcatA local]# ln -sv apache-tomcat-7.0.55/ tomcat
下面修改下环境变量
[iyunv@TomcatA local]# cat /etc/profile.d/java.sh                      这个是Java的变量
JAVA_HOME=/usr/java/latest   
PATH=$JAVA_HOME/bin:$PATH   
export JAVA_HOME PATH
[iyunv@TomcatA local]# cat /etc/profile.d/tomcat.sh                  这个是tomcat的
export CATALINA_HOME=/usr/local/tomcat   
export PATH=$CATALINA_HOME/bin:$PATH
好了下面就可以使用Catalina.sh 来启动了                                     Catalina.sh是服务启动脚本
[iyunv@TomcatA local]# catalina.sh start   
Using CATALINA_BASE:   /usr/local/tomcat   
Using CATALINA_HOME:   /usr/local/tomcat   
Using CATALINA_TMPDIR: /usr/local/tomcat/temp   
Using JRE_HOME:        /usr/java/latest   
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar   
Tomcat started.
这样tomcat就启动了。
[iyunv@TomcatA local]# netstat -tnlp   
Active Internet connections (only servers)   
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      1473/rpcbind        
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1726/sshd           
tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      1578/cupsd         
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      1823/master         
tcp        0      0 0.0.0.0:46718               0.0.0.0:*                   LISTEN      1549/rpc.statd      
tcp        0      0 :::36716                    :::*                        LISTEN      1549/rpc.statd      
tcp        0      0 :::111                      :::*                        LISTEN      1473/rpcbind        
tcp        0      0 :::8080                     :::*                        LISTEN      2147/java           
tcp        0      0 :::22                       :::*                        LISTEN      1726/sshd           
tcp        0      0 ::1:631                     :::*                        LISTEN      1578/cupsd         
tcp        0      0 ::1:25                      :::*                        LISTEN      1823/master         
tcp        0      0 ::ffff:127.0.0.1:8005       :::*                        LISTEN      2147/java           
tcp        0      0 :::8009                     :::*                        LISTEN      2147/java

通过上面的结果我们可以看出该服务启动了3个端口:8080   8009    8005
下面我们就可以直接通过浏览器看下了。通过8080端口访问。
wKiom1QoIgaRtLaDAAEMXKvryac127.jpg
OK,tomcat服务以及可以启用了。

那么下面我们就来看看如何构建Apache+tomcat+memcached架构
实验:   
前端Apache:192.168.1.200
tomcat节点:192.168.1.201(TomcatA),192.168.1.202(TomcatB)   
memcached节点(一主一备实现高可用):192.168.1.201, 192.168.1.202    (机器内存有限,所以就没有用独立的主机了)   
实验拓扑图:
wKioL1QoIi-AVROCAAEYsE_VpHo417.jpg
前端Apache服务器配置
我们这里用到的是Apache的代理模块,由于centos6.5中内核支持该代理模块,因此我们只需要直接yum安装httpd然后再配置文件中加入以下文件即可:
[iyunv@bogon ~]# vim /etc/httpd/conf.d/mod_proxy.conf   
     
BalancerMember http://192.168.1.202:8080 loadfactor=1
BalancerMember http://192.168.1.201:8080 loadfactor=1     
ProxySet lbmethod=byrequests     

ProxyVia Off  
ProxyRequests Off  
ProxyPass / balancer://lbcluster1/   
ProxyPassReverse / balancer://lbcluster1/

memcached服务器
缓存服务器直接在2个节点上yum安装即可,非常简单
yum install memcached
安装好之后启动服务
[iyunv@localhost ~]# service memcached start   
Starting memcached:                                        [  OK  ]
可以看到11211端口打开
[iyunv@localhost ~]# ss -tnl   
State       Recv-Q Send-Q                      Local Address:Port                        Peer Address:Port     
LISTEN      0      128                                    :::11211                                 :::*     
LISTEN      0      128                                     *:11211                                  *:*  



tomcat端配置
最关键的就是tomcat的配置了
实现会话保持我们用到的是memcached-session-manager,而他需要一下几个类库,我已经下载好了
这个是项目官方地址,可以到这里进行下载http://code.google.com/p/memcached-session-manager/
[iyunv@TomcatA msm]# ls   
javolution-5.5.1.jar               
memcached-session-manager-tc7-1.8.2.jar
spymemcached-2.10.2.jar  
memcached-session-manager-1.8.2.jar
msm-javolution-serializer-1.8.2.jar
将这几个类库放到tomcat的lib库中,
[iyunv@TomcatA msm]# cp * /usr/local/tomcat/lib/
进去看下,确保复制成功

好了下面就开始修改配置文件/usr/local/tomcat/conf/server.xml

分别在两个tomcat上的host上定义一个用于测试的context容器,并在其中创建一个会话管理器,如下所示:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
   

              <manager classname="de.javakaffee.web.msm.MemcachedBackupSessionManager"

           memcachedNodes="n1:192.168.1.201:11211,n2:192.168.1.202:11211"          #这里分别指向2台memcached服务器   

                failoverNodes="n1"   

                requestUriIgnorePattern=".*.(ico|png|gif|jpg|css|js)$"   

                transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"   

              />   

            




提供测试相应的文件夹及测试文件:
tomcatA:      
# mkdir -pv /usr/local/tomcat/webapps/test/WEB-INF/{classes,lib}
mkdir: created directory `/usr/local/tomcat/webapps/test'   
mkdir: created directory `/usr/local/tomcat/webapps/test/WEB-INF'   
mkdir: created directory `/usr/local/tomcat/webapps/test/WEB-INF/classes'   
mkdir: created directory `/usr/local/tomcat/webapps/test/WEB-INF/lib'

# vim /usr/local/tomcat/webapps/test/index.jsp   
<%@ page language="java" %>   
   
  TomcatA   
      
    TomcatA.magedu.com   
   


    <% session.setAttribute("magedu.com","magedu.com"); %>   






Session ID<%= session.getId() %>
Created on<%= session.getCreationTime() %>
   
      


复制web.xml文件
# cp /usr/local/tomcat/conf/web.xml /usr/local/tomcat/webapps/test/WEB-INF/

tomcatB:      
# mkdir -pv /usr/local/tomcat/webapps/test/WEB-INF/{classes,lib}
mkdir: created directory `/usr/local/tomcat/webapps/test'  
mkdir: created directory `/usr/local/tomcat/webapps/test/WEB-INF'  
mkdir: created directory `/usr/local/tomcat/webapps/test/WEB-INF/classes'  
mkdir: created directory `/usr/local/tomcat/webapps/test/WEB-INF/lib'
# vim /usr/local/tomcat/webapps/test/index.jsp   
<%@ page language="java" %>   
   
  TomcatB   
      
    TomcatB.magedu.com   
   


    <% session.setAttribute("magedu.com","magedu.com"); %>   






Session ID<%= session.getId() %>
Created on<%= session.getCreationTime() %>
   
      

复制web.xml文件
# cp /usr/local/tomcat/conf/web.xml /usr/local/tomcat/webapps/test/WEB-INF/



好了下面我们就可以开始测试了





运维网声明 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-25504-1-1.html 上篇帖子: Tomcat中配置JNDI数据源 下篇帖子: 搭建nginx + tomcat + mysql + memcached 环境.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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