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

[经验分享] tomcat使用memcached完成集群(session共享实现方式)

[复制链接]

尚未签到

发表于 2017-2-6 06:27:34 | 显示全部楼层 |阅读模式
一.安装memcached
1.windows下安装memcached
需要到一个网站下载memcached的for win 32版本.在memcached的官方网站我是找不到的.我看了下,提供win版下载的是一个个人网站,老外的.应该是他自己用src编译的.
下载到只有几十K大小(我也吓了跳,还以为是病毒).安装后确实能用.我尝试在本帖提供附件下载.
下载后输入命令安装命令:
c:\memcached\memcached.exe -d install
然后再输入如下命令把其作为win service常驻启动:
c:\memcached\memcached.exe -d start
其他详细的并没做了,因为部署在win上只是暂时开发测试用的,最终会部署在linux版本上.
2.linux下安装memcached
1.下载包
1.1.到http://memcached.org/下载linux下的memcached的安装包.
1.2.到http://libevent.org/ 下载安装memcached前比需要的包libevent-2.0.15 我安装的是这个版本.
2.安装libevent-2.0.15
 
 
# tar zxvf libevent-2.0.5-beta.tar.gz
# cd libevent-2.0.5
# ./configure –prefix=/usr
# make
# make install
如果中间出现报错,请仔细检查错误信息,按照错误信息来配置或者增加相应的库或者路径。(网上照搬.中间我只是出现过没有GCC的情况)
3.安装memcached
tar zxvf memcached-1.4.2.tar.gz
 
  cd memcached-1.4.2
  ./configure  --with-libevent=/usr
  make
  make install
如果中间出现报错,请仔细检查错误信息,按照错误信息来配置或者增加相应的库或者路径。
安装完成后会把memcached放到 /usr/local/bin/memcached ,
 
4.测试是否成功安装memcached:
# ls -al /usr/local/bin/mem*
 
成功的话,会输出一些相关信息。 
 
5.启动memcached
网上有一个命令很长的方法,可以我启动后进程是出现了,但就是不监听11211的端口.继续寻找终于找到一个可行的了.2个命令如下:
5.1我使用的,可行的命令
memcached -d -m 128 -l localhost -p 11211 -u root  (其中Localhost是指监听本机器的端口.)
5.2网上很多,但我使用却失败的命令
/usr/local/bin/memcached -d -m 10 -u root -l localhost -p 12000 -c 256 -P /tmp/memcached.pid
 
6.给出memcached启动命令参数详解. 
-d选项是启动一个守护进程,
-m是分配给Memcache使用的内存数量,单位是MB,我这里是10MB,
-u是运行Memcache的用户,我这里是root,
-l是监听的服务器IP地址,如果有多个地址的话,我这里指定了服务器的IP地址192.168.0.200,
-p是设置Memcache监听的端口,我这里设置了12000,最好是1024以上的端口,
-c选项是最大运行的并发连接数,默认是1024,我这里设置了256,按照你服务器的负载量来设定,
-P是设置保存Memcache的pid文件,我这里是保存在 /tmp/memcached.pid,
 
-p使用的TCP端口。默认为11211
-m最大内存大小。默认为64M
-vv用very vrebose模式启动,调试信息和错误输出到控制台
-d作为daemon在后台启动
 
如果要结束Memcache进程,执行:
 
# kill `cat /tmp/memcached.pid`
 
或是 通过ps -ef | grep memcached 找到pid ,然后kill
 
也可以启动多个守护进程,不过端口不能重复。
# ps -ef | grep memcached
root 28914 1 0 07:27 ? 00:00:00 memcached -d -m 128 -l localhost -p 11211 -u root (启动ok)
 
6.测试memcached
#telnet localhost 11211
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).

 
 
二.调用的包
可从http://code.google.com/p/memcached-session-manager/downloads/list下载所需要的包.
需要注意的是,你只能从该网站下载到 memcached-session-manager-1.5.1.jar  /  memcached-session-manager-tc6-1.5.1.jar  /  msm-javolution-serializer-1.5.1.jar
这3个包,还有2个包分别是 : memcached-2.5.jar  /  javolution-5.5.1.jar这2个包,需要自己另外下载哦.
都是放到tomcat/lib下.
 
三.环境
本人使用的是tomcat6 + memcached-session-manager,首先是在windows下测试的.以后将部署在Linux环境下
 
四.TOMCAT配置
网上有好多的版本,甚至在memcached-session-manager的wiki中都是在tomcat的conf/context.xml下配置.
但本人是在server.xml中配置到需要session共享的host中.配置见如下:
 
如果是一个memcached,采用如下配置:
 
[html] view plaincopy


  • <Context reloadable="false" path="" >   
  •                  <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"  
  •                     memcachedNodes="n1:192.168.1.101:11211"  
  •                     sticky="false"  
  •                     sessionBackupAsync="false"  
  •                     lockingMode="auto"  
  •                     requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"  
  •                     transcoderFactoryClass="de.javakaffee.web.msm.JavaSerializationTranscoderFactory"  
  •                     />  
  •             </Context>  

  
如果是多个memcached,采用如下配置:
 
[html] view plaincopy


  • <Context reloadable="false" path="" >   
  •                  <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"  
  •                     memcachedNodes="n1:192.168.1.101:11211,n2:192.168.1.102:11211"  
  •                     sticky="false"  
  •                     sessionBackupAsync="false"  
  •                     lockingMode="auto"  
  •                     requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"  
  •                     transcoderFactoryClass="de.javakaffee.web.msm.JavaSerializationTranscoderFactory"  
  •                     />  
  •             </Context>  

  .
  de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory采用的序列化方式是kryo,根据官方提供的数据,这个的序列化效率是最好的,我下面有一些简单的测试。
  
感 觉kryo的效率主要体现在高并发下面。如果非高并发感觉跟java的自带io差不多。如果不使用kryo进行序列化,采用java默认方式的话,请将 transcoderFactoryClass改 为:de.javakaffee.web.msm.JavaSerializationTranscoderFactory

另外在使用kryo进行序列话的时候,有时候会报序列话错误。具体解决方式,查看一篇博文:http://hi.baidu.com/drnadmhzfnacefe/item/87cead68940ef408a1cf0fa2。

五.测试结果
 
 
无论你从哪个tomcat浏览该jsp的打印信息(只要不关浏览器或者浏览器的标签),获得的session id都是一样的,证明是同一个session,并且共享了.
 
然后启动你的多个测试tomcat吧...关于memcached的安装.本文不提供.但会另外写文章叙述.


转自:
http://blog.csdn.net/ichsonx/article/details/6911358
  http://hi.baidu.com/drnadmhzfnacefe/item/87cead68940ef408a1cf0fa2

运维网声明 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-337946-1-1.html 上篇帖子: tomcat、servlet、JSP、JSTL版本支持对应表 下篇帖子: 苹果OSX系统,我自己编写的tomcat启动程序
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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