tomcat進階

2017-11-03_190947.jpg

Tomcat是由Apache軟件基金會下屬的Jakarta項目開發的一個Servlet容器,按照Sun Microsystems提供的技術規範,實現了對Servlet和JavaServer Page(JSP)的支持,並提供了作爲web服務器的一些特有功能,如Tomcat管理和控制平臺、安全域管理和Tomcat閾等。但是不能將Tomcat和Apache HTTP服務器混淆,Apache HTTP服務器時一個用C語言實現的HTTP web服務器,而Tomcat則是由Java編寫。

LAMT環境搭建

2017-11-04_203337.jpg

(1)apache安裝

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

[root@web~]#systemctl enable httpd #設置開機啓動

[root@web~]#systemctl start httpd.service #啓動服務

(2)修改配置文件httpd.conf

基於http連接

查看是否有支持http協議的代理模塊

[root@web/etc/httpd/conf]#httpd -M |grep http

 proxy_http_module (shared)

編輯配置文件

[root@web/etc/httpd/conf.d]#vim host.conf

  1 <VirtualHost *:80>
  2         ServerName www.test.com
  3         ProxyRequests off   關閉正向代理
  4         ProxyVia    on     是否記錄代理
  5         ProxyPreserveHost on    #開啓保留主機名
  6         <Proxy *>
  7                 Require all granted
  8         </Proxy>
  9         ProxyPass / http://192.168.4.61:8080/
 10         ProxyPa***everse / http://192.168.4.61:8080/
 11         <Location />
 12                 Require all granted
 13         </Location>
 14 </VirtualHost>

重啓服務測試

[root@web/etc/httpd/conf.d]#systemctl restart httpd.service

2017-11-04_202353.jpg

基於AJP協議連接

查看是否加載了支持ajp協議的反向代理模塊

[root@web/etc/httpd/conf]#httpd -M |grep ajp

 proxy_ajp_module (shared)

編輯配置文件

[root@web/etc/httpd/conf.d]#vim host.conf

  1 <VirtualHost *:80>
  2         ServerName www.test.com
  3         ProxyRequests off
  4         ProxyVia    on
  5         ProxyPreserveHost on
  6         <Proxy *>
  7                 Require all granted
  8         </Proxy>
  9         ProxyPass / ajp://192.168.4.61:8009/
 10         ProxyPa***everse / ajp://192.168.4.61:8009/
 11         <Location />
 12                 Require all granted
 13         </Location>
 14 </VirtualHost>

重啓服務測試

2017-11-04_202353.jpg

後續的安裝和LNMT的安裝方法一樣,就不再累述。

8、LNMT實現Jsprun論壇

mariadb

[root@mysql~]#yum install -y mariadb-server #安裝mariadb服務

[root@mysql~]#systemctl enable mariadb.service #設置爲開機啓動

[root@mysql~]#systemctl start mariadb #啓動服務

[root@mysql~]#mysql_secure_installation #安全初始化

[root@mysql~]#mysql -uroot -p #創建使用的數據庫

MariaDB [(none)]> CREATE DATABASE jsprun;

MariaDB [(none)]> GRANT ALL ON jsprun.* TO joah@'192.168.4.63' IDENTIFIED By '123456';

tomcat

[root@tomcat~]#yum install -y java-1.8.0-openjdk #安裝java運行環境

[root@tomcat~]#java -version #查看是否安裝成功

[root@tomcat~]#yum install -y tomcat tomcat-admin-webapp tomcat-docs-webapp tomcat-lib tomcat-webapps#安裝所需要的包

[root@tomcat~]#unzip JspRun\!_6.0.0_Source_UTF8.zip #解壓此包

[root@tomcat~]#cp JspRun\!_6.0.0_Source_UTF8/source/WebRoot/ /usr/share/tomcat/webapps/jsprun -a#將此目錄下的文件複製到指定目錄下

[root@tomcat/usr/share/tomcat/webapps/jsprun]#vim config.properties#修改數據庫信息

2017-11-06_200852.jpg

