Session共享之Memcached部署
Memcached是一个高校分布式内存缓存系统,主要用于减轻DB负载。它通过在内存中缓存数据和对象来显著减少读取数据库的次数。
特点:高性能、客户分布式、非持久,基于以上特点,非常适合Session缓存(?存储)
部署环境
系统:CentOS6.5.x86_64
环境:Nginx1.9.12+Tomcat7.0.68+Memcached1.4.25
路径 /usr/local/work/
Tomcat7+Nginx 配置
部署两台Tomcat7+Nginx,端口分别为8080,8081
cp apache-tomcat-7.0.68.tar.gz /usr/local/work/
cd /usr/local/work/
tar -zxvf apache-tomcat-7.0.68.tar.gz
cp apache-tomcat-7.0.68 tomcat-session-test1
cp apache-tomcat-7.0.68 tomcat-session-test2
rm -rf apache-tomcat-7.0.68
------------------------------
cp nginx-1.9.12 /usr/local/work/
cd /usr/local/work/
tar -zxvf nginx-1.9.12.tar.gz
cd nginx-1.9.12
./configure --prefix=/usr/local/nginx
==============
缺少相应Lib时,通过yum安装对应lib库
==============
make && make install
启动Nginx前修改配置文件conf/nginx.conf
http{
upstream site{
server 127.0.0.1:8080;
server 127.0.0.1:8081;
}
server{
listen 80;
server_name www.xxxx.com;
location /{
root html;
index index.html index.htm;
proxy_pass http://site;
}
}
启动Tomcat-session-test1前,修改配置文件conf/server.xml,配置端口为8080(默认),在webapps/ROOT目录放入index.jsp
<%@page contentType="text/html;charset=utf-8"%>
Tomcat session test1!<%=session.getId()%>
启动Tomcat-session-test2前,修改配置文件conf/server.xml,配置端口为8081,在webapps/ROOT目录放入index.jsp
<%@page contentType="text/html;charset=utf-8"%>
Tomcat session test2!<%=session.getId()%>
分别启动Nginx,tomcat-session-test1,tomcat-session-test2;
本地设置Host:192.168.56.101 www.xxxx.com
访问 www.xxxx.com ,多次刷新可以看见Nginx反向代理了两台Tomcat并且页面上的内容不一致,且session不一致。
Memcached +Tomcat7配置
cp memcached-1.4.25.tar.gz /usr/local/work/
cd /usr/local/work/
tar -zxvf memcached-1.4.25.tar.gz
cd memcached-1.4.25
./configure --with-libevent=/usr
make && make install
/usr/local/bin/memcached -d -m 1024 -u root -p 12000 -P /tmp/memcached.pid
下载以下jar包:
memcached-session-manager-1.9.2.jar
memcached-session-manager-tc7-1.9.2.jar
kryo-1.04.jar
kryo-serializers-0.9.jar
asm-3.3.1.jar
msm-kryo-serializer-1.9.2.jar
reflectasm-1.01.jar
spymemcached-2.8.4.jar
minlog-1.2.jar
放到每个Tomcat的Lib库下
修改Tomcat-session-test1,Tomcat-session-test2配置 conf/context.xml
<context>
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:127.0.0.1:12000"
sticky="false"
sessionBackupAsync="false"
lockingMode="auto"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.JavaSerializationTranscoderFactory"
/>
</context>
重启Tomcat-session-test1,Tomcat-session-test2,刷新www.xxxx.com后可以看见服务器名称变化,session保持不变。
至此结束。