本案例最终实现的效果,已在ubuntu14.04 系统上验证通过!
下载案例全部代码请移步:
https://download.csdn.net/download/dayuang2009/10413701
如下图:
如果TOMCAT1 宕机,用户的请求会无感知的情况下,跳转到其它TOMCAT中的执行,所有的SESSION都存储在memcache中!
以下是主要步骤:
DEMO式的集群-可以正常SESSION转移
1.环境准备 tomcat7 ,jdk7+
安装nginx,
libevent (memcached 依赖的程序)
memcached
memcached 基本使用方法:
启动: ./memcached/bin/memcached -d -m 32 restart
登录: telnet 127.0.0.1 11211
查看状态:stats
退出:quit
nginx 主要配置摘要:
#----------------
server_tokens off;
upstream server_tomcat{
ip_hash;
server localhost:8080 ;
server localhost:8081 ;
server 172.16.23.76:8081 ;
}
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /usr/share/nginx/html;
index index.html index.htm;
# Make site accessible from http://localhost/
server_name localhost;
location / {
proxy_pass http://server_tomcat;
}
}
#----------------
tomcat7 配置:如果是本机运行两个,则需要改
conf/server.xml 中的端口
#----各TOMCAT中的server.xml都要配置-------------------
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Context docBase="/root/z/ROOT" path="/" reloadable="false" >
<!-- 核心配置 注意 memcachedNodes 指向存在的memcached -->
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:172.16.11.16:11211"
requestUriIgnorePattern=".*\.(png|gif|jpg|css|js)$"
sessionBackupAsync="false"
sessionBackupTimeout="100"
sticky="false"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"
copyCollectionsForSerialization="false"/>
</Context>
#---各TOMCAT中还要增加 相关的LIB--------------------
javolution-5.5.1.jar
memcached-session-manager-1.9.7.jar
memcached-session-manager-tc7-2.3.0.jar
msm-javolution-serializer-1.9.7.jar
msm-kryo-serializer-1.9.7.jar
msm-serializer-benchmark-1.9.7.jar
spymemcached-2.12.3.jar
配置完重启TOMCAT ,Nginx ( service nginx restart)