tomcat用memcache进行session共享
2015-05-27 16:20
302 查看
tomcat版本及环境
Using CATALINA_BASE: /usr/local/81tomcat
Using CATALINA_HOME: /usr/local/81tomcat
Using CATALINA_TMPDIR: /usr/local/81tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/81tomcat/bin/bootstrap.jar:/usr/local/81tomcat/bin/tomcat-juli.jar
Server version: Apache Tomcat/7.0.62
Server built: May 7 2015 17:14:55 UTC
Server number: 7.0.62.0
OS Name: Linux
OS Version: 2.6.32-358.el6.x86_64
Architecture: amd64
JVM Version: 1.7.0_75-b13
JVM Vendor: Oracle Corporation
更改配置
vi /usr/local/81tomcat/conf/context.xml
将context标签的内容改为如下内容
<Context>
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:192.168.10.80:5555,n2:192.168.10.80:4444" <!--memcache接点:memcache_ip:memcache_port-->
sticky="false"
sessionBackupAsync="false"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"/>
</Context>
然后添加所需的jar包
文章就再这儿了
官方列出的包如下
memcached-session-manager-1.8.3.jar
memcached-session-manager-tc7-1.8.3.jar
spymemcached-2.11.1.jar
第一个包和第二个包的关系是最后的版本对应这里是1.8.3版本,第二个包里的tc7表示tomcat7
实际上我添加的包有如下几个:
apache-tomcat-7.0.62.tar.gz
asm-3.2.jar
commons-codec-1.5.jar
couchbase-client-1.2.2.jar
httpcore-4.1.1.jar
httpcore-nio-4.1.1.jar
jettison-1.1.jar
kryo-1.04.jar
kryo-serializers-0.11.jar
memcached-session-manager-1.8.3.jar
memcached-session-manager-tc7-1.8.3.jar
minlog-1.2.jar
msm-kryo-serializer-1.6.5.jar
netty-3.5.5.Final.jar
reflectasm-1.01.jar
spymemcached-2.11.1.jar
tomcat.tar.gz
具体参考
http://code.google.com/p/memcached-session-manager/wiki/SetupAndConfiguration
如上的三个包可以在这个位置下载得到,其他的去mvn源可以找到
memcached-session-manager-1.8.3.jar
memcached-session-manager-tc7-1.8.3.jar
spymemcached-2.11.1.jar
添加完包和配置之后,进行安装memcache
http://memcached.org/files/memcached-1.4.24.tar.gz
cd memcached-1.4.24 && yum -y install libevent libevent-devel && ./configure --prefix=/usr/local/memcached && make && make install
启动memcached
/usr/local/memcached/bin/memcached -d -m 1024 -u root -p 4444 -c 1024 -P /tmp/memcached.pid && echo "/usr/local/memcached/bin/memcached -d -m 1024 -u root -p 4444 -c 1024 -P /tmp/memcached.pid" >> /etc/rc.local
然后在写个测试页面
vi /usr/local/81tomcat/webapps/ROOT/index.jsp
内容如下
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>TEST PATES</title>
</head>
<body>
SessionID:<%=session.getId()%>
<BR>
<%
out.println("Tomcat port 8081."); <!--另一个tomcat 写别的端口-->
%>
</body>
</html>
然后启动所有的tomcat看到如下信息就成功启动了tomcat
五月 27, 2015 3:45:07 下午 de.javakaffee.web.msm.MemcachedSessionService startInternal
信息: starts initialization... (configured nodes definition n1:192.168.10.80:5555,n2:192.168.10.80:4444, failover nodes null)
2015-05-27 15:45:07.920 INFO net.spy.memcached.MemcachedConnection: Added {QA sa=/192.168.10.80:5555, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0} to connect queue
2015-05-27 15:45:07.920 INFO net.spy.memcached.MemcachedConnection: Added {QA sa=/192.168.10.80:4444, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0} to connect queue
2015-05-27 15:45:07.921 INFO net.spy.memcached.MemcachedConnection: Connection state changed for sun.nio.ch.SelectionKeyImpl@56b94f31
2015-05-27 15:45:07.922 INFO net.spy.memcached.MemcachedConnection: Connection state changed for sun.nio.ch.SelectionKeyImpl@1ffe4672
五月 27, 2015 3:45:07 下午 de.javakaffee.web.msm.MemcachedSessionService setLockingMode
信息: Setting lockingMode to NONE
五月 27, 2015 3:45:07 下午 de.javakaffee.web.msm.MemcachedSessionService createTranscoderFactory
信息: Creating transcoder factory de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory
五月 27, 2015 3:45:07 下午 de.javakaffee.web.msm.MemcachedSessionService startInternal
信息: --------
- finished initialization:
- sticky: false
- operation timeout: 1000
- node ids: [n1, n2]
- failover node ids: []
- storage key prefix: null
--------
五月 27, 2015 3:45:09 下午 org.apache.catalina.startup.HostConfig deployDirectory
信息: Deployment of web application directory /usr/local/81tomcat/webapps/rw has finished in 21,329 ms
安装和配置nginx
wget http://nginx.org/download/nginx-1.9.1.tar.gz && tar -zxvf nginx-1.9.1.tar.gz && cd nginx-1.9.1 && yum -y install pcre pcre-devel zlib zlib-devel && configure --prefix=/usr/local/nginx && make && make install
编辑nginx配置文件在最后一个"}"之前加入如下内容:
upstream test {
server 192.168.10.241:8081;
server 192.168.10.241:8082;
#ip_shash; 此处千万不要加这个命令,否则nginx不会采用轮询的方式调度后边的tomcat
}
server {
listen 88;
server_name ;
location / {
# proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://test;
}
}
然后浏览器输入
http://nginx_host_IP:88
连续刷新,会发现session不变,而后边的tomcat第一次是8081第二次是8082公平轮询
############################
作者:john
迷途小运维原创
转载请注明出处
Using CATALINA_BASE: /usr/local/81tomcat
Using CATALINA_HOME: /usr/local/81tomcat
Using CATALINA_TMPDIR: /usr/local/81tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/81tomcat/bin/bootstrap.jar:/usr/local/81tomcat/bin/tomcat-juli.jar
Server version: Apache Tomcat/7.0.62
Server built: May 7 2015 17:14:55 UTC
Server number: 7.0.62.0
OS Name: Linux
OS Version: 2.6.32-358.el6.x86_64
Architecture: amd64
JVM Version: 1.7.0_75-b13
JVM Vendor: Oracle Corporation
更改配置
vi /usr/local/81tomcat/conf/context.xml
将context标签的内容改为如下内容
<Context>
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:192.168.10.80:5555,n2:192.168.10.80:4444" <!--memcache接点:memcache_ip:memcache_port-->
sticky="false"
sessionBackupAsync="false"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"/>
</Context>
然后添加所需的jar包
文章就再这儿了
官方列出的包如下
memcached-session-manager-1.8.3.jar
memcached-session-manager-tc7-1.8.3.jar
spymemcached-2.11.1.jar
第一个包和第二个包的关系是最后的版本对应这里是1.8.3版本,第二个包里的tc7表示tomcat7
实际上我添加的包有如下几个:
apache-tomcat-7.0.62.tar.gz
asm-3.2.jar
commons-codec-1.5.jar
couchbase-client-1.2.2.jar
httpcore-4.1.1.jar
httpcore-nio-4.1.1.jar
jettison-1.1.jar
kryo-1.04.jar
kryo-serializers-0.11.jar
memcached-session-manager-1.8.3.jar
memcached-session-manager-tc7-1.8.3.jar
minlog-1.2.jar
msm-kryo-serializer-1.6.5.jar
netty-3.5.5.Final.jar
reflectasm-1.01.jar
spymemcached-2.11.1.jar
tomcat.tar.gz
具体参考
http://code.google.com/p/memcached-session-manager/wiki/SetupAndConfiguration
如上的三个包可以在这个位置下载得到,其他的去mvn源可以找到
memcached-session-manager-1.8.3.jar
memcached-session-manager-tc7-1.8.3.jar
spymemcached-2.11.1.jar
添加完包和配置之后,进行安装memcache
http://memcached.org/files/memcached-1.4.24.tar.gz
cd memcached-1.4.24 && yum -y install libevent libevent-devel && ./configure --prefix=/usr/local/memcached && make && make install
启动memcached
/usr/local/memcached/bin/memcached -d -m 1024 -u root -p 4444 -c 1024 -P /tmp/memcached.pid && echo "/usr/local/memcached/bin/memcached -d -m 1024 -u root -p 4444 -c 1024 -P /tmp/memcached.pid" >> /etc/rc.local
然后在写个测试页面
vi /usr/local/81tomcat/webapps/ROOT/index.jsp
内容如下
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>TEST PATES</title>
</head>
<body>
SessionID:<%=session.getId()%>
<BR>
<%
out.println("Tomcat port 8081."); <!--另一个tomcat 写别的端口-->
%>
</body>
</html>
然后启动所有的tomcat看到如下信息就成功启动了tomcat
五月 27, 2015 3:45:07 下午 de.javakaffee.web.msm.MemcachedSessionService startInternal
信息: starts initialization... (configured nodes definition n1:192.168.10.80:5555,n2:192.168.10.80:4444, failover nodes null)
2015-05-27 15:45:07.920 INFO net.spy.memcached.MemcachedConnection: Added {QA sa=/192.168.10.80:5555, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0} to connect queue
2015-05-27 15:45:07.920 INFO net.spy.memcached.MemcachedConnection: Added {QA sa=/192.168.10.80:4444, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0} to connect queue
2015-05-27 15:45:07.921 INFO net.spy.memcached.MemcachedConnection: Connection state changed for sun.nio.ch.SelectionKeyImpl@56b94f31
2015-05-27 15:45:07.922 INFO net.spy.memcached.MemcachedConnection: Connection state changed for sun.nio.ch.SelectionKeyImpl@1ffe4672
五月 27, 2015 3:45:07 下午 de.javakaffee.web.msm.MemcachedSessionService setLockingMode
信息: Setting lockingMode to NONE
五月 27, 2015 3:45:07 下午 de.javakaffee.web.msm.MemcachedSessionService createTranscoderFactory
信息: Creating transcoder factory de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory
五月 27, 2015 3:45:07 下午 de.javakaffee.web.msm.MemcachedSessionService startInternal
信息: --------
- finished initialization:
- sticky: false
- operation timeout: 1000
- node ids: [n1, n2]
- failover node ids: []
- storage key prefix: null
--------
五月 27, 2015 3:45:09 下午 org.apache.catalina.startup.HostConfig deployDirectory
信息: Deployment of web application directory /usr/local/81tomcat/webapps/rw has finished in 21,329 ms
安装和配置nginx
wget http://nginx.org/download/nginx-1.9.1.tar.gz && tar -zxvf nginx-1.9.1.tar.gz && cd nginx-1.9.1 && yum -y install pcre pcre-devel zlib zlib-devel && configure --prefix=/usr/local/nginx && make && make install
编辑nginx配置文件在最后一个"}"之前加入如下内容:
upstream test {
server 192.168.10.241:8081;
server 192.168.10.241:8082;
#ip_shash; 此处千万不要加这个命令,否则nginx不会采用轮询的方式调度后边的tomcat
}
server {
listen 88;
server_name ;
location / {
# proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://test;
}
}
然后浏览器输入
http://nginx_host_IP:88
连续刷新,会发现session不变,而后边的tomcat第一次是8081第二次是8082公平轮询
############################
作者:john
迷途小运维原创
转载请注明出处
相关文章推荐
- 在tomcat日志里打印memcache日志,并实现session共享
- nginx+tomcat +memcache实现session共享
- tomcat 7 集群使用 redis 进行session共享
- nginx + tomcat + memcache 支持jsp
- Tomcat上进行项目部署与WAR包含义
- tomcat 使用log4j进行日志切割
- 基于Memcached的tomcat间的Session共享
- 利用HttpClient or HttpURLConnection 借助tomcat实现在本地进行网络数据的访问
- Eclipse进行远程调试linux 环境的tomcat配置 更新maven web项目
- Tomcat如何与Servlet对象进行交互
- 分布式中使用redis进行session共享
- 使用Eclipse进行远程调试(Tomcat远程调试)
- nginx+tomcat+redis完成session共享
- eclipse中配置server中选择tomcat8无法进行下一步处理 在创建server的时候,选择tomcat8后,server name为空,并且无法手动输入,同时无法进行下一步操作。 解决方
- 解决tomcat在大进行大并发请求时,出现内存溢出的问题
- 使用memcache集中管理tomcat的session
- 多个Tomcat之间实现Session共享
- 反向代理来进行apache+tomcat的整合
- nginx负载均衡 tomcat集群 memcache共享session
- Eclipse配置tomcat、struts2进行java学习