`
wb284551926
  • 浏览: 551262 次
文章分类
社区版块
存档分类
最新评论

tomcat使用memcached集群session共享(转载并修改)

阅读更多

一.安装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

 

 

如果中间出现报错,请仔细检查错误信息,按照错误信息来配置或者增加相应的库或者路径。(网上照搬.中间我只是出现过没有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个包,还有这个包分别是 :   javolution-5.5.1.jar 需要自己另外下载哦.

用到以下六个包

---------------------------------------------

couchbase-client-1.4.4.jar

javolution-5.4.3.1.jar

memcached-session-manager-1.6.5.jar

memcached-session-manager-tc6-1.6.5.jar  #tomcat6 用tc6 tomcat7用tc7

spymemcached-2.11.4.jar

msm-javolution-serializer-1.6.5.jar

-------------------------------------------------------------

都是放到tomcat/lib下.

 

三.环境

本人使用的是tomcat6 + memcached-session-manager,首先是在windows下测试的.以后将部署在Linux环境下

 

四.TOMCAT配置

网上有好多的版本,甚至在memcached-session-manager的wiki中都是在tomcat的conf/context.xml下配置.

但本人是在server.xml中配置到需要session共享的host中.配置见如下:

 

-----------------------------------------------------------------------------------

在context.xml中

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager" 

memcachedNodes="n1:192.168.189.128:11211" 

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

sticky="false" 

sessionBackupAsync="false" 

lockingMode="auto" 

sessionBackupTimeout="1800000" 

copyCollectionsForSerialization="false" 

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

 

sticky="false"   一定要写,这个是非粘性session,粘性session不会每次都去memcached里取数据

--------------------------------------------------------------------------------------------------

 

如果是一个memcached,采用如下配置:《我没有采用这种》

 

[html] view plaincopy
 
  1. <Context reloadable="false" path="" >   
  2.                  <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"  
  3.                     memcachedNodes="n1:192.168.1.101:11211"  
  4.                     sticky="false"  
  5.                     sessionBackupAsync="false"  
  6.                     lockingMode="auto"  
  7.                     requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"  
  8.                     transcoderFactoryClass="de.javakaffee.web.msm.JavaSerializationTranscoderFactory"  
  9.                     />  
  10.             </Context>  

如果是多个memcached,采用如下配置:

 

 

[html] view plaincopy
 
  1. <Context reloadable="false" path="" >   
  2.                  <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"  
  3.                     memcachedNodes="n1:192.168.1.101:11211,n2:192.168.1.102:11211"  
  4.                     sticky="false"  
  5.                     sessionBackupAsync="false"  
  6.                     lockingMode="auto"  
  7.                     requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"  
  8.                     transcoderFactoryClass="de.javakaffee.web.msm.JavaSerializationTranscoderFactory"  
  9.                     />  
  10.             </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,并且共享了.

 

原文地址:http://blog.csdn.net/a__java___a/article/details/8738932

下面是jar包,共享给大家。

分享到:
评论

相关推荐

    Nginx+Tomcat+Memcached集群Session共享实例

    Nginx+Tomcat+Memcached集群Session共享实例,Nginx 1.81 + tomcat1 + tomcat2 + Memcached 完整可运行 访问根目录下 test.jsp 可看效果

    nginx tomcat memcached 集群 session共享

    这里我们讨论的主题是如何通过Nginx、Tomcat和Memcached来实现集群环境下的session共享。Nginx作为反向代理服务器,负责负载均衡,Tomcat作为应用服务器运行Java Web应用程序,而Memcached则作为分布式内存缓存系统...

    Nginx+Tomcat+Memcached集群Session共享

    标题 "Nginx+Tomcat+Memcached集群Session共享" 描述了在分布式环境中如何通过Nginx反向代理服务器、Tomcat应用服务器集群以及Memcached缓存系统来实现Session的共享。这是一个常见的高可用性和负载均衡解决方案。...

    Nginx+Tomcat+Memcached实现tomcat集群和session共享

    下面我们将详细探讨如何实现Nginx+Tomcat+Memcached的集群和Session共享。 **Nginx** Nginx是一款轻量级的Web服务器/反向代理服务器,以其高效的性能和低内存占用著称。在本场景中,Nginx主要负责以下任务: 1. **...

    Nginx+Tomcat7+Memcached集群Session共享

    Nginx+Tomcat7+Memcached集群Session共享 完整例子 主要是利用memcached-session-manager(下面简称msm)开源tomcat插件改变tomcat原始的session存储机制,将session的存储放到分布式缓存memcache中,从而实现对...

    Nginx+tomcat+memcached集群session共享(win7下)所用到

    在集群环境中,每个Tomcat实例都需要配置session复制或者使用外部session存储,如Memcached。 3. **Memcached**: Memcached是一个高性能、分布式的内存对象缓存系统,常用于减轻数据库负载。在我们的场景中,...

    tomcat8+memcached session共享所需的jar包

    tomcat8+memcached session共享所需的jar包, memcached-session-manager memcached-session-manager-tc8 msm-kryo-serializer spymemcached kryo-serializers所有jar包都有

    Nginx+Tomcat+Memcached-Session-Manager集群Session共享

    在本篇文章中,我们将深入探讨如何使用Nginx、Tomcat和Memcached-Session-Manager(MSM)来构建一个集群环境,并实现Session共享。这涉及到集群搭建、分布式应用以及缓存管理等多个方面的IT知识。下面将详细展开这些...

    Nginx+Tomcat+Memcached实现tomcat集群和session共享 nginx配置

    Nginx+Tomcat+Memcached实现tomcat集群和session共享 nginx配置

    tomcat8 memcached session共享jar包

    标题中的“tomcat8 memcached session共享jar包”指的是在Tomcat 8中使用Memcached作为session共享存储的解决方案。Memcached是一种分布式内存缓存系统,常用于减轻数据库负载,提高应用性能。在Tomcat这样的Java...

    Nginx+Tomcat+Memcached共享session集群配置

    ### Nginx+Tomcat+Memcached 共享 Session 集群配置 #### 一、概述 在大型分布式系统中,为了实现高可用性和负载均衡,常常会使用 Nginx 作为反向代理服务器来分发请求到后端多个 Tomcat 实例上。然而,传统的基于...

    Windows + Nginx + Memcached + Tomcat 集群 session共享

    总之,Windows + Nginx + Memcached + Tomcat 集群session共享方案是一个高效且可靠的架构,它能提高系统的可用性,保证用户会话的连续性,是大规模Web应用常见的部署模式。然而,实际部署时,还需要考虑安全性、...

    tomcat+memcached共享session所需jar包

    标题“tomcat+memcached共享session所需jar包”表明这是一个针对Tomcat服务器与Memcached结合使用以实现Session共享的解决方案。这个压缩包包含了适用于Tomcat7和Tomcat8的必要库文件,意味着无论你使用哪个版本的...

    memcached+tomcat7共享session所需要的jar包

    标题中的“memcached+tomcat7共享session所需要的jar包”是指使用Memcached作为分布式缓存系统,实现Tomcat7服务器间的Session共享。这通常是为了在集群环境中解决Session复制或粘滞会话的问题,提高Web应用的可扩展...

    tomcat8集群实现session共享,内含session共享包

    在这个场景中,我们关注的是如何在Tomcat集群环境中实现Session共享,以便提高应用程序的可扩展性和可用性。标题和描述提到的“session共享包”是解决这一问题的关键。 **什么是Session?** 在Web应用中,Session是...

    Tomcat7-Memcached集群Session所需jar包

    在构建分布式Web应用程序时... Tomcat7-Memcached集群Session方案使得在分布式环境中高效地管理和共享Session成为可能。通过正确配置和使用Memcached,我们可以提升Web应用的性能和扩展性,同时确保用户会话的一致性。

    tomcat7 memcached集群

    4. **Session共享策略**: 使用memcached进行session共享,需要在每个Tomcat实例中配置一个session复制或粘贴的监听器,将session的创建、修改和销毁事件同步到memcached集群。这样,无论用户请求发送到哪个服务器,...

    tomcat+memcached 管理session

    本篇文章将详细介绍如何使用`Tomcat`结合`Memcached`来实现高效的Session管理。 首先,`Memcached`作为一种高性能、分布式的内存缓存系统,能够存储包括Web应用中的Session数据在内的临时性数据。通过将Session数据...

    tomcat7集群session共享memcache依赖包1.8.3

    总的来说,"tomcat7集群session共享memcache依赖包1.8.3"提供了一种有效的方法,解决了在Tomcat7集群中Session共享的问题,通过Memcached作为中间件,实现了跨节点的Session一致性,提高了系统的可用性和用户体验。...

Global site tag (gtag.js) - Google Analytics