您的位置:首页 > 数据库 > Memcache

tomcat用memcache进行session共享

2015-05-27 16:20 302 查看
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

迷途小运维原创

转载请注明出处
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: