使用memcached缓存tomcat7会话信息

简介:
tomcat7 + memcached

全部系统采用centos7.1 

各节点配置好hosts文件
cat /etc/hosts
172.16.92.1    node1.centos7.com    node1
172.16.92.2    node2.centos7.com    node2
172.16.92.3    node3.centos7.com    node3
172.16.92.6    node6.centos7.com    node6
172.16.92.7    node7.centos7.com    node7

node1 --> nginx反向代理至两个tomcat节点
node2, node3 --> tomcat把session信息存储在两个memcached中
node6, node7 --> memcached ()


================ node6 172.16.92.6/16 ===================
mount /dev/cdrom /mnt/cdrom/
yum -y install memcached
systemctl start memcached
netstat -taunl | grep 11211


================ node7 172.16.92.7/16 ===================
mount /dev/cdrom /mnt/cdrom/
yum -y install memcached
systemctl start memcached
netstat -taunl | grep 11211


================ node2 172.16.92.2/16 ===================

mount /dev/cdrom /mnt/cdrom/
yum -y install tomcat
mkdir -pv /data/webapps/ROOT/{lib,classes,META-INF,WEB-INF}
vim /data/webapps/ROOT/index.jsp
<%@ page language="java" %>
<html>
  <head><title>TomcatA</title></head>
  <body>
    <h1><font color="red">TomcatA.centos7.com</font></h1>
    <table align="centre" border="1">
      <tr>
        <td>Session ID</td>
    <% session.setAttribute("centos7.com","centos7.com"); %>
        <td><%= session.getId() %></td>
      </tr>
      <tr>
        <td>Created on</td>
        <td><%= session.getCreationTime() %></td>
     </tr>
    </table>
  </body>
</html>
============================
cd /usr/share/tomcat/lib
wget http://repo1.maven.org/maven2/de/javakaffee/msm/memcached-session-manager-tc7/1.8.3/memcached-session-manager-tc7-1.8.3.jar
wget http://repo1.maven.org/maven2/de/javakaffee/msm/memcached-session-manager/1.8.3/memcached-session-manager-1.8.3.jar
wget http://repo1.maven.org/maven2/de/javakaffee/msm/msm-javolution-serializer/1.8.3/msm-javolution-serializer-1.8.3.jar
wget http://mirrors.ibiblio.org/maven2/net/spy/spymemcached/2.11.1/spymemcached-2.11.1.jar
wget http://www.java2s.com/Code/JarDownload/javolution/javolution-5.4.3.1.jar.zip
unzip javolution-5.4.3.1.jar.zip

cp /etc/tomcat/server.xml{,.bak}
vim /etc/tomcat/server.xml
<Engine name="Catalina" defaultHost="node2.centos7.com">
<Host name="node2.centos7.com"  appBase="/data/webapps"
            unpackWARs="true" autoDeploy="true">
        <Context path="" docBase="/data/webapps/ROOT" reloadable="true">
                <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
                        memcachedNodes="n1:172.16.92.6:11211,n2:172.16.92.7:11211"
                        failoverNodes="n1"
                        requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
                        transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"/>
        </Context>
============================
systemctl start tomcat.service


windows浏览器访问 http://172.16.92.2:8080/
TomcatA.centos7.com
Session ID     AB327A3B9B86D87D51CB2D31297D2C4A-n2
Created on     1446005990634







================ node3 172.16.92.3/16 ===================

mount /dev/cdrom /mnt/cdrom/
yum -y install tomcat
mkdir -pv /data/webapps/ROOT/{lib,classes,META-INF,WEB-INF}
vim /data/webapps/ROOT/index.jsp
<%@ page language="java" %>
<html>
  <head><title>TomcatB</title></head>
  <body>
    <h1><font color="blue">TomcatB.centos7.com</font></h1>
    <table align="centre" border="1">
      <tr>
        <td>Session ID</td>
    <% session.setAttribute("centos7.com","centos7.com"); %>        
        <td><%= session.getId() %></td>
      </tr>
      <tr>
        <td>Created on</td>
        <td><%= session.getCreationTime() %></td>
     </tr>    </table>
  </body>
</html>
============================
cd /usr/share/tomcat/lib
wget http://www.java2s.com/Code/JarDownload/javolution/javolution-5.4.3.1.jar.zip
wget http://mirrors.ibiblio.org/maven2/net/spy/spymemcached/2.11.1/spymemcached-2.11.1.jar
wget http://repo1.maven.org/maven2/de/javakaffee/msm/msm-javolution-serializer/1.8.3/msm-javolution-serializer-1.8.3.jar
wget http://repo1.maven.org/maven2/de/javakaffee/msm/memcached-session-manager/1.8.3/memcached-session-manager-1.8.3.jar
wget http://repo1.maven.org/maven2/de/javakaffee/msm/memcached-session-manager-tc7/1.8.3/memcached-session-manager-tc7-1.8.3.jar
unzip javolution-5.4.3.1.jar.zip

cp /etc/tomcat/server.xml{,.bak}
vim /etc/tomcat/server.xml
<Engine name="Catalina" defaultHost="node3.centos7.com">
<Host name="node3.centos7.com"  appBase="/data/webapps"
            unpackWARs="true" autoDeploy="true">
        <Context path="" docBase="/data/webapps/ROOT" reloadable="true">
                <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
                        memcachedNodes="n1:172.16.92.6:11211,n2:172.16.92.7:11211"
                        failoverNodes="n1"
                        requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
                        transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"/>
        </Context>
============================
systemctl start tomcat.service



