tomcat之-從AT到Cluster

本文導航

一、    LAMT搭建以及部署應用
       1、LAMT部署   
               (1)、安裝Apache   
               (2)、安裝Tomcat  
               (3)、安裝Mysql5.1  
               (4)、部署jspxcms應用     
        2、LNMT部署    

二、Tomcat簡單會話保持集群    
        1、后端tomcat環境搭建    
        2、nginx + tomcat cluser    
                 基于IP哈希綁定會話  
        3、httpd + tomcat集群基于balancer實現  
               (1)、基于http模塊實現會話粘性    
               (2)、基于ajp模塊實現會話粘性   
               (3)、啟用管理接口   

三、Tomcat 會話復制集群    
        1、負載均衡配置    
        2、啟用tomcat會話復制     
        3、添加<distributable/>元素    

四、session會話保持之session服務器    
        1、集群架構    
        2、配置tomcat       
        3、創建測試頁面    
        4、配置前端調度器    
        5、測試會話保存功能    

一、LAMT搭建以及部署應用:

tomcat之-從AT到Cluster

 

1、LAMT部署

 

LAMT=Linux Apache(httpd) MySQL Tomcat ,即通過httpd反向代理tomcat向外提供服務;

httpd的代理模塊有三種:

   proxy_http_module:適配http協議客戶端;

   proxy_ajp_module:適配ajp協議客戶端;

   proxy mod_jk :ApacheTomcat的連接器,需編譯,少數舊服務器使用;

根據代理模塊不同,主體結構可分為下面三種

   Client (http) –> httpd (proxy_http_module)(http) –> tomcat (http connector) –>mysql

   Client (http) –> httpd (proxy_ajp_module)(ajp) –> tomcat (ajp connector) –>mysql

   Client (http) –> httpd (mod_jk)(ajp) –> tomcat (ajp connector) –>mysql

各種的代理配置如下(proxy mod_jk過于陳舊,本文不做討論)如為httpd2.2,需去掉Require all granted顯示授權配置;

proxy_http_module代理配置示例:

 

     <VirtualHost *:80>
        ServerName     www.jev6.com
        ProxyRequests Off
        ProxyVia        On
        ProxyPreserveHost On
        <Proxy *>
          Require all granted
        </Proxy>
        ProxyPass / http://172.16.250.169:8080/ 
        ProxyPassReverse / http:// 172.16.250.169:8080/ 
        <Location />
          Require all granted
        </Location>
      </VirtualHost>

proxy_ajp_module代理配置示例:

 

     <VirtualHost *:80>
        ServerName     www.jev6.com
        ProxyRequests Off
        ProxyVia        On
        ProxyPreserveHost On
        <Proxy *>
          Require all granted
        </Proxy>
        ProxyPass / ajp:// 172.16.250.169:8009/ 
        ProxyPassReverse / ajp:// 172.16.250.169:8009/ 
        <Location />
          Require all granted
        </Location>
      </VirtualHost>

本為于httpd通過ajp模塊反向代理tomcat為例:

 

(1)、安裝Apache

 

[root@jev6 ~]#yum install httpd -y

安裝Tomcat:

 

[root@jev6 ~]# yum install java-1.7.0-openjdk-devel tomcat-lib tomcat-admin-webapps tomcat-webapps -y
[root@jev6 ~]#vim /etc/httpd/conf.d/LAMT-ajp.conf

tomcat之-從AT到Cluster

[root@jev6 ~]#service httpd restart

 

(2)、安裝Tomcat

 

[root@jev6 ~]#tomcat version

tomcat之-從AT到Cluster

[root@jev6 ~]#tomcat start

從瀏覽器訪問http://172.16.250.169,注意:selinux以及iptables策略

tomcat之-從AT到Cluster

到此LAT部署完成;

 

(3)、安裝Mysql5.1

 

 

[root@jev6 ~]#yum install mysql-server -y
[root@jev6 ~]#service mysqld start

授權jspxcms用戶使用權限:

 

[root@jev6 ~]#mysql
mysql> grant all privileges on jspxcms.* to 'jspxcms'@'%' identified by 'jspxcmspass';

 

