基于Memcached的session server

  • session server:將Tomcat的session信息保存在Memcached中,實現session server

    • 前提:

      • 兩個Tomcat節點,兩個Memcached節點,一個nginx節點;Tomcat需要使用到Memcached-session-manager這個Java類,即上面所說的調用了Memcached提供的API的模塊,以達到Memcached通信的目的
      • Add memcached-session-manager jars to tomcat:

        • Memcached-session-manager項目下載地址:https://github.com/magro/memcached-session-manager/wiki/SetupAndConfiguration;下載如下jar文件至各Tomcat節點的$CATALINA_HOME/lib目錄中,其中的memcached-session-manager-${version}.jar的版本號和Tomcat的版本號是兩碼事,它的${version}要和memcached-session-manager-tc${6,7,8}-${version}.jar中的${version}一致,tc${6,7,8}對應Tomcat版本號
        • Independent of the chosen serialization strategy you always need the memcached-session-manager-${version}.jar and either memcached-session-manager-tc6-${version}.jar for tomcat6, memcached-session-manager-tc7-${version}.jar for tomcat7 (attention: tomcat 7.0.23+), memcached-session-manager-tc8-${version}.jar for tomcat8 or memcached-session-manager-tc9-${version}.jar for tomcat9.
        • If you're using memcached, you also need the spymemcached-${version}.jar. Tested up to v2.12.3.
        • msm-javolution-serializer-${version}.jar序列化工具
        • Please download the appropriate jars and put them in $CATALINA_HOME/lib/

 

  • 分別在兩個Tomcat上的某host中的context容器中創建會話管理器,如下所示:

    • <Context path=”/NAME1” docBase=”/usr/local/tomcat/webapps/NAME2” reloadable=”true”> 這里注意NAME1和NAME2不能相同,而且docBase還需要是絕對路徑

<Manager className=”de.javakaffee.web.msm.MemcachedBackupSessionManager”

memcachedNodes=”n1:172.16.8.93:11211,n2172.16.8.94:11211” 實現Tomcat和后端的兩個memcached節點通信,當Tomcat將緩存存到一個節點后,自動將副本復制到另外一個節點

failoverNodes=”n1” 指明n1為備用節點

requestUriIgnorePattern=”.*\.(ico|png|gif|jpg|css|js)$” 忽略這些結尾的URL,不以緩存

transcoderFactoryClass=”de.javakaffee.web.msm.serializer.javolution.JavolutionTranscodeFactory” /> 指定序列化工具

</Context>

  • 分別為兩個context提供測試頁面:

    • # mkdir -pv /usr/local/tomcat/webapps/test/WEB-INF/{classes,lib}
    • # vim /usr/local/tomcat/webapps/test/index.jsp,添加如下內容:

<%@ page language="java" %>

<html>

  <head><title>TomcatA | TomcatB</title></head>

  <body>

    <h1><font color="{red | bule}">{TomcatA | TomcatB}.magedu.com</font></h1>

    <table align="centre" border="1">

      <tr>

        <td>Session ID</td>

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

        <td><%= session.getId() %></td>

      </tr>

      <tr>

        <td>Created on</td>

        <td><%= session.getCreationTime() %></td>

     </tr>

    </table>

  </body>

</html>

  • nginx中的配置:

    • vim /etc/nginx/nginx.conf

http {

upstream tservers {

       server 172.16.8.93:8080 weight=2;

       server 172.16.8.94:8080 weight=3;

    }

}

  • vim /etc/nginx/conf.d/tomcat.conf

server {

        listen 80;

        location ~* \.(jsp|do)$ {

                proxy_pass http://tservers;

        }

}

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/93920

(0)
DPingDPing
上一篇 2018-03-31 14:28
下一篇 2018-03-31 14:51

相關推薦

  • 轉義字符Escape character在正則中的用法

    通過()的在基本正則和擴展正則中的不同使用,詳細介紹了轉義字符的使用注意事項

    Linux筆記 2018-04-13
  • 馬哥教育 – 第二周作業

    一、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。 <1>命令:CP 概念:用來將一個或多個源文件或者目錄復制到指定的目的文件或目錄。它可以將單個源文件復制成一個指定文件名的具體的文件或一個已經存在的目錄下。cp命令還支持同時復制多個文件,當一次復制多個文件時,目標文件參數必須是一個已經存在的目錄,否則將出現錯誤。 語法…

    2018-05-21
  • inode 表

    cp和inode :                    

    Linux筆記 2018-04-01
  • 第十一周作業

    1、搭建php-fpm工作方式的LAMP環境,實現wordpress正常訪問

    2、什么是DML?常用SQL舉例,每個命令至少1個例子,最多不超過3個例子

    3、簡述ftp的主動和被動模式,并實現基于pam認證的vsftpd

    4、簡述NFS服務原理及配置

    5、簡述samba服務,并實現samba配置

    2018-07-20
  • Docker容器一

    容器的安裝,鏡像的管理,鏡像的制作

    2018-07-31
  • yum運用

    隨便寫寫,大佬勿噴

    Linux筆記 2018-04-20
欧美性久久久久