Apache通過mod_proxy模塊連接Tomcat并使用Memcached+MSM做Tomcat會話保持

一 實驗目的

本實驗使用Apache的mod_proxy模塊連接Tomcat, Nginx在前端做負載均衡,并使用Memcahced+MSM的方式保持Tomcat的會話,實現會話共享。

二 實驗拓撲

說明:為測試方便,Memcached與Tomcat安裝在同一機器中,正式環境應該安裝在不同機器中。

1.png

三 實驗環境

主機 IP 安裝組件
node1 192.168.237.132 nginx
node2 192.168.237.129 httpd+tomcat+memcached
node3 192.168.237.130 httpd+tomcat+memcached

四 實驗步驟

1 在node2和node3上安裝tomcat

#安裝Java環境
rpm -ivh jdk-7-linux-x64.rpm   #首先應下載jdk安裝包
注:如系統已安裝了openjdk的包,應先卸載。例:yum remove java-1.7.0-openjdk*
#設置Java的環境變量
vim /etc/profile.d/java.sh
export JAVA_HOME=/usr/java/latest
export PATH=$PATH:$JAVA_HOME:/bin
source /etc/profile.d/java.sh
#解壓tomcat包
tar xvzf apache-tomcat-7.0.73.tar.gz -C /usr/local/
ln -sv /usr/local/apache-tomcat-7.0.73 /usr/local/tomcat
#設置tomcat環境變量
vim /etc/profile.d/tomcat.sh
export CATALINA_HOME=/usr/local/tomcat
export PATH=$PATH:$CATALINA_HOME/bin
source /etc/profile.d/tomcat.sh
#啟動tomcat
catalina.sh start

測試訪問,瀏覽器中輸入192.168.237.129:8080, 如下圖所示:

2.png

2 在node2和node3上安裝httpd并配置通過ajp協議代理至tomcat

#安裝httpd
yum install httpd
#配置httpd使得通過ajp協議代理至tomcat
vim /etc/httpd/conf/httpd.conf
#DocumentRoot "/var/www/html"    #注釋掉主配置文件中的根目錄
#配置虛擬主機
vim /etc/httpd/conf.d/tomcat.conf
<VirtualHost *:80>
  servername a.com
  ProxyRequests Off
  ProxyVia On
  ProxyPreserveHost On
  <Proxy *>
    Require all granted
  </Proxy>
  ProxyPass / ajp://127.0.0.1:8009/
  ProxyPassReverse / ajp://127.0.0.1:8009
  <Location />
    Require all granted
  </Location>
</VirtualHost>

測試訪問,瀏覽器中輸入192.168.237.129, 如下圖所示:

3.png

3 在node2和node3上配置安裝Memcahed+MSM

#安裝memcached
yum install memcached
#啟動memcached
systemctl start memcached
#修改tomcat配置文件
vim /usr/local/tomcat/conf/server.conf   #在<Host>下添加如下內容
<Context path="/test" docBase="/usr/local/tomcat/webapps/test" reloadable="true">
 <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
          memcachedNodes="n1:192.168.237.129:11211,n2:192.168.237.130:11211"
          failoverNodes="n1"
          requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
          transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"
 />
</Context>
#創建jsp會話測試文件
mkdir -pv /usr/local/tomcat/webapps/test/{classes,lib,META-INF,WEB-INF}
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>
注:在node3上把TomcatA變成TomcatB, red變成blue即可

測試訪問,瀏覽器中輸入192.168.237.129/test和192.168.237.130/test, 應如下圖所示:

4.png5.png

#下載MSM的類庫文件并放到/usr/local/tomcat/lib中
[root@node2 ~]# mv javolution-5.4.3.1.jar memcached-session-manager-1.8.3.jar memcached-session-manager-tc7-1.8.3.jar msm-javolution-serializer-1.8.3.jar spymemcached-2.11.1.jar /usr/local/tomcat/lib/
#重新啟動tomcat
catalina.sh stop
catalina.sh start

4 在node1上配置Nginx并配置負載均衡

#安裝nginx
yum install nginx
#配置負載均衡
upstream tomcat_server {
    server 192.168.237.129;
    server 192.168.237.130;
}

server {
    listen       80;
    server_name 192.168.237.132;

location / {
    root /usr/local/tomcat/webapps;
    proxy_pass http://tomcat_server;
}

測試訪問,瀏覽器中輸入192.168.237.132/test, 查看session是否變化。

6.png7.png

可以看出已經實現了session保持。

原創文章,作者:N25_zzc,如若轉載,請注明出處:http://www.www58058.com/66780

(0)
N25_zzcN25_zzc
上一篇 2017-01-17
下一篇 2017-01-17

相關推薦

  • Linux下DNS服務器配置

    Linux下DNS服務器配置 簡要描述各種DNS服務器的配置方法。包括正向解析DNS服務器、逆向解析DNS服務器、主從DNS服務器。 實驗環境整體配置 關閉SElinux setenfore 0 清空防火墻 iptables -F 修改主配置文件 /etc/named.conf #監聽本機外網端口 listen-on port 53 { 127.0.0.1;…

    Linux干貨 2017-05-31
  • 文件的權限和訪問控制列表

      在linux管理中,為了使不同的用戶對文件有不同的操作權限。我們需要正確的修改文件的權限,一方面是為安全著想, 另一方面則是防止自己辛辛苦苦碼出的東西被其它用戶給誤刪。 1.如何修改文件的屬主和屬主:   前面用戶和組管理的內容中,我們已經對文件的屬主、屬組問題做了說明。有時候我們需要對一些文件的屬組和屬組進行修改…

    Linux干貨 2016-08-04
  • Linux系統程序包管理工具-RPM

    一、rpm是什么 RPM 是RPM Package Manager(RPM軟件包管理器)的縮寫,這一文件格式名稱雖然打上了RedHat的標志,但是其原始設計理念是開放式的。RPM包管理器(RPM)是一個強大的命令行驅動的包管理系統能夠安裝、卸載、驗證、查詢和更新計算機軟件包。每個軟件包包括存檔的文件連同包和它的版本信息,描述等。還有一個庫API,允…

    Linux干貨 2015-11-19
  • 基于ssl功能實現mysql主從復制

    基于ssl功能實現mysql主從復制         證書準備:                                  CA證書…

    2016-11-22
  • 用戶和組的四大配置文件簡介

    一. 用戶的由來 linux系統擁有的就是資源,最重要的事就是對資源的分配,資源分給誰?在linux上資源的訪問是對用戶賦予不同的權限實現,也就是說能訪問資源的單位是用戶。那用戶在獲取資源之前要實現證明自己是本用戶,這個過程稱為認證,他通過密碼和用戶名實現。在用戶登錄時會將用戶輸入的用戶名和密碼進行校驗,校驗過程就是將輸入的用戶名和密碼與linux系統上記錄…

    Linux干貨 2016-10-24
  • Memcache存儲大數據的問題

    Memcache存儲大數據的問題   huangguisu       Memcached存儲單個item最大數據是在1MB內,如果數據超過1M,存取set和get是都是返回false,而且引起性能的問題。 我們之前對排行榜的數據進行緩存,由于排行榜在我們所有sql select…

    Linux干貨 2015-05-05

評論列表(1條)

  • 馬哥教育
    馬哥教育 2017-04-10 16:03

    總結的很好,請繼續保持~~~加油??!

欧美性久久久久