(4)、部署jspxcms應用

 

創建應用安裝目錄/var/lib/tomcat/webapps/jspxcms/(也可以直接使用webapps下的ROOT/,此時注意清空自帶的ROOT/下的文件)

下載jspxcms(http://www.jspxcms.com)

解壓后將解壓后的ROOT目錄里面的文件拷貝到/var/lib/tomcat/webapps/jspxcms/下

 

[root@jev6 ~]#wget http://www.jspxcms.com/info_download.jspx?id=239  
[root@jev6 ~]#mv  info_download.jspx\?id\=239 jspxcms-7.0.1-release.zip
[root@jev6 ~]#unzip jspxcms-7.0.1-release.zip
[root@jev6 ~]#mv ROOT/* /var/lib/tomcat/webapps/jspxcms/

在server.xml的host組件里面加入虛擬主機配置<Context path="/jspxcms" docBase="jspxcms" reloadable="true" />;

[root@jev6 ~]#vim /etc/tomcat/server.xml

tomcat之-從AT到Cluster

重啟tomcat:

[root@jev6 ~]#service tomcat restart

在瀏覽器打開http://172.16.250.169/jspxcms/(如果應用部署在默認的ROOT下,直接輸入IP即可如:http://172.16.250.169)

tomcat之-從AT到Cluster

tomcat之-從AT到Cluster

tomcat之-從AT到Cluster

tomcat之-從AT到Cluster

重啟tomcat:

[root@jev6 ~]#service tomcat restart

從瀏覽器打開http://172.16.250.169/jspxcms/測試

tomcat之-從AT到Cluster

到此LAMT部署jspxcms到此成功;

【如果出現404報錯】:

tomcat之-從AT到Cluster

[root@jev6 ~]#vim /etc/tomcat/web.xml

tomcat之-從AT到Cluster

將/etc/tomcat/web.xml 112行左右<init-param> 中<param-value>ture</param-value>的fslse改為ture;

tomcat之-從AT到Cluster

[root@jev6 ~]#service tomcat restart

 

2、LNMT部署

 

LNMT即Linux Nginx MySQL Tomcat,只需要將LAMT的httpd關閉替換為Nginx即可,其他配置依然保存不變,具體如下;

 

[root@jev6 ~]#httpd -k stop
[root@jev6 ~]#yum install nginx -y

在default.conf的server里面加入代理配置:

 

location / {
      proxy_pass http://172.16.250.169:8080;
    }
[root@jev6 ~]#vim /etc/nginx/conf.d/default.conf

tomcat之-從AT到Cluster

在瀏覽器打開http://172.16.250.169/jspxcms/

tomcat之-從AT到Cluster

注:

如果需要動靜分離,只需要修改location配置:

 

   location ~* \.(jsp|do)$ {
      proxy_pass http://172.16.250.169:8080;
    }

需要后端程序設計時將動靜態內容分開存儲;

 

二、Tomcat簡單會話保持集群

 

本文主要通過httpd(或nginx)負載均衡到后端tomcat服務器,并實現會話粘性;

兩個tomcat節點:172.16.250.121(tomcatA.jev1.com),172.16.250.122(tomcatB.jev2.com)

一個負載均衡節點:172.16.250.169

主體架構:Clients–>172.16.250.169–>(tomcatA, tomcatB)

tomcat之-從AT到Cluster

1、后端tomcat環境搭建

注意:centos6只對java1.7的兼容性較好

【安裝java虛擬機以及tomcat】:

 

[root@jev-1 ~]# yum install java-1.7.0-openjdk-devel tomcat-lib tomcat-admin-webapps tomcat-webapps -y
[root@jev-1 ~]# mkdir -pv /var/lib/tomcat/webapps/test/{WEB-INF,lib,classes}
[root@jev-1 ~]# vim /var/lib/tomcat/webapps/test/index.jsp
[root@jev-1 ~]# tomcat start


tomcat之-從AT到Cluster

TomcatB的軟件布置操作同上;

【創建測試頁】:

在TomcatA上某context中(如/test),提供如下頁面

 

         <%@ page language="java" %>
          <html>
            <head><title>TomcatA</title></head>
            <body>
              <h1><font color="red">TomcatA.jev.com</font></h1>
              <table align="centre" border="1">
                <tr>
                  <td>Session ID</td>
                <% session.setAttribute("jev.com","jev.com"); %>
                  <td><%= session.getId() %></td>
                </tr>
                <tr>
                  <td>Created on</td>
                  <td><%= session.getCreationTime() %></td>
                </tr>
              </table>
            </body>
          </html>

【瀏覽器訪問測試】

在瀏覽器打開172.16.250.121:8080/test/index.jsp測試【注意Chrome瀏覽器的本地緩存機制,建議使用其他瀏覽器】

tomcat之-從AT到Cluster

在TomcatB上某context中(如/test),提供如下頁面

 

         <%@ page language="java" %>
          <html>
            <head><title>TomcatB</title></head>
              <body>
              <h1><font color="blue">TomcatB.jev.com</font></h1>
              <table align="centre" border="1">
                <tr>
                  <td>Session ID</td>
                <% session.setAttribute("jev.com","jev.com"); %>
                  <td><%= session.getId() %></td>
                </tr>
                <tr>
                  <td>Created on</td>
                  <td><%= session.getCreationTime() %></td>
                </tr>
              </table>
              </body>
          </html>

tomcat之-從AT到Cluster

2、nginx + tomcat cluser

前端通過nginx負載均衡到后端tomcat集群,并通過IP綁定的方式實現會話粘性;

【安裝nginx】

[root@jev6 ~]#yum install nginx

【nginx負載均衡配置】

[root@jev6 ~]#vim /etc/nginx/nginx.conf

在http上下文加入upstream負載均衡配置

 

   upstream tcsrvs {
        server 172.16.250.121:8080
        server 172.16.250.122:8080
      }

tomcat之-從AT到Cluster

[root@jev6 ~]#vim /etc/nginx/conf.d/default.conf

在localtion中加入proxy_pass http://tcsrvs/;

tomcat之-從AT到Cluster

[root@jev6 ~]#nginx -t

tomcat之-從AT到Cluster

[root@jev6 ~]#nginx -s reload

【瀏覽器訪問測試】

在瀏覽器打開172.16.250.169/test/index.jsp不斷刷新測試,可以看到已經負載均衡,但無法綁定會話;

tomcat之-從AT到Cluster

【基于IP哈希綁定會話】

[root@jev6 ~]#vim /etc/nginx/nginx.conf

在upstream tcsrvs加入ip_hash;

tomcat之-從AT到Cluster

[root@jev6 ~]#service nginx restart

在瀏覽器打開172.16.250.169/test/index.jsp不斷刷新測試,可以看到已經實現會話綁定;

 

tomcat之-從AT到Cluster

[root@jev6 ~]#service nginx stop

3、httpd + tomcat集群基于balancer實現

【安裝httpd】

[root@jev6 ~]#yum install httpd

【確認balancer模塊正常加載】

 

[root@jev6 ~]#httpd -M | grep proxy_balancer_module
proxy_balancer_module (shared)
[root@jev6 ~]#httpd -v
Server version: Apache/2.2.15 (Unix)

(1)、基于http模塊實現會話粘性

【負載均衡配置】

基于http模塊反向代理的負載均衡配置如下

 

     <proxy balancer://tcsrvs>
        BalancerMember http://172.16.250.121:8080
        BalancerMember http://172.16.250.122:8080
        ProxySet lbmethod=byrequests
      </Proxy>
      <VirtualHost *:80>
        ServerName lb.jev.com
        ProxyVia On
        ProxyRequests Off
        ProxyPreserveHost On
#          <Proxy *>
#            Require all granted
#          </Proxy>
        ProxyPass / balancer://tcsrvs/
        ProxyPassReverse / balancer://tcsrvs/
#          <Location />
#            Require all granted
#          </Location>
      </VirtualHost>    
###如果httpd版本為2.4,需將上面的6行注釋行全部掉,啟用授權###
[root@jev6 ~]#vim /etc/httpd/conf.d/tomcat_http.conf

tomcat之-從AT到Cluster

[root@jev6 ~]#service httpd start

通過瀏覽器訪問http://172.16.250.169/test/index.jsp,不斷刷新,測試是否正常調度;

【基于route標簽實現會話粘性】:

TomcatA:在Engine標簽里面(在105行附近)加入jvmRoute="TomcatA"

[root@jev-1 ~]#vim /etc/tomcat/server.xml

tomcat之-從AT到Cluster

[root@jev-1 ~]#service tomcat restart

TomcatB:在Engine標簽里面(在105行附近)加入jvmRoute="TomcatB"

[root@jev-2 ~]#vim /etc/tomcat/server.xml

tomcat之-從AT到Cluster

[root@jev-2 ~]#service tomcat restart

在前端httpd配置加入基于route標簽粘性配置(下圖紅色框內部分):

 

     Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
      <proxy balancer://tcsrvs>
        BalancerMember http://172.18.100.67:8080 route=TomcatA 
        BalancerMember http://172.18.100.68:8080 route=TomcatB 
        ProxySet lbmethod=byrequests
        ProxySet stickysession=ROUTEID
      </Proxy>
[root@jev6 ~]#vim /etc/httpd/conf.d/tomcat_http.conf

tomcat之-從AT到Cluster

重啟httpd

[root@jev6 ~]#service httpd restart

【打開瀏覽器測試】

tomcat之-從AT到Cluster

(2)、基于ajp模塊實現會話粘性:

【負載均衡配置】

基于jap模塊反向代理的負載均衡配置如下:

 

       <proxy balancer://tcsrvs>
          BalancerMember ajp://172.18.100.67:8009
          BalancerMember ajp://172.18.100.68:8009
          ProxySet lbmethod=byrequests
        </Proxy>
        <VirtualHost *:80>
          ServerName lb.jev.com
          ProxyVia On
          ProxyRequests Off
          ProxyPreserveHost On
          <Proxy *>
            Require all granted
          </Proxy>
          ProxyPass / balancer://tcsrvs/
          ProxyPassReverse / balancer://tcsrvs/
          <Location />
            Require all granted
          </Location>
          <Location /balancer-manager>
            SetHandler balancer-manager
            ProxyPass !
            Require all granted
          </Location>
        </VirtualHost>

將上部分試驗的配置文件tomcat_http.conf備份,將http協議改為ajp,端口改為8009,刪除route標簽,暫時注釋掉通過Cookie保存會話的配置:

 

[root@jev6 ~]#cp  /etc/httpd/conf.d/tomcat_http.conf{,.bak}
[root@jev6 ~]#mv  /etc/httpd/conf.d/tomcat_http.conf  /etc/httpd/conf.d/tomcat_ajp.conf

tomcat之-從AT到Cluster

[root@jev6 ~]#vim  /etc/httpd/conf.d/tomcat_ajp.conf

tomcat之-從AT到Cluster

通過瀏覽器訪問http://172.16.250.169/test/index.jsp,不斷刷新,測試是否正常調度;

注意:如果http版本為2.4,需將注釋掉的<Proxy>和<Location>組件啟用;

【基于route標簽實現會話粘性】:

恢復剛剛刪除以及注釋掉的配置,修改后如下圖:

tomcat之-從AT到Cluster

到此httpd + tomcat cluster 基于ajp實現完成。

在瀏覽器打開172.16.250.169/test/index.jsp不斷刷新測試,可以看到已經實現會話綁定;

(3)、啟用管理接口:

httpd自帶有balancer-managerGUI管理接口,可以通過圖形界面對后端主機進行監控;

接口啟用配置如下:

 

       <Location /balancer-manager>
          SetHandler balancer-manager
          ProxyPass !
#         Require all granted
        </Location>        
###如果httpd版本為2.4,需將去掉"Require all granted"前面的注釋(顯式授權)###
[root@jev6 ~]#vim  /etc/httpd/conf.d/balancer-manager.conf

tomcat之-從AT到Cluster

在瀏覽器輸入http://172.16.250.169/balancer-manager打開管理界面

tomcat之-從AT到Cluster

[root@jev-1 ~]#service tomcat stop

暫停tomcatA服務,可以看到家tomcatA狀態從Ok轉為Err:

tomcat之-從AT到Cluster

選中"Worker URL"欄的URL,可以對后端主機進行負載均衡配置及控制;

tomcat之-從AT到Cluster

三、Tomcat 會話復制集群

1、負載均衡配置

前端負載均衡可以參考(二、2)或(二、3)中的負載均衡配置;

2、啟用tomcat會話復制

確保server.xml配置文件Engine的jvmRoute屬性配置正確,將下列配置放置于<engine>或<host>中,注意各節點配置不同(截圖中黃色邊框內部分)。

 

       <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
            channelSendOptions="8">
          <Manager className="org.apache.catalina.ha.session.DeltaManager"
            expireSessionsOnShutdown="false"
            notifyListenersOnReplication="true"/>
 
          <Channel className="org.apache.catalina.tribes.group.GroupChannel">
          <Membership className="org.apache.catalina.tribes.membership.McastService"
              address="228.0.250.4"
              port="45564"
              frequency="500"
              dropTime="3000"/>
          <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
            address="auto"
            port="4000"
            autoBind="100"
            selectorTimeout="5000"
            maxThreads="6"/>
 
          <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
          <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
          </Sender>
          <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
          <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
          </Channel>
 
          <Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
            filter=""/>
          <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
 
          <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
            tempDir="/tmp/war-temp/"
            deployDir="/tmp/war-deploy/"
            watchDir="/tmp/war-listen/"
            watchEnabled="false"/>
 
          <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
          <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
          </Cluster>

【配置tomcatA節點】

[root@jev-1 ~]#vim /etc/tomcat/server.xml

tomcat之-從AT到Cluster

tomcat之-從AT到Cluster

【配置tomcatA節點】

[root@jev-2 ~]#vim /etc/tomcat/server.xml

tomcat之-從AT到Cluster

3、添加<distributable/>元素

拷貝tomcat自帶模板到Webapp的WEB-INF/下面:

[root@jev-1 ~]#cp /etc/tomcat/web.xml /var/lib/tomcat/webapps/test/WEB-INF/web.xml

編輯WEB-INF/web.xml,添加<distributable/>元素;

[root@jev-1 ~]#vim /var/lib/tomcat/webapps/test/WEB-INF/web.xml

tomcat之-從AT到Cluster

tomcatB配置同tomcatA;

[root@jev-1 ~]#scp /var/lib/tomcat/webapps/test/WEB-INF/web.xml 172.16.250.122://var/lib/tomcat/webapps/test/WEB-INF/web.xml

tomcat之-從AT到Cluster

在局域網內任意的主機上抓包(本處我選擇在centos7上),可以看到兩臺主機在互相通告:

~]#tcpdump -i eno16777736 -nn port 45564