[root@tomcat/etc/tomcat]#vim server.xml #修改server.xml文件

2017-11-06_201437.jpg

[root@tomcat/etc/tomcat]#vim tomcat-users.xml #開啓管理功能

2017-11-06_201656.jpg

[root@tomcat/etc/tomcat]#systemctl enable tomcat.service#設置爲開機啓動

[root@tomcat/etc/tomcat]#systemctl start tomcat.service#啓動tomcat服務

nginx

安裝並啓動服務

[root@nginx~]#yum install -y nginx

[root@nginx~]#systemctl enable nginx

[root@nginx~]#systemctl start nginx

修改配置文件

[root@nginx/etc/nginx/conf.d]#vim nginx-tomcat.conf

  1 server {
  2         listen 80;
  3         server_name www.test.com;
  4         root /usr/share/tomcat/webapps/jsprun;
  5         location / {
  6                 index index.jsp;
  7                 proxy_pass http://192.168.4.63:8080;
  8         }
  9         location ~* \.(jsp|do)$ {
 10                 proxy_pass http://192.168.4.63:8080;
 11         }
 12 }

[root@nginx/etc/nginx/conf.d]#nginx -t #語法檢測

重啓服務測試

2017-11-06_203818.jpg

點擊下一步等 會出現圖中紅框的內容表示不可寫

2017-11-06_204116.jpg

修改配置文件並使其文件有寫權限和執行權限

[root@tomcat/usr/share/tomcat/webapps/jsprun]#chmod 777 config.properties templates/ attachments/ customavatars/ forumdata/ -R

2017-11-06_204401.jpg

圖中顯示數據庫的內容我們已經在config.properties配置文件中修改了,所以這裏不需要修改了,如果安裝之前沒有修改此內容要正確填寫即可,點擊下一步安裝完成

我們去數據庫查看生成的表

2017-11-06_204726.jpg

如何實現動靜分離呢?

[root@nginx/etc/nginx/conf.d]#vim nginx-tomcat.conf

  1 server {
  2         listen 80;
  3         server_name www.test.com;
  4         root /usr/share/tomcat/webapps/jsprun;
  5         location ~* \.(gif|png|jpeg|bmp|jpg|html|htm)$ {
  6                 proxy_pass http://192.168.4.65:80;
  7         }
  8         location ~* \.(jsp|do)$ {
  9                 proxy_pass http://192.168.4.63:8080;
 10         }
 11 }

[root@nginx/etc/nginx/conf.d]#systemctl restart nginx.service

將jsprun中image拷貝到apache中/var/www/html目錄下

[root@tomcat/usr/share/tomcat/webapps/jsprun]#scp -pr images/* 192.168.4.65:/var/www/html

測試

這裏的動靜分離其實是將圖片和html等結尾的文件專門存放在apache服務器上,而不是實現真正的分離。

五、會話保持

保證同一個用戶相關的訪問請求被分配到同一臺服務器上。

1、會話保持的類型

(1)session sticky

與調度器有關

不同調度器實現方式

nginx:ip_hash
haproxy:source
lvs:sh

(2)session cluster:delta session manager

2017-11-06_221632.jpg

如上圖所示,就是session cluster工作原理:基於IP組播來完成session複製

Tomcat會話複製分類:
全局會話複製:利用Delta Manager複製會話中的變更信息到集羣中的所有其他節點
非全局複製:使用backup Manager進行復制,它會把session複製給一個指定的備份節點

此中session保持一般不超過6個節點,如果小型可以使用。

(3)session server:redis(store),memcached(cache)

2017-11-06_222444.jpg

如圖所示爲此中會話保持的工作原理,基於共享會話實現

上述兩種與server端有關

2、Tomcat Cluster(Session)

(1)httpd+tomcat cluster

前提:

httpd:mod_proxy,mod_proxy_http,mod_proxy_balancer

tomcat cluster :http connector

實戰

同步時間

[root@tomcatA~]#ntpdate 172.18.0.1

[root@tomcatA~]#vim /etc/chrony.conf

