tomcat用memcache进行session共享_de.javakaffee.web.msm.memcachedsessionservice-程序员宅基地

技术标签: linux服务篇  web架构篇  

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

迷途小运维原创

转载请注明出处


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/caiwenguang1992/article/details/46047835

智能推荐

kaggle數據集下載到colab上并且解压_colab 解压缩包-程序员宅基地

文章浏览阅读2.9k次。一个Google colab的实例最长可以持续12小时,窗口关闭后只会继续跑90分钟。!pip install -U -q kaggle!mkdir -p ~/.kaggle!echo '{"username":"pupil3","key":"a56f1ff7585ceb0a1d98f25d7bd514d3"}' > ~/.kaggle/kaggle.json!chmod ..._colab 解压缩包

Go语言学习笔记—gorm(三)_withpreload gorm-程序员宅基地

文章浏览阅读631次。对象关系映射(Object-Relationl Mapping,简称ORM)模式是一种为了解决面向对象和关系数据库(如mysql数据库)存在的互相不匹配的现象的技术。_withpreload gorm

locate: can not stat () `/var/lib/mlocate/mlocate.db': No such file or directory-程序员宅基地

文章浏览阅读269次。安装好CentOS后,第一次进入系统使用locate命令,结果出现:locate: can not stat () `/var/lib/mlocate/mlocate.db': No such file or directory解决办法运行updatedb命令即可,如下图所示:转载于:https://www.cnblogs.com/Richard-xie/p/47074..._/var/lib/plocate/plocate.db: no such file or directory

webpack5 + vite2 入门_webpack5、vite2-程序员宅基地

文章浏览阅读1k次。Webpack笔记从使用 webpack 的角度来说,搞清楚 webpack 的配置即可安装需要 node 14+ 和 npm(安装 node 时自动安装)。全局安装npm install webpack webpack-cli -g局部安装(推荐)npm init -y-D 表示安装的开发依赖。加不加并不影响,但是推荐加,这样项目 package.json 会整洁些。npm install webpack webpack-cli -D基本使用在新建项目的时候使用 webpack _webpack5、vite2

python包导入细节(attempted relative import beyond top-level package的原因解读)-程序员宅基地

文章浏览阅读2.4w次,点赞22次,收藏70次。先在讨论python导入问题时,先弄清楚几个重要概念和区别:一、什么是模块,什么是脚本(script vs module)二、命名(naming)三、不通过包导入访问一个模块四、相对导入…五、…只能用在相对导入当使用六、脚本不能包含相对导入七、解决办法感谢博主 小舔哥 :https://www.cnblogs.com/jiaxin359/p/7580375.html ..._attempted relative import beyond

mysql 消息队列_一个简单的 MySQL 批量事务消息队列-程序员宅基地

文章浏览阅读1k次。基于 MySQL 的批量事务消息队列消息队列本质上是一个存储介质,通常是链表结构,不同的进程或线程可以向消息队列中写入或读取消息。消息队列的使用场景有很多,比如异步处理任务、应用解耦、流量削锋等等。通常我们使用消息队列,都是直接使用 MNS、RocketMQ、Kafka 等产品。但某些场景下这些产品也难以满足,或者使用起来成本比较高,比如:批量创建大量(比如 1 万条)消息,并且要么都写入,要么不..._mysql 大量 update 走队列机制

随便推点

Oracle ORA-12541:TNS:无监听程序_net 无监听程序-程序员宅基地

文章浏览阅读4.4k次。1.打开Net Configuration Assistant 2.选择监听程序配置,下一步3.选择重新配置,下一步4.选择监听程序,默认,下一步注:如果你的监听已启动,则出现提示框,选择是5.选择协议,使用默认的TCP协议,下一步6.选择端口号,使用标准端口号1521,下一步7.不配置另一个监听程序,选择否,下一步8.监听程序配置完成,下一步重配服务名,测试连接1.选择Net..._net 无监听程序

BZOJ 1001 网络流最小割 解题报告_网格图最小割 bzoj1001-程序员宅基地

文章浏览阅读269次。001: [BeiJing2006]狼抓兔子Description现在小朋友们最喜欢的”喜羊羊与灰太狼”,话说灰太狼抓羊不到,但抓兔子还是比较在行的, 而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一个网格的地形: 左上角点为(1,1),右下角点为(N,M)(上图中N=4,M=5).有以下三种类型的道路 1:(x,y)<==>(x+1,y) 2:(x,y)<=_网格图最小割 bzoj1001

Part 4: CRUD Operations on BackboneJs Models using HTTP REST Service-程序员宅基地

文章浏览阅读129次。In this article we will discuss how we can perform CRUD operations on a backbone model using a REST based HTTP service.[size=large][b]Background[/b][/size]Earlier we have discussed about the b..._backbone.js实现crud

android自定义RadioButton的样式_android radiobutton 自定义样式-程序员宅基地

文章浏览阅读2k次。一、样式的实现 <TextView android:layout_width="wrap_content" android:layout_height="50dp" android:layout_gravity="center" andro..._android radiobutton 自定义样式

stl文件转stp (二次开发)_stl转stp-程序员宅基地

文章浏览阅读3.6w次,点赞29次,收藏82次。前几天有个美女问我stl文件怎么处理,很尴尬我也处理不了,为了避免再次发生这种情况,所以我做了这个小软件。其下载链接将在文末给出。因为是电脑软件,所以使用的是.net c# 编写,ide是秒天秒地秒空气的visual studio。下面分几步说一下思路和代码过程:1、stl文件和stp文件的数据存储形式一、stl文件格式stl的文件格式是很容易就能找到的,比如说直接问度娘:..._stl转stp

UVa1625——颜色长度(DP)_dp颜色函数-程序员宅基地

文章浏览阅读239次。题目链接:https://vjudge.net/contest/232313#problem/H思路:紫书上写的很详细了:不是等到一个颜色全部移完之后再相加,而是每次都计算已经开始但还没结束的颜色的个数并将长度累加。所以,用res[i][j]表示第一个串还剩i个,第二个串还剩j个,已经开始但还没结束的字符个数。dp[i][j]表示第一个还剩i个,第二个串还剩j个,还需要的最小指标函数。..._dp颜色函数

推荐文章

热门文章

相关标签