tomcat之-從AT到Cluster

【測試】

打開瀏覽器測試,不斷刷新,可以發現已經實現會話粘性:

tomcat之-從AT到Cluster

四、session會話保持之session服務器

【Memcached】是一款分布式的內存對象緩存系統,用于減少數據庫的負載,加快web應用程序的訪問. Memcached簡單并且強大,其簡單的設計加快了部署,易于開發,緩存解決了面臨的大量數據時很多的問題;

【MSM(memcached session manager)】是一款實現Tomcat話保持的管理組件,支持粘性和無粘性的配置, 目前可以在Tomcat6,7,8中使用,并且支持Memcached會話故障轉移;

注:本想在centos6.8上實現session會話保持之session服務器,但由于調試了幾次,還是實現不了會話粘性,故轉移到centos7上做,一次成功,下文調試系統為centos7。centos6.8等日后實現后再補充;

1、集群架構

兩個tomcat節點:172.16.250.131(tomcatA.jev.com),172.16.250.132(tomcatB.jev.com)

兩個memcache節點(tomcat節點兼):172.16.250.131(n1),172.16.250.132(n2)

一個負載均衡節點:172.16.250.169  (centos6.8)

主體架構:Clients–>172.16.250.169(httpd)–>(tomcatA, tomcatB)–> (n1<–> n2)

