天天看点

通过Memcached来实现对Tomcat集群中Session的共享策略

大家必须要确保两件事情已经完成:

第一:首先确认memcached是否已经启动,可以通过

netstat -lp | grep memcached

来查看是否有11211的进程存在。

注意:11211为memcached的默认端口。

第二:需要在tomcat所在的节点上分别执行telnet命令来确认是否已经可以连接,操作命令为:

telnet 192.168.1.150 11211

上面的操作必须要在每一个子节点上去做,否则在启动的时候会提示Connect refuse。(本人在该地方卡住很长时间)

在这里首先要确保telnet服务是否已经安装并启动。

上述操作都完成后,就可以对Tomcat的相关文件进行配置了。

2. Tomcat相关配置

这一步很简单,网上也有很多说法,五花八门,我来给大家统一整理下,各位可以相互借鉴。

1)首先需要在tomcat安装路径所在的lib里面加上memcached相关的jar包,由于相互之间的版本问题,建议最好使用统一的版本。

另外网上似乎有两种办法,一种是kryo的序列化方式,另一种是javolution的方式,博主本人使用的是后者。

需要引入的jar包见下图所示:(这里大家导入一定要和下面完全一样,否则可能会出现错误,并不是因为每一个jar包都会用到,最好还是谨慎些)

通过Memcached来实现对Tomcat集群中Session的共享策略

2)配置Tomcat的conf相关配置文件。

在Context.xml文件中引入下列代码:

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

                        memcachedNodes="n1:192.168.1.150:11211"  

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

                        sessionBackupAsync="false"  

                        sessionBackupTimeout="100"  

                        transcoderFactoryClass="de.javakaffee.web.msm.serializer

.javolution.JavolutionTranscoderFactory"  

                        copyCollectionsForSerialization="false" />

这里的memcachedNodes节点中的n1为节点的别名,可以随意起。后面的IP必须是memcached所在的主机的IP地址,端口必须是之前配置的11211端口。

该代码段在网上发现其他人说也可以放到Server.xml下面,这里本人没有尝试。

此时,所有的tomcat子节点中都要加上上面的这段代码,每个tomcat里面的内容都是相同的上述内容,无需做任何修改。

至此为止,有关memcache的Session共享已经完全配置完成,具体的启动顺序,首先要把memcached的服务启动,然后是apache服务,最后启动tomcat所在的每个子节点的服务。

然后观察tomcat的控制台打印如下:

通过Memcached来实现对Tomcat集群中Session的共享策略

该上述信息为博主从tomcat子节点1的控制台上截图下来的,大家可以自行观察,此时memcachedConnection已经连接成功,由于没有涉及到单点故障问题,因此failover nodes为null。

转载于:https://www.cnblogs.com/telwanggs/p/6473551.html