用memcached-session-manager实现Tomcat集群
之前介绍过用Tomcat自身的Cluster做集群。还有一种方式是通过memcached保存session,实现多台tomcat共享session。开源项目memcached-session-manager实现了这个功能。
一、首先需要安装memcached。
安装步骤请参考:http://blog.csdn.net/clarkcc1988/article/details/8509822
上面这篇文章写的很好,在这里就不重复了。
补充几点官方文档中的信息:(官方文档链接:https://code.google.com/p/memcached/wiki/NewStart?tm=6)
- 启动参数
-h:获得帮助信息
注意-m,-d,-v
-m:告诉memcached用多少内存做存储(单位M)。注意memcached会使用比你设定的数量更多一些的内存,所以要设定安全的数量。在1.4.x版本及以前的版本,不管你设定多少,memcached使用的内存都不会少于48M。
常用启动命令:/usr/local/memcached/bin/memcached -d -m 256 -u root -p 11211 -c 1024
- 连接限制:
默认最大连接数是1024。在系统运行时,你可以执行命令echo "stats" | nc localhost 11211
检查"listen_disabled_num",如果数值比0大,加大连接数的设置,让这个数值等于或近似于0即可。
- 线程
默认是4个线程。memcached每个线程都可以处理大量的请求,所以这个数值不用设置太大。除非你的memcached系统特别健壮,否则不建议增大此数量。线程数量设置大于80时将不会让系统运行更快。
- 运行中的参数
系统运行时,执行命令:$ echo "stats settings" | nc localhost 11211
可以查看系统运行的状态参数。('stats'和'stats settings')
二、memcached客户端(选读)
程序通过memcached客户端操作memcached。JAVA客户端有很多,比较好的有spymemcached和xmemcached。xmemcached有完整的中文文档,性能也很不错。
xmemcached中文指南:https://code.google.com/p/xmemcached/wiki/User_Guide_zh
spymemcached:https://code.google.com/p/spymemcached/
三、memcached-seession-manager
上面的文章基本是翻译官方文档,写的很清楚了,不再重复。
官方文档:https://code.google.com/p/memcached-session-manager/wiki/SetupAndConfiguration
需要补充的几点:
1、Context的设置可以是针对单个web应用,也可以针对整个Tomcat环境。配置的地方不同,但是不建议在server.xml中添加,因为这样要应用修改必须重启Tomcat。参考:http://tomcat.apache.org/tomcat-7.0-doc/config/context.html#Defining_a_context
2、如果你的tomcat在同一个机器上,需要设置jvmRoute,并且保证在同一台机器上的唯一,如:<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">