tomcat之-從AT到Cluster

各軟件版本:

Memcached version "1.4.15", Java(Oracle) version "1.7.0_91",Tomcat version "7.0.54",Httpd version " 2.2.15"

軟件環境布置(以節點1為例,節點2于1系統):

[root@jev71 ~]#yum install memcache java-1.7.0-openjdk-devel tomcat-lib tomcat-admin-webapps tomcat-webapps -y

[root@jev71 ~]#systemctl start memcached

[root@jev71 ~]#systemctl start tomcat

tomcat之-從AT到Cluster

2、配置tomcat

memcached-session-manager

項目地址:https://github.com/magro/memcached-session-manager

下載地址:http://repo1.maven.org/maven2/de/javakaffee/msm/

將memcached-session-manager jar添加到tomcat

下載如下jar文件至各tomcat節點的tomcat安裝目錄下的lib(/usr/share/tomcat/lib)目錄中,其中的${version}要換成你所需要的版本號,tc${6,7,8}要換成與tomcat版本相同的版本號。

    memcached-session-manager-${version}.jar

    memcached-session-manager-tc${6,7,8}-${version}.jar

    spymemcached-${version}.jar

    msm-javolution-serializer-${version}.jar

    javolution-${version}.jar

注意:memcached-session-manager-tc7- $ {version} .jar要求tomcat 7.0.23+

