Nginx+Tomcat+Memcached實現會話保持

来源:http://www.cnblogs.com/aubin/archive/2017/11/18/7858081.html
-Advertisement-
Play Games

會話保持的三種方式 Session sticky會話綁定:通過在前端調度器的配置中實現統一session發送至同一後髮端伺服器 Session cluster會話集群:通過配置Tomcat保持所有Tomcat的session的信息一致。 Session server 會話服務:將所有的session ...


會話保持的三種方式

  • Session sticky會話綁定:通過在前端調度器的配置中實現統一session發送至同一後髮端伺服器
  • Session cluster會話集群:通過配置Tomcat保持所有Tomcat的session的信息一致。
  • Session server 會話服務:將所有的session交給專門的session服務管理。
    這裡講解第三種,使用Memcached做session server

一、架構圖

系統環境

所有伺服器全部採用CentOS7.3

所需要的軟體包

以下文件都要放置在tomcat伺服器主機上的類庫目錄中

rpm -ql tomcat-lib                  #   
/usr/share/java/tomcat/             # yum安裝預設在此目錄
/usr/local/tomcat/lib               # 在官網rpm安裝的預設在此目錄了
memcached-session-manager-1.8.3.jar
        http://repo1.maven.org/maven2/de/javakaffee/msm/memcached-session-manager/1.8.3/
memcached-session-manager-tc7-1.8.3.jar
        http://repo1.maven.org/maven2/de/javakaffee/msm/memcached-session-manager-tc7/1.8.3/
spymemcached-2.11.1.jar
        http://repo1.maven.org/maven2/net/spy/spymemcached/2.11.1/
javolution-5.4.3.1.jar      
        http://memcached-session-manager.googlecode.com/svn/maven/javolution/javolution/5.4.3.1/
msm-javolution-serializer-1.8.3.jar
        http://repo1.maven.org/maven2/de/javakaffee/msm/msm-javolution-serializer/1.8.3/

二、Apache詳細配置

  • 安裝httpd

    yum install httpd
  • 創建配置文件
    /etc/httpd/conf.d下新建一個配置文件

    shell > vim /etc/httpd/conf.d/ajp-tomcat.conf
    #
    <proxy balancer://tomcatservers>                                        # 定義主機組
        BalancerMember  ajp://172.18.68.21:8009 route=tomcatA
        BalancerMember  ajp://172.18.68.22:8009 route=tomcatB
        ProxySet lbmethod=byrequests
    </proxy>
    #
    <virtualhost *:80>                                                      # 創建虛擬主機
                ServerName www.baidu.com
                ProxyVia On
                ProxyRequests Off
                ProxyPreserveHost On
                proxyvia on
                <Proxy *>
                        Require all granted
                </Proxy>
                ProxyPass / balancer://tomcatservers/                   # 設定所有調度至後端
                ProxyPassReverse / balancer://tomcatservers/            # 設定所有調度至後端
                <Location />                                            # centos7預設拒絕,所以要允許
                        Require all granted
                </Location>
                <Location /balancer-manager>                            # apache的管理頁面
                        SetHandler balancer-manager
                        ProxyPass !                                     # 匹配到apache的管理頁面不代理
                        Require all granted                             # 設定允許
                </Location>
    </virtualhost>
    #
    shell > systemctl start httpd

三、Tomcat的配置

