一、解决方案三: Session独立服务器之Memcached
如果之前做过session复制,先把之前做的步骤还原
[root@node1 ~]# vim /usr/local/tomcat8/conf/server.xml
[root@node1 ~]# vim /usr/local/tomcat8/webapps/ROOT/WEB-INF/web.xml
[root@node1 ~]# /usr/local/tomcat8/bin/shutdown.sh &&/usr/local/tomcat8/bin/startup.sh
恢复到默认的轮询状态
112和113既是Tomcat也是Memcached
1、两台Tomcat上装上Memcached(内存型的缓存服务,运行和数据的存储在内存上操作)
[root@node1 ~]# yum -y install libevent memcached
[root@node1 ~]# memcached -u root -m 512M -n 10 -f 2 -d -vvv -c 512
选项:
-h #查看帮助信息
-p 指定memcached监听的端口号默认11211
-u #memcached程序运行时使用的用户身份必须是root用户
-l #memcached服务器的ip地址
-m #指定使用本机的多少物理内存存数据默认64M
-c #memcached服务的最大链接数
-vvv #显示详细信息
-n #chunk size的最小空间是多少单位字节
-f #chunk size大小增长的倍数默认1.25倍
-d #在后台启动
[root@node1 ~]# netstat -lnpt | grep :11211
2、测试memcached能否存储数据
[root@node1 ~]# yum -y install telnet
[root@node1 ~]# telnet 192.168.200.112 11211
set username 0 0 8
zhangsan
get username
quit
3、最后执行让tomcat-1和tomcat-2通过(msm)连接到memcached,将session包中的“.jar复制到/usr/local/tomcat/lib/下面”
先在112和113上创建一个session的文件,把一些.jar的包传上去
[root@node1 ~]# mkdir session
[root@node1 ~]# cd session/
[root@node1 ~]# cp session/*.jar /usr/local/tomcat8/lib/
4、编辑tomcat配置文件连接指定的memcached服务器,两台tomcat配置一样
[root@node1 ~]# vim /usr/local/tomcat8/conf/context.xml // 添加以下内容
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="memA:192.168.200.112:11211 memB:192.168.200.113:11211"
requestUrilgnorePattern=".*(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
/>
[root@node2 ~]# /usr/local/tomcat8/bin/shutdown.sh && /usr/local/tomcat8/bin/startup.sh
去网页上测试,session ID和mem不会变,ip会变。
二、解决方案四: Session独立服务器之Redis
把之前做的步骤还原
[root@node2 ~]# killall -9 memcached
[root@node2 ~]# vim /usr/local/tomcat8/conf/context.xml
[root@node2 ~]# ls session/ | while read line; do rm -rf /usr/local/tomcat8/lib/$line; done
[root@node2 ~]# /usr/local/tomcat8/bin/shutdown.sh && /usr/local/tomcat8/bin/stah
Redis与Memcached的区别
●内存利用率:使用简单的keyvalue (键值对)存储的话,Memcached 的内存利用率更高,而如果Redis采用hash结构来做key value存储,由于其组合式的压缩,其内存利用率会高于Memcached。
●性能对比:由于Redis只使用单核,而Memcached可以使用多核,所以平均每一个核上Redis 在存储小数据时比Memcached 性能更高。而在100k以上的数据 中,Memcached性能要高于Redis, 虽然Redis 最近也在存储大数据的性能上进行优化,但是比起Memcached,还是稍有逊色。
●Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用
●Redis支持数据的备份,即master slave模式的数据备份。
●Redis不仅仅支持简单的key Value类型的数据,同时还提供ist, set, zset, hash 等数据结构的存储。
只在一台tomcat上操作:
1、安装部署redis
把redis-4.0.9.tar.gz rz进来
[root@node1 ~]# tar xf redis-4.0.9.tar.gz -C /usr/src/
[root@node1 ~]# cd /usr/src/redis-4.0.9/
[root@node1 redis-4.0.9]# make
[root@node1 redis-4.0.9]# mkdir -p /usr/local/redis/{bin,etc,var}
[root@node1 src]# cp redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-server /usr/local/redis/bin/
src目录下这些文件作用如下
redis-server: Redis 服务器的daemon启动程序。
redis-cli: Redis命令行操作工具.你也可以用telnet根据其纯文本协议来操作。
redis-benchmark: Redis 性能测试工具,测试Redis在你的系统及你的配置下的读写性能。
redis-stat Redis: 状态检测工具,可以检测Redis当前状态参数及延迟状况。
[root@node1 src]# cd /usr/src/redis-4.0.9/
[root@node1 redis-4.0.9]# cp redis.conf /usr/local/redis/etc/
[root@node1 redis-4.0.9]# vim /usr/local/redis/etc/redis.conf // 修改内容
bind 0.0.0.0
daemonize yes
[root@node1 redis-4.0.9]# /usr/local/redis/bin/redis-server /usr/local/redis/etc/redisconf //启动
接下来在两台Tomcat虚拟机上操作:
[root@node1 ~]# mkdir redis-session
[root@node1 ~]# cd redis-session/
把redis下的那些包rz进来
[root@node1 redis-session]# cp *.jar /usr/local/tomcat8/lib/
[root@node1 redis-session]# vim /usr/local/tomcat8/conf/context.xml //添加以下内容
<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />
<Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
host="192.168.200.114"
port="6379"
database="0"
maxInactiveInterval="60" />
[root@node1 redis-session]# /usr/local/tomcat8/bin/shutdown.sh && /usr/local/tomcat8/bin/startup.sh
去网页上进行测试,还是IP 在变,其他不变。