本文以msm-1.8.1為例,各jar版本信息如下:

     memcached-session-manager-1.8.1.jar

     memcached-session-manager-tc7-1.8.1.jar

     spymemcached-2.10.2.jar

     msm-javolution-serializer-1.8.1.jar

      javolution-5.4.3.1.jar

分別在兩個tomcat上的host上定義一個用于測試的context容器(兩節點配置一樣),并在其中創建一個會話管理器,如下所示:

 

          <Context path="/test" docBase="test" reloadable="true">
              <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
                memcachedNodes="n1:172.16.250.131:11211,n2:172.16.250.132:11211"
                failoverNodes="n2"
                requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
                transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"
              />
             </Context>
[root@jev71 ~]#vim /etc/tomcat/server.xml

tomcat之-從AT到Cluster

[root@jev71 ~]#systemctl restart tomcat

TomcatB配置同上;

3、創建測試頁面

【tomcatA】的context提供測試頁面:

 

[root@jev71 ~]#mkdir -pv /var/lib/tomcat/webapps/test/WEB-INF/{classes,lib}
[root@jev71 ~]#vim /usr/local/tomcat/webapps/test/index.jsp

添加如下內容:

 

<%@ page language="java" %>
<html>
  <head><title>TomcatA</title></head>
  <body>
    <h1><font color="red">TomcatA.jev.com</font></h1>
    <table align="centre" border="1">
      <tr>
        <td>Session ID</td>
    <% session.setAttribute("jev.com","jev.com"); %>
        <td><%= session.getId() %></td>
      </tr>
      <tr>
        <td>Created on</td>
        <td><%= session.getCreationTime() %></td>
     </tr>
    </table>
  </body>
