tomcat用memcache进行session共享

tomcat版本及环境

Using CATALINA_BASE:   /usr/local/81tomcat
Using CATALINA_HOME:   /usr/local/81tomcat
Using CATALINA_TMPDIR: /usr/local/81tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/81tomcat/bin/bootstrap.jar:/usr/local/81tomcat/bin/tomcat-juli.jar
Server version: Apache Tomcat/7.0.62
Server built:   May 7 2015 17:14:55 UTC
Server number:  7.0.62.0
OS Name:        Linux
OS Version:     2.6.32-358.el6.x86_64
Architecture:   amd64
JVM Version:    1.7.0_75-b13
JVM Vendor:     Oracle Corporation


更改配置

vi /usr/local/81tomcat/conf/context.xml

将context标签的内容改为如下内容

<Context>

    <WatchedResource>WEB-INF/web.xml</WatchedResource>
    <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
        <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
        memcachedNodes="n1:192.168.10.80:5555,n2:192.168.10.80:4444"                 <!--memcache接点:memcache_ip:memcache_port-->
        sticky="false"
        sessionBackupAsync="false"
        requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
        transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"/>
</Context>


然后添加所需的jar包

文章就再这儿了

官方列出的包如下

memcached-session-manager-1.8.3.jar

memcached-session-manager-tc7-1.8.3.jar

spymemcached-2.11.1.jar

第一个包和第二个包的关系是最后的版本对应这里是1.8.3版本,第二个包里的tc7表示tomcat7


实际上我添加的包有如下几个:

apache-tomcat-7.0.62.tar.gz
asm-3.2.jar
commons-codec-1.5.jar
couchbase-client-1.2.2.jar
httpcore-4.1.1.jar
httpcore-nio-4.1.1.jar
jettison-1.1.jar
kryo-1.04.jar
kryo-serializers-0.11.jar
memcached-session-manager-1.8.3.jar
memcached-session-manager-tc7-1.8.3.jar
minlog-1.2.jar
msm-kryo-serializer-1.6.5.jar
netty-3.5.5.Final.jar
reflectasm-1.01.jar
spymemcached-2.11.1.jar
tomcat.tar.gz

具体参考

  http://code.google.com/p/memcached-session-manager/wiki/SetupAndConfiguration

如上的三个包可以在这个位置下载得到,其他的去mvn源可以找到

memcached-session-manager-1.8.3.jar

memcached-session-manager-tc7-1.8.3.jar

spymemcached-2.11.1.jar




添加完包和配置之后,进行安装memcache

http://memcached.org/files/memcached-1.4.24.tar.gz

cd memcached-1.4.24 && yum -y install libevent libevent-devel && ./configure --prefix=/usr/local/memcached && make && make install

启动memcached

/usr/local/memcached/bin/memcached -d -m 1024 -u root -p 4444 -c 1024 -P /tmp/memcached.pid && echo "/usr/local/memcached/bin/memcached -d -m 1024 -u root -p 4444 -c 1024 -P /tmp/memcached.pid" >> /etc/rc.local


然后在写个测试页面

vi /usr/local/81tomcat/webapps/ROOT/index.jsp

内容如下

<html> 
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>TEST PATES</title> 
</head>
<body>
SessionID:<%=session.getId()%>
      <BR>
<%  
out.println("Tomcat port 8081.");  <!--另一个tomcat 写别的端口-->
%>
</body> 
</html>

然后启动所有的tomcat看到如下信息就成功启动了tomcat

五月 27, 2015 3:45:07 下午 de.javakaffee.web.msm.MemcachedSessionService startInternal
信息:  starts initialization... (configured nodes definition n1:192.168.10.80:5555,n2:192.168.10.80:4444, failover nodes null)
2015-05-27 15:45:07.920 INFO net.spy.memcached.MemcachedConnection:  Added {QA sa=/192.168.10.80:5555, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0} to connect queue
2015-05-27 15:45:07.920 INFO net.spy.memcached.MemcachedConnection:  Added {QA sa=/192.168.10.80:4444, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0} to connect queue
2015-05-27 15:45:07.921 INFO net.spy.memcached.MemcachedConnection:  Connection state changed for sun.nio.ch.SelectionKeyImpl@56b94f31
2015-05-27 15:45:07.922 INFO net.spy.memcached.MemcachedConnection:  Connection state changed for sun.nio.ch.SelectionKeyImpl@1ffe4672
五月 27, 2015 3:45:07 下午 de.javakaffee.web.msm.MemcachedSessionService setLockingMode
信息: Setting lockingMode to NONE
五月 27, 2015 3:45:07 下午 de.javakaffee.web.msm.MemcachedSessionService createTranscoderFactory
信息: Creating transcoder factory de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory
五月 27, 2015 3:45:07 下午 de.javakaffee.web.msm.MemcachedSessionService startInternal
信息: --------
-  finished initialization:
- sticky: false
- operation timeout: 1000
- node ids: [n1, n2]
- failover node ids: []
- storage key prefix: null
--------
五月 27, 2015 3:45:09 下午 org.apache.catalina.startup.HostConfig deployDirectory
信息: Deployment of web application directory /usr/local/81tomcat/webapps/rw has finished in 21,329 ms


安装和配置nginx

wget http://nginx.org/download/nginx-1.9.1.tar.gz && tar -zxvf nginx-1.9.1.tar.gz && cd nginx-1.9.1 && yum -y install pcre pcre-devel zlib zlib-devel && configure --prefix=/usr/local/nginx && make && make install


编辑nginx配置文件在最后一个"}"之前加入如下内容:

 upstream test {
      server  192.168.10.241:8081;

      server  192.168.10.241:8082;

          #ip_shash;  此处千万不要加这个命令,否则nginx不会采用轮询的方式调度后边的tomcat
  }
 server {
        listen       88;
        server_name  ;


    location / {
#     proxy_redirect         off;
     proxy_set_header       Host $host;
     proxy_set_header  X-Real-IP  $remote_addr;
     proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
     proxy_pass   http://test;
    }
}


然后浏览器输入

http://nginx_host_IP:88


连续刷新,会发现session不变,而后边的tomcat第一次是8081第二次是8082公平轮询


############################

作者:john

迷途小运维原创

转载请注明出处


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值