windows浏览器访问 http://172.16.92.3:8080/
TomcatB.centos7.com
Session ID     B22E48AA2A89BCE2BAD4021D9E912E03-n2
Created on     1446005950406










================ node1 172.16.92.1/16 ===================
nginx做tomcat1,2的反向代理和负载均衡

安装epel源
wget -O /etc/yum.repos.d/epel7.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum -y install nginx
cd /etc/nginx
cp nginx.conf{,.bak}
vim nginx.conf
:1,$d -- 删除全部内容
:set paste --> 再粘贴如下内容
################
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

events {
    worker_connections 1024;
}

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;
    include /etc/nginx/conf.d/*.conf;
    upstream tcsrvs {
        server node2.centos7.com:8080;
        server node3.centos7.com:8080;
    }
    server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  _;
        root         /usr/share/nginx/html;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
        }
        location ~* \.(jsp|do)$ {
                proxy_pass http://tcsrvs;
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }
}
==================end of nginx.conf
nginx -t
>出现ok和successful相关句子就没问题了
systemctl start nginx.service
ss -tanl | grep 80



windows浏览器访问 http://172.16.92.1/index.jsp, 在下面两个页面轮询,但是会话ID是一样的
-----------------------------------------------------------------------
TomcatA.centos7.com
Session ID     DE4FB78238A882475C86E1735779F5C9-n2
Created on     1446006726402
-----------------------------------------------------------------------
TomcatB.centos7.com
Session ID     DE4FB78238A882475C86E1735779F5C9-n2
Created on     1446006726402
-----------------------------------------------------------------------





================ node7 172.16.92.6/16 ===================
systemctl stop memcached

windows浏览器访问 http://172.16.92.1/index.jsp, 在下面两个页面轮询,
但是会话ID是一样的, 并且会话ID是从另一个缓存服务器取得.
-----------------------------------------------------------------------
TomcatA.centos7.com
Session ID     DE4FB78238A882475C86E1735779F5C9-n1
Created on     1446007835727
-----------------------------------------------------------------------
TomcatB.centos7.com
Session ID     DE4FB78238A882475C86E1735779F5C9-n1
Created on     1446007835727
-----------------------------------------------------------------------







本文转自 zhuhc1988 51CTO博客,原文链接:http://blog.51cto.com/changeflyhigh/1707491,如需转载请自行联系原作者
目录
相关文章
|
域名解析 缓存 安全
Tomcat - 如何优化 Tomcat 配置(内存、并发、缓存)优化
Tomcat - 如何优化 Tomcat 配置(内存、并发、缓存)优化
786 0
|
2月前
|
缓存 NoSQL Redis
如何在Python中使用Redis或Memcached进行缓存?
如何在Python中使用Redis或Memcached进行缓存?
28 2
|
8月前
|
缓存 关系型数据库 MySQL
高性能内存对象缓存Memcached
高性能内存对象缓存Memcached案例
|
6月前
|
存储 缓存 NoSQL
springboot快速整合Memcached缓存技术
springboot快速整合Memcached缓存技术
|
11月前
|
缓存 NoSQL 测试技术
实战SSM_O2O商铺_46【Redis缓存】头条信息+商铺目录Service层加入缓存
实战SSM_O2O商铺_46【Redis缓存】头条信息+商铺目录Service层加入缓存
47 0
|
存储 缓存 NoSQL
2021年你还不会Shiro?----9.Shiro利用缓存存储权限信息
前面的学习以及清楚,我们每调用一次权限的判断,就会默认调用一次自定义Realm中的doGetAuthorizationInfo方法进行过权限验证,但是当用户量与并发量比较高时,再按照这种方式去查询数据库,就会给系统带来很大的压力,让系统的响应变得很慢很,容易降低用户体验。这时候我们就需要使用缓存来存储已经登录的用户信息和用户的权限信息,缓存都是基于内存实现的比数据库快了很多,这样用户进来,直接从缓存中获取信息就行,不用去争抢有限的数据库资源了。
167 0
2021年你还不会Shiro?----9.Shiro利用缓存存储权限信息
|
XML 缓存 NoSQL
分布式服务器框架之Server.Common中通过Xml配置渠道、服务器集群、热更新信息代码解析Xml缓存进内存
ChannelConfig.cs代码解析加载ChannelConfig.xml。使用了System.Xml.Linq的XDocument工具类来加载xml文件。其基本原理就是获取到Root节点下名为“Channel”的所有Element节点,然后使用迭代器循环,拿到每一个Element中的属性,先缓存ChannelEntity结构中,最后存到字典里。
|
存储 缓存 NoSQL
同一服务器上有多个 WordPress 网站如何配置 Memcached 缓存?
如果在同一台服务器上,部署了多个 Wordpress 项目,如果在每台服务器上都启用 Memcached ,那么将会出现网站白屏、数据串站的问题,本文我们来介绍如何处理这种问题。
311 0
|
缓存 Java 开发者
《SpringBoot篇》18.SpringBoot整合Memcached缓存超详细教程(二)
《SpringBoot篇》18.SpringBoot整合Memcached缓存超详细教程(二)
335 0
《SpringBoot篇》18.SpringBoot整合Memcached缓存超详细教程(二)
|
存储 缓存 NoSQL
《SpringBoot篇》18.SpringBoot整合Memcached缓存超详细教程(一)
《SpringBoot篇》18.SpringBoot整合Memcached缓存超详细教程(一)
161 0
《SpringBoot篇》18.SpringBoot整合Memcached缓存超详细教程(一)