</html>

tomcat之-從AT到Cluster

從瀏覽器打開http://172.16.250.131:8080/test/index.jsp效果如下:

tomcat之-從AT到Cluster

【tomcatB】的context提供測試頁面:

 

[root@jev72 ~]#mkdir -pv /var/lib/tomcat/webapps/test/WEB-INF/{classes,lib}
[root@jev72 ~]#vim /usr/local/tomcat/webapps/test/index.jsp

添加如下內容:

 

<%@ page language="java" %>
<html>
  <head><title>TomcatB</title></head>
  <body>
    <h1><font color="blue">TomcatB.jev.com</font></h1>
    <table align="centre" border="1">
      <tr>
        <td>Session ID</td>
    <% session.setAttribute("jev.com","jev.com"); %>
        <td><%= session.getId() %></td>
      </tr>
      <tr>
        <td>Created on</td>
        <td><%= session.getCreationTime() %></td>
     </tr>
    </table>
  </body>
</html>

從瀏覽器打開http://172.16.250.131:8080/test/index.jsp效果如下:

tomcat之-從AT到Cluster

4、配置前端調度器:

注:本章節使用httpd為前端調度器,也可以使用其他調度器;

[root@jev6 ~]#yum install httpd

在172.16.250.169上配置反向代理的負載均衡內容,類似如下所示:

 