2017-11-07_070410.jpg

修改hosts文件

[root@tomcatA~]#vim /etc/hosts

  3 192.168.4.62 tomcatA
  4 192.168.4.63 tomcatB

基於密鑰連接

[root@tomcatA~]#ssh-keygen

Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:z+CBC0/eQP/sW9O+TqUXn6DCxR1j6Wt/XAyvuHMMW9E root@tomcatA
The key's randomart image is:
+---[RSA 2048]----+
|                 |
|              .  |
|      .      = . |
|     . o  . + = E|
|    . + S  o + *.|
|     = =.B. o.+oB|
|      + oo=.oO+++|
|         ...=+=.o|
|          o..=+o.|
+----[SHA256]-----+

[root@tomcatA~]#ssh-copy-id -i /root/.ssh/id_rsa.pub tomcatB

tomcatB:

[root@tomcatB~]#ssh-keygen

[root@tomcatB~]#ssh-copy-id -i /root/.ssh/id_rsa.pub tomcatA

tomcatB中的其他配置都和tomcatA配置相同這裏就不累述

安裝jdk環境

[root@tomcatB~]#yum install -y java-1.8.0-openjdk

tomcat安裝及配置

[root@tomcatA~]#yum install -y tomcat-docs-webapp tomcat-lib tomcat-webapps tomcat

[root@tomcatA~]#systemctl enable tomcat

[root@tomcatA~]#systemctl start tomcat

配置一個示例程序

[root@tomcatA/usr/share/tomcat/webapps]#mkdir test/{WEB-INF,classes,lib} -pv

[root@tomcatA/usr/share/tomcat/webapps/test]#vi 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>

[root@tomcatB/usr/share/tomcat/webapps]#mkdir test/{WEB-INF,classes,lib} -pv

[root@tomcatB/usr/share/tomcat/webapps/test]#vi 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>

[root@tomcatA/usr/share/tomcat/webapps]#vim /etc/tomcat/server.xml#在host中添加如下內容

2017-11-07_073155.jpg

[root@tomcatA/usr/share/tomcat/webapps]#systemctl restart tomcat.service#重啓測試

2017-11-07_073454.jpg

2017-11-07_073439.jpg

至此tomcatA和tomcatB配置完成

http安裝及配置

查看是否已經加載所需要的模塊

[root@httpd/etc/httpd/conf.d]#httpd -M |grep proxy

安裝及配置成開啓啓動並啓動服務

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

[root@httpd~]#systemctl enable httpd.service

[root@httpd~]#systemctl start httpd.service

修改配置文件並實現http調度功能

[root@httpd/etc/httpd/conf]#vim httpd.conf

354 Include conf.d/tomcat-host.conf

[root@httpd/etc/httpd/conf.d]#vim tomcat-host.conf

<proxy balancer://tcsrvs>
BalancerMember http://192.168.4.62:8080
BalancerMember http://192.168.4.63:8080
ProxySet lbmethod=byrequests
</Proxy>

<VirtualHost *:80>
    ServerName www.test.com
    ProxyVia on
    ProxyRequests off
    ProxyPreserveHost on
    <Proxy *>
        Require all granted
    </Proxy>
    ProxyPass / balancer://tcsrvs/
    ProxyPa***everse / balancer://tcsrvs/
    <Location />
        Require all granted
    </Location>
</VirtualHost>

2017-11-07_083456.jpg

2017-11-07_083511.jpg

選項說明:

ProxyPreserveHost {on|off}:如果啓用此功能,代理會將用戶請求報文中的Host行發送給後端服務器,而不再使用PorxyPress指定的服務器地址。如果在反向代理中支持虛擬主機,則需開啓此項。
ProxyVia:{on|off|full|block}:用於控制在http首部是否使用Via,主要用於在多級代理中控制代理請求的流向。

    off:不開啓此功能
    on:表示每個請求和響應報文均添加Via
    full:表示每個Via都會添加當前apache服務器的版本信息
    block:表示每個代理請求報文中的Via都會被移除

