基于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
下一篇 2018-03-31

相關推薦

  • Linux第五周作業

    1、簡述rpm與yum命令的常見選項,并舉例 RPM: rpm命令:rpm ?[OPTIONS] ?[PACKAGE_FILE] 安裝:-i, –install 升級:-U, –update, -F, –freshen 卸載:-e, –erase 查詢:-q, –query 校驗:-V, &#821…

    2018-07-16
  • Linux基本指令

    hostname??完整主機名cat?+文件路徑??可查看文件信息cat /etc/shells??顯示所有shelluname -r????查看內核版本ls?cpu???查看cpu信息free命令??查看內存?后面加-k是顯示的內存以kb為單位,-m(MB),-g(GB),-h顯示易讀單位lsblk??查看硬盤dmesg??查看計算機啟動的一些相關信息dm…

    2018-07-22
  • 第三周作業

    1.列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可 [root@yinwei ~]# who | cut -d ‘ ‘ -f1 | sort -ucentosgentooroot   取出最后登錄到當前系統的用戶的相關信息 [root@yinwei ~]# last | head -1gentoo pts/2 …

    Linux筆記 2018-05-25
  • MySQL用戶和權限管理

    MySQL用戶和權限管理

    2018-06-15
  • Centos7默認網卡名如何修改成eth*

    Centos7 新添加網卡默認的識別名ens*,用起來很不習慣,為了方便系統的統一化管理,如何將默認命名規則改成eth*?

    2018-04-29
  • Mysql界面化工具Workbench安裝指南

    此文檔為mysql知識拓展,需要了解界面化的mysql的同學可以一覽!

    2018-06-05
欧美性久久久久