<Proxy balancer://tcsrvs>
    BalancerMember  http://172.16.250.121:8080 loadfactor=1
    BalancerMember  http://172.16.250.122:8080 loadfactor=1
    ProxySet  lbmethod=byrequests
</Proxy>
 
ProxyVia Off
ProxyRequests Off
ProxyPass / balancer://tcsrvs/
ProxyPassReverse / balancer://tcsrvs/
<Proxy *>
    Order Allow,Deny
    Allow From all
</Proxy>
 
<Location />
    Order Allow,Deny
    Allow From all
</Location>
[root@jev6 ~]#vim /etc/httpd/conf.d/tomcat_msm.conf

tomcat之-從AT到Cluster

[root@jev6 ~]#service httpd start

5、測試會話保存功能

在瀏覽器中訪問http://172.16.100.6/test,不斷刷新,結果如下所示,其session ID在負載均衡環境中保持不變。

tomcat之-從AT到Cluster

tomcat之-從AT到Cluster

從測試結果可以看出,現在啟用會話共享服務的memcache節點為n1,此時將n1節點的memcache關閉;

[root@jev71 ~]#systemctl stop memcached

不斷刷新,結果如下所示。

tomcat之-從AT到Cluster

tomcat之-從AT到Cluster

此時,其session ID在負載均衡環境中保持不變,只是提供memcache服務的節點轉為n2;

實現了基于memcache的會話保持集群;

 

【本文完】

【返回頁首】

 

 

 

 


 

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

(0)
Jev TseJev Tse
上一篇 2017-02-13
下一篇 2017-02-13

相關推薦

  • 本地yum倉庫配置以及創建yum倉庫

    如何使用光盤當做本地yum倉庫?     1.掛載光盤至某目錄,例如/media/cdrom      [root@CentOS7 ~]# mount /dev/cdrom /media/cdrom/ mount: /dev/sr…

    Linux干貨 2016-08-23
  • 重定向和管道

    1.Linux給程序提供三種I/O設備 標準輸入-0    默認接受來自鍵盤的輸入 標準輸出-1    默認輸出到終端窗口 標準錯誤-2    默認輸出到終端窗口 在dev下有個fd設備,打開的文件都有一個fd:file dexcriptor 文件描述符 I/O重定向:…

    2017-07-20
  • 編譯安裝bind9

    一、下載bind9.9.5源碼包     可以通過www.isc.org站點來獲得源碼包。 二、將源碼包解壓到任意目錄     源碼包通常都是.tar.gz文件,因此我們需要先將其解壓: 三、編譯安裝bind     1、安裝前的準備工作 …

    Linux干貨 2015-05-05
  • awk應用和systemd

    一:練習 1、求每班總成績和平均成績 name class score wang   1    100 zhang  2    90 li     1    80 2、為編譯安裝的httpd服務,實現service unit文件 3、破解centos7 口令 …

    Linux干貨 2016-09-22
  • MooseFS性能圖表[原創]

    對MooseFS有了一定的了解,現在可以壓壓它的性能了,使用的是iozone IO測試工具。測試命令為:./iozone -a -n 512m -g 4g -i 0 -i 1 -f /mnt/mfs/logs/test.tar.gz -Rb ./iozone.xls -C測試說明1、/mnt/mfs/logs/test.tar.gz大小為9.2G,大于服務器…

    Linux干貨 2015-03-27
  • 網絡服務之Nginx

      在之前一篇博客中我們講述了httpd網絡服務器,那么httpd是個非常穩定安全的一個服務器,這次我們介紹一個新的網絡服務器—-nginx。   Nginx 是俄羅斯人編寫的十分輕量級的 HTTP 服務器,Nginx,它的發音為“engine X”,是一個高性能的HTTP和反向代理服務器(我們主要圍繞這兩…

    2017-06-07
欧美性久久久久