ProxyRequests {on|off}:是否開啓apache正向代理的功能;啓用此項時爲了代理http協議需啓用mod_proxy_http模塊
ProxyPass [path] !|URL [key=value ...]:將後端服務器某URL與當前服務器的某虛擬路徑關聯起來作爲提供服務的路徑。

    path:當前服務器上的某虛擬路徑
    URL:後端服務器上某URL路徑
注意:如果path以“/”結尾,則對應的URL也必須"/"結尾。

    key類型
        min:連接池的最小容量
        max:連接池最大容量
        loadfactor:用於負載均衡集羣配置中,定義對應後端服務器的權重
        retry:當apache將請求發送至後端服務器得到錯誤響應時等待多長時間以後重試

**lbmethod類型**

    byrequests:基於權重將統計請求個數進行調度
    bytraffic:基於權重的流量計數調度
    bybusyness:通過考量每個後端服務器的當前負載進行調度

maxattempts:放棄請求之前實現故障轉義的次數,默認爲1,其最大值不應該大於總的節點數
nofailover {on|off}

    on:表示後端服務器故障時,用戶的session將損壞

stickysession:調度器的sticky

ProxyPa***everse:用於讓apache調整HTTP重定向響應報文中的Location、Content-Location及URI標籤所對應的URL,在反向代理環境中必須使用此指令避免重定向報文繞過proxy服務器。


BalancerMember [balancerurl] url [key=value [key=value...]]

    status:
        D:設置不可用disabled
        S:設置爲stopped
        I:忽略錯誤,請求還會往此主機上調
        H:如果別的主機不可用時啓用相當於backup
        E:設置爲error狀態
        N:僅僅接受seesion sticky請求

實現會話粘性

[root@httpd/etc/httpd/conf.d]#vim tomcat-host.conf

  1 Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e;path=/" env=BALANCER_ROUTE_CHANGED
  2 <proxy balancer://tcsrvs>
  3         BalancerMember http://192.168.4.62:8080 route=tomcatA loadfactor=1
  4         BalancerMember http://192.168.4.63:8080 route=tomcatB loadfactor=2
  5         ProxySet lbmethod=byrequests
  6         ProxySet stickysession=ROUTEID
  7 </Proxy>
  8 
  9 <VirtualHost *:80>
 10         ServerName www.test.com
 11         ProxyVia on
 12         ProxyRequests off
 13         ProxyPreserveHost on
 14         <Proxy *>
 15                 Require all granted
 16         </Proxy>
 17         ProxyPass / balancer://tcsrvs/
 18         ProxyPa***everse / balancer://tcsrvs/
 19         <Location />
 20                 Require all granted
 21         </Location>
 22 </VirtualHost>

2017-11-07_091219.jpg

至此我們就實現的session sticky

實現管理功能

24 <Location /balancer-manager> 25 SetHandler balancer-manager 26 ProxyPass ! 27 Require all granted 28

2017-11-07_091721.jpg

這裏爲了測試方便我們設置成了所有用戶都可以訪問,在實際生產中需要指定特定IP訪問。

顯示狀態信息

[root@httpd/etc/httpd/conf.d]#vim tomcat-host.conf

 29 <Location /status>
 30         ProxyPass !
 31         SetHandler server-status
 32         Require all granted
 33 </Location>

重啓服務器測試

2017-11-07_092704.jpg

(2)httpd+tomcat cluster

前提:

httpd:mod_proxy,mod_proxy_ajp,mod_proxy_balancer

tomcat cluster:ajp connecotr

實戰

前面的步驟都和上述配置相同

編輯tomcat-host.conf配置文件