兩台tocat的配置大同小異,配置文件基本都相同,僅是後面創建的兩個測試頁面不同而已。

  • 安裝Tomcat

    yum install tomcat tomcat-admin-webapps  tomcat-webapps
  • 修改配置文件
    在/etc/tomcat/下有個server.xml文件,打開這個文件後在host標簽內添加或者修改如下配置。

    vim /etc/tomcat/server.xml
    在host標簽內配置以下內容
    <Context path="/myapp" docBase="myapp"  reloadable="true">
      <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
           memcachedNodes="n1:172.18.68.31:11211,n2:172.18.68.32:11211"  
    #n1:IP:prot為後端兩個memcached地址
    #
    failoverNodes="n2"        # 設定n2備用。所以n1就是主
    requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"             # 匹配到這些結尾的文件不考慮cookie
    transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"
    />
    </Context>                  # 黃色標記部分為流式化管理工具,如果使用其他流式化工具,更改這兩個名即可
  • 下載所依賴的軟體包
    將文章最開頭提到的所有.jar文件結尾的文件軟布放置在tomcat伺服器主機上的類庫目錄中

    rpm -ql tomcat-lib                  # 通過此命令查看.jar文件存放的目錄,就是類庫文件的目錄
    /usr/share/java/tomcat/             # yum安裝的tomcat類庫路徑
    /usr/local/tomcat/lib               # 在官網rpm安裝的tomcat類庫路徑
  • 添加測試頁面
    下麵兩個測試頁面各不相相同,所以要在各自的目錄下分別創建。
    在tomcatA中添加測試頁面

    shell > mkdir -pv /usr/local/tomcat/webapps/test/WEB-INF/{classes,lib}
    shell > vim /usr/local/tomcat/webapps/test/index.jsp
    添加如下內容:
    <%@ page language="java" %>
    <html>
      <head><title>TomcatA</title></head>
      <body>
    <h1><font color="red">TomcatA.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>

    在tomcatB中添加測試頁面

    shell > mkdir -pv /usr/local/tomcat/webapps/test/WEB-INF/{classes,lib}
    shell > vim /usr/local/tomcat/webapps/test/index.jsp
    <%@ page language="java" %>
    <html>
    <head><title>TomcatB</title></head>
        <body>
        <h1><font color="blue">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> 
  • 啟動服務

    systemctl start tomcat

四、Memcached配置

Mechached基本沒有什麼配置的,安裝上啟動服務即可.

yum install memcached
systemctl start memcached

五、測試

使用瀏覽器訪問http://172.18.68.11,然後多次刷新,只要SessionID這一欄的數值不變就說明session已經保持不變


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1、收集統計信息vacuum full analyze ZCXT.ZCOT_PS_PROJECT; 2、檢查表的數據量分佈select gp_segment_id,count(*) from fact_table group by gp_segment_id; 3、表結構上建議創建表的時候,分佈鍵放 ...
  • 開發一個項目時都會有一個蛋疼的問題——寫資料庫需求文檔,然後根據這個文檔來建資料庫,如果後來需求改了,要改資料庫還要改文檔,有時忙著忙著就忘改了,導致文檔是過期的。那麼我們自己寫個腳本在資料庫運行直接生產數據字典,這樣只要改資料庫就行了。目前在網上搜了下,發現sqlServer只有2005的生成工具 ...
  • 0. properties ####################################mysql########################################### db.mysql.driverClassName=com.mysql.jdbc.Driver db.m ...
  • CK21190-Mycat分散式架構之Mycat分散式架構實戰解析 Mycat是國內第一個賣電子書的開源軟體,參與的作者們平生第一次分到了一筆開源收入的酬勞,雖然微不足道,但那一刻,他們都堅信,Mycat會越來越好。如今,Mycat的穩定參與者人數已經超過10人,包括很多美女,而第三代新生志願者團隊 ...
  • 我們在(人工智慧搶80萬工人的飯碗,卻增加了350萬個新崗位?!)文章中概述了人工智慧帶來的便利之處,那麼越來越多的人對人工智慧趨之若鶩,那人工智慧的就業崗位如何呢?薪資待遇如何呢?又有哪些實力強大的AI公司呢? 最課程為大家分析各個招聘網站,python在智聯招聘上薪資待遇4k-50k不等;拉勾網 ...
  • cobbler-自動安裝系統 1.1 cobber簡介 1.1.1 cobbler說明 1.2 服務端部署 1.2.1 系統環境 系統:CentOS 7.4 ip: 外網:10.0.0.202 內網:172.16.1.202 1.2.2 安裝依賴包 1.2.3 修改配置文件 #備份、修改cobble ...
  • Windows常用的分區格式有三種,分別是FAT16、FAT32、NTFS格式。 在Linux操作系統里有Ext2、Ext3、Linux swap和VFAT四種格式。 FAT16: 作為一種文件名稱,FAT(File Allocation Table,文件分配表)自1981年問世以來,已經成為一個計 ...
  • In Doing We Learning 在操作中學習。如果只是光看教程,沒有實際的操作,對編程語言的理解很空泛,所以決定從單片機中學習C語言。 #include<reg52.h> //包含的頭文件。 sbit LED = P0^0; //這裡就是對P0寄存器進行位操作。相當於對P0^0位賦予了一個 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...