天天看點

使用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 ===================

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

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>

        <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 ===================

  <head><title>TomcatB</title></head>

    <h1><font color="blue">TomcatB.centos7.com</font></h1>

    <% session.setAttribute("centos7.com","centos7.com"); %>        

     </tr>    </table>

<Engine name="Catalina" defaultHost="node3.centos7.com">

<Host name="node3.centos7.com"  appBase="/data/webapps"

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是一樣的

-----------------------------------------------------------------------

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是從另一個緩存伺服器取得.

Session ID     DE4FB78238A882475C86E1735779F5C9-n1

Created on     1446007835727

本文轉自 zhuhc1988 51CTO部落格,原文連結:http://blog.51cto.com/changeflyhigh/1707491,如需轉載請自行聯系原作者