[root@httpd/etc/httpd/conf.d]#vim tomcat-host.conf

  1 Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e;path=/" env=BALANCER_ROUTE_CHANGED
  2 <proxy balancer://tcsrvs>
  3         BalancerMember ajp://192.168.4.62:8009 route=tomcatA loadfactor=1
  4         BalancerMember ajp://192.168.4.63:8009 route=tomcatB loadfactor=2
  5         ProxySet lbmethod=byrequests
  6         ProxySet stickysession=ROUTEID
  7 </Proxy>
  8 
  9 <VirtualHost *:80>
 10         ServerName www.test.com
 11         ProxyVia on
 12         ProxyRequests off
 13         ProxyPreserveHost on
 14         <Proxy *>
 15                 Require all granted
 16         </Proxy>
 17         ProxyPass / balancer://tcsrvs/
 18         ProxyPa***everse / balancer://tcsrvs/
 19         <Location />
 20                 Require all granted
 21         </Location>
 22 </VirtualHost>
 23 
 24 <Location /bm>
 25         SetHandler balancer-manager
 26         ProxyPass !
 27         Require all granted
 28 </Location>
 29 <Location /status>
 30         ProxyPass !
 31         SetHandler server-status
 32         Require all granted
 33 </Location>

(3)httpd+tomcat cluster

前提:

httpd:mod_jk

tomcat cluster:ajp connector

此種方法現在不常用就不介紹了...

(4)nginx+tomcat cluster

實戰

nginx安裝並設置爲開機啓動

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

[root@httpd~]#systemctl enable nginx

[root@httpd~]#systemctl start nginx

修改配置文件實現調度功能

[root@httpd/etc/nginx/conf.d]#vim tomcat-nginx.conf

  1 upstream tomsrvs {
  2         server 192.168.4.62:8080 ;
  3         server 192.168.4.63:8080 ;
  4 }
  5 
  6 server {
  7         listen 80;
  8         server_name www.test.com;
  9         location /{
 10                 proxy_pass http://tomsrvs;
 11         }
 12 }

基於ip_hash實現會話粘性

[root@httpd/etc/nginx/conf.d]#vim tomcat-nginx.conf

  1 upstream tomsrvs {
  2         server 192.168.4.62:8080 ;
  3         server 192.168.4.63:8080 ;
  4         ip_hash;
  5 }
  6 
  7 server {
  8         listen 80;
  9         server_name www.test.com;
 10         location /{
 11                 proxy_pass http://tomsrvs;
 12         }
 13 }

2017-11-07_110756.jpg

基於hash key 實現

基於指定的key的hash表來實現對請求的調度

  1 upstream tomsrvs {
  2         server 192.168.4.62:8080 ;
  3         server 192.168.4.63:8080 ;
  4         hash $remote_addr consistent;
  5 }
  6 
  7 
  8 
  9 server {
 10         listen 80;
 11         server_name www.test.com cookie;
 12         location /{
 13                 proxy_pass http://tomsrvs;
 14         }
 15 }

3、tomcat session replication cluster

在tomcat服務器上進行配置

[root@tomcatB/etc/tomcat]#vi server.xml

<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcatA">     #添加jvmRoute

下面的配置可以放在Host、Engine、Context中其作用效果不同

    <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.100.100.4"
                    port="45564"
                    frequency="500"
                    dropTime="3000"/>
        <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
                  address="auto"    #這裏設定爲tomcat真實IP
                  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>

[root@tomcatA/etc/tomcat]#cp /etc/tomcat/web.xml /usr/share/tomcat/webapps/test/WEB-INF/

[root@tomcatA/etc/tomcat]#vim /usr/share/tomcat/webapps/test/WEB-INF/web.xml

  23   <distributable/> #添加此內容

2017-11-07_142906.jpg

重啓服務測試

tomcatcab.gif

tomcatA和tomcatB的配置相似就不累述。

如果修改/etc/tomcat/web.xml文件時全局配置。

注意的問題:

(1)官方文檔上面的配置文件中:

<ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>

上述少了“/”結尾,記得加上

(2)綁定地址爲auto時,會自動解析本地主機名,並解析得出的IP地址作爲使用的地址;建議指定IP地址。

4、session server

tomcatA和tomcatB配置相似,這裏以tomcatA爲例

(1)安裝tomcat和memcache並進行配置

[root@tomcatA/etc/tomcat]#yum install -y memcached

[root@tomcatA/etc/tomcat]#systemctl enable memcached

[root@tomcatA/etc/tomcat]#systemctl start memcached

(2)配置tomcat

下載所需要的jar文件

https://github.com/magro/memcached-session-manager/wiki/SetupAndConfiguration

http://owatlfstl.bkt.clouddn.com/2017-11-07_171315.jpg

[root@tomcatA~]#cp *.jar /usr/share/tomcat/lib/

[root@tomcatA/etc/tomcat]#vim server.xml #編輯配置文件

131 <Context>
132   <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
133     memcachedNodes="n1:192.168.4.62:11211,n2:192.168.4.63:11211"
134     failoverNodes="n1"
135     requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
136     transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
137     />
138 </Context>

2017-11-07_171710.jpg

[root@tomcatA/etc/tomcat]#scp server.xml tomcatB:/etc/tomcat/server.xml

[root@tomcatB/usr/share/tomcat/webapps/test]#vim index.jsp編輯index.jsp文件

  1 <%@ page language="java" %>
  2 <html>
  3         <head><title>TomcatB</title></head>
  4                 <body>
  5                 <h1><font color="blue">TomcatB.magedu.com</font></h1>
  6                 <table align="centre" border="1">
  7                         <tr>
  8                                 <td>Session ID</td>
  9                         <% session.setAttribute("magedu.com","magedu.com"); %>
 10                                 <td><%= session.getId() %></td>
 11                         </tr>
 12                         <tr>
 13                                 <td>Created on</td>
 14                                 <td><%= session.getCreationTime() %></td>
 15                         </tr>
 16                 </table>
 17                 </body>
 18 </html>

tomcatB同理

[root@tomcatA~]#systemctl restart tomcat

配置http服務器

[root@httpd/etc/httpd/conf.d]#vim tomcat-host.conf

  1 <proxy balancer://tcsrvs>
  2         BalancerMember ajp://192.168.4.62:8009  loadfactor=1
  3         BalancerMember ajp://192.168.4.63:8009  loadfactor=2
  4         ProxySet lbmethod=byrequests
  5 </Proxy>
  6 
  7 <VirtualHost *:80>
  8         ServerName www.test.com
  9         ProxyVia on
 10         ProxyRequests off
 11         ProxyPreserveHost on
 12         <Proxy *>
 13                 Require all granted
 14         </Proxy>
 15         ProxyPass / balancer://tcsrvs/
 16         ProxyPa***everse / balancer://tcsrvs/
 17         <Location />
 18                 Require all granted
 19         </Location>
 20 </VirtualHost>
 21 
 22 <Location /bm>
 23         SetHandler balancer-manager
 24         ProxyPass !
 25         Require all granted
 26 </Location>
 27 <Location /status>
 28         ProxyPass !
 29         SetHandler server-status
 30         Require all granted
 31 </Location>

重啓http服務

[root@httpd/etc/httpd/conf.d]#systemctl restart httpd

測試

tomcatabc.gif

查看是否已有緩存到本地

[root@tomcatA~]#memcached-tool 127.0.0.1:11211 dump

2017-11-07_183109.jpg

接下來停止tomcatA服務測試

tomcatabcd.gif

重啓啓動tomcatA 測試

tomcatabcde.gif

至此已經實現了session server

序列化工具lavolution實現

memcached-session-manager-tc7-2.1.1.jar

memcached-session-manager-2.1.1.jar

spymemcached-2.12.3.jar

msm-javolution-serializer-2.1.1.jar

javolution-5.4.3.1.jar

[root@memcache~]#scp /etc/tomcat/server.xml tomcatB:/etc/tomcat/server.xml

[root@memcache~]#systemctl restarst tomcat

上述創建站點及測試也相同就不累述

測試

tomcatabcded.gif

[root@memcache/usr/share/tomcat/lib]#memcached-tool 127.0.0.1:11211 dump

2017-11-07_211825.jpg

在測試過程中,存在版本不兼容的情況,更換版本即可。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章