Linux平臺上搭建apache+tomcat負載均衡叢集

yuanyuan_186發表於2016-05-01

http://jingyan.baidu.com/article/ab0b5630b632dbc15afa7dc4.html

傳統的Java Web專案是通過tomcat來執行和釋出的。但在實際的企業應用環境中,採用單一的tomcat來維持專案的執行是不現實的。tomcat 處理能力低,效率低,承受併發小(1000左右)。當使用者請求較少時,單一的tomcat能夠快速響應使用者請求,但如果訪問量一大,tomcat處理能力跟不上,無法及時響應請求,就會造成使用者等待;如果訪問量過大,超出tomcat的承受能力,還可能導致tomcat超載故障。

    apache 是一個 web 伺服器環境程式,可以作為web 伺服器使用。Apache對併發請求的處理能力較tomcat強,對靜態頁面(如asp,php,cgi,jsp等)的處理上比tomcat更為迅速,但apache不支援動態網頁(需藉助tomcat)。

    因此實際應用中可以搭建apache+tomcat負載均衡叢集,一個apache 作為 Web 伺服器,為網站的靜態頁面請求提供服務;並使用tomcat 伺服器作為一個 Servlet/JSP 外掛,用於處理網站的動態頁面。當使用者通過瀏覽器發出請求時,客戶請求首先會傳送到 apache,如果請求是靜態文字則由 apache 解析,並把結果返回給客戶端;如果是動態的請求,如 jsp,apache 會把解析工作交給 tomcat,由 tomcat 進行解析(這首先要兩者現實整合),tomcat 解析完成後,結果仍是通過 apache 返回給客戶端。這樣就可以達到分工合作,實現負載均衡,提高系統的效能! 

工具/原料

  • Linux系統:選用Redhat的開源版本CentOS作業系統(這裡用CentOS 5.5版本)

  • JDK:選用版本為jdk1.7.0_45,安裝包jdk-7u45-linux-i586.tar.gz

  • Apache:選用版本2.4.7,安裝包httpd-2.4.7.tar.gz

  • Tomcat:選用版本7.0.47,安裝包apache-tomcat-7.0.47.tar.gz

  • JK:選用版本1.2.37,安裝包:tomcat-connectors-1.2.37-src.tar.gz

方法/步驟

  1. 1

    找一臺計算機做linux伺服器,在上面安裝CentOS作業系統,可以採用光碟安裝、u盤安裝等方式進行,網路上有很多相對完整的教程,這裡就不做具體闡述了

    Linux平臺上搭建apache+tomcat負載均衡叢集
  2. 2

    在linux伺服器上安裝CentOS之後,事先將所有軟體的安裝包上傳到linux伺服器上,並放置在/software目錄下。

    Linux平臺上搭建apache+tomcat負載均衡叢集
  3. 3

    JDK安裝(1):如圖所示,因為CentOS自帶有open jdk,需要將其刪除,再重新安裝oracle jdk。但如果直接在centOS的“應用程式--新增/刪除軟體--基本系統--java”中,刪除java,與之相關的openoffice等軟體,也會自動隨之刪除,因此,在進行原有的jdk刪除之前,最好先安裝配置好新的jdk及相應的環境。

    Linux平臺上搭建apache+tomcat負載均衡叢集
  4. 4

    JDK安裝(2):安裝下載的oracle jdk。

      (1)在/usr/local目錄下新建Java資料夾,並將安裝包從/software目錄拷貝到/usr/local/Java目錄下(圖形介面下直接“複製”-“貼上”即可)。

           #cp /software/jdk-7u45-linux-i586.tar.gz/usr/local/Java

      (2)定位到資料夾/usr/local/Java。

          #cd /usr/local

      (3)解壓安裝包到當前目錄。

           #tar -zxvf jdk-7u45-linux-i586.tar.gz

      (4)配置java的環境變數。

    為了系統中所有使用者都能使用java環境,修改系統中的環境配置檔案/etc/profile。在檔案最後新增下列語句:

           export JAVA_HOME=/usr/local/Java/jdk1.7.0_45

           export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

           export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin

      (5)修改完成以後,logout再重新登陸,或#source /etc/profile,使檔案立即生效。

  5. 5

    JDK安裝(3):檢視與系統自帶open jdk有關的包。

    在終端中輸入“rpm -qa|grep gcj”,檢視gcj的版本號,在這裡得到的結果如圖所示:

    Linux平臺上搭建apache+tomcat負載均衡叢集
  6. 6

    JDK安裝(4):解除安裝系統自帶open jdk。

      在終端中輸入“yum -y remove javajava-1.4.2-gcj-compat-1.4.2.0-40jpp.115”,然後等待,等待系統解除安裝完自帶的jdk。最終在終端中顯示“Complete!”,解除安裝完成。

  7. 7

    JDK安裝(5):解除安裝系統自帶open jdk時出現問題及解決方案。

    【問題】使用yum安裝或解除安裝軟體,出現如圖所示的提示錯誤。

        原因是系統程式已經有一個yum的update程式在執行了。可用ps -ef | grep update檢視程式。解決辦法是在命令列輸入下面兩條命令:

        #rm -f/var/run/yum.pid /sbin/service 

        #yum-updatesdrestart

    然後重新執行yum的刪除命令即可。

    Linux平臺上搭建apache+tomcat負載均衡叢集
  8. 8

    JDK安裝(6):檢視jdk版本。

      在命令列中輸入java -version命令可檢視安裝的jdk版本。如果顯示出jdk安裝的版本資訊則說明jdk安裝成功。

      如果出現如圖所示的錯誤資訊,則是因為系統的selinux的設定問題,即開啟了selinux服務。解決辦法如下:

    (1)開啟/etc/selinux/config;

    (2)把selinux=enforcing改為selinux=disabled;

    (3)重啟linux。

    Linux平臺上搭建apache+tomcat負載均衡叢集
  9. 9

    Apache安裝(1):

    如下圖所示,使用# rpm -qa|grep httpd,檢視與httpd相關軟體包。發現CentOS自帶有apache,版本為2.2.3。因此在安裝我們需要的apache之前,需要解除安裝CentOS自帶的apache。

    Linux平臺上搭建apache+tomcat負載均衡叢集
  10. 10

    Apache安裝(2):解除安裝CentOS自帶Apache。

      上一步我們已經檢視了與httpd相關的軟體包,這一步要刪除刪除httpd。在命令列中使用:# rpm -e httpd。

      如果出現如圖所示錯誤,說明還有一個相關的軟體包沒有刪除,清除之,即:# rpm -e gnome-user-share。

    Linux平臺上搭建apache+tomcat負載均衡叢集
  11. 11

    Apache安裝(3):再次刪除httpd:# rpm -e httpd。

       可以使用引數--nodeps的意思就是不管各個程式包間的依賴關係。

    #rpm -e --nodeps httpd //這樣不需要刪除gnome-user-share了。

  12. 12

    Apache安裝(4):重新安裝自己下載的Apache

    (1)將安裝包從/software目錄拷貝到/usr/local目錄下。

         #cp /software/httpd-2.4.7.tar.gz /usr/local

    (2)定位到資料夾/usr/local。

         #cd /usr/local

    (3)解壓安裝包到當前目錄。

         #tar -zxvf httpd-2.4.7.tar.gz 

    (4)定位到資料夾/usr/local /httpd-2.4.7。

         #cd httpd-2.4.7

    (5)設定安裝路徑和需要編譯的模組。

         # ./configure--prefix=/usr/local/apache --enable-so -enable-proxy -enable-proxy_http=shared--enable-module=so --enable-mods-shared=all --enable-proxy-ajp=shared  --enable-proxy-balancer -with-mpm=worker

    //備註:prefix定義apache的安裝路徑

    (6)編譯通過,繼續安裝apache。

         #make && makeinstall 

  13. 13

    Apache安裝(5):apache安裝的check過程中出錯,如圖所示:APR not found 。原因是沒有安裝apr。

    在/usr/local目錄下安裝apr:

      #tar -zxvf apr-1.5.0.tar.gz

      #cd apr-1.5.0

      #./configure --prefix=/usr/local/apr

      #make

      #make install

    安裝完成後再來configure apache。

    Linux平臺上搭建apache+tomcat負載均衡叢集
  14. 14

    Apache安裝(6):apache安裝的check過程中出錯,如圖所示:APR-util not found。原因是沒有安裝apr-util。 

    在/usr/local目錄下安裝apr-util:

      #tar -zxvf apr-util-1.5.3.tar.gz

      #cd apr-util-1.5.3

      #./configure--prefix=/usr/local/apr-util --with-apr=/usr/local/apr

      #make

      #make install

    安裝完成後,在apache的./configure 最後增加--with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util,重新configure apache。

    Linux平臺上搭建apache+tomcat負載均衡叢集
  15. 15

    Apache安裝(7):apache安裝的check過程中出錯,如圖所示,原因是沒有安裝pcre。

    在/usr/local目錄下安裝pcre:

      # tar -zxvf pcre-8.32.tar.gz

      #cd pcre-8.32

      #./configure--prefix=/usr/local/pcre

      #make

      #make install

    安裝完成後,在apache的./configure 最後增加./configure 時加上引數 --with-apr=/usr/local/apr/ --with-apr-util=/usr/local/apr-util/--with-pcre=/usr/local/pcre,重新configure apache。

    Linux平臺上搭建apache+tomcat負載均衡叢集
  16. 16

    Apache安裝(8):編譯通過,繼續安裝apache。 #make && makeinstall 。

  17. 17

    Apache配置及測試(1):安裝完畢後,在測試啟動apache之前先修改/apache/conf /httpd.conf。

      (1)查詢ServerName,開啟註釋,將ServerName值改為對應的IP地址。

      (2)在DirectoryIndex中新增 index.jsp。

      (3)以下2個註釋去掉:

           #Include conf/extra/httpd-mpm.conf

           #Include conf/extra/httpd-default.conf

    Linux平臺上搭建apache+tomcat負載均衡叢集
    Linux平臺上搭建apache+tomcat負載均衡叢集
  18. 18

    Apache配置及測試(2):儲存httpd.conf檔案的修改,啟動apache服務。

       # /usr/local/apache/bin/apachectl start

       瀏覽器訪問http://127.0.0.1,提示無法連線。說明apache沒有成功啟動。檢視錯誤日誌(/apache/logs/error_log),發現如圖錯誤資訊。原因是httpd.conf裡面的mod_slotmem_shm.so沒有載入。將httpd.conf 檔案中的“#LoadModule slotmem_shm_module modules/mod_slotmem_shm.so”前的“#”去掉即可。

    Linux平臺上搭建apache+tomcat負載均衡叢集
  19. 19

    Apache配置及測試(3)

    (1)重新啟動apache並檢視httpd是否執行。

         # /usr/local/apache/bin/apachectl start

         # ps -ef | grep httpd

    (2)瀏覽器測試apache。在瀏覽器中訪問http://127.0.0.1 。頁面出現“It's Works!”字樣即為成功。

    Linux平臺上搭建apache+tomcat負載均衡叢集
    Linux平臺上搭建apache+tomcat負載均衡叢集
  20. 20

    Apache的啟動和關閉:

    在/usr/local/apache/bin下有可執行程式。

    (1)啟動apache服務:# /usr/local/apache/bin/apachectl start

    (2)關閉apache服務:#  /usr/local/apache/bin/apachectlstop

    (3)重啟apache服務:#  /usr/local/apache/bin/apachectl restart

  21. 21

    Tomcat安裝、測試及配置(1):安裝tomcat

    (1)將安裝包從/software目錄拷貝到/usr/local目錄下(圖形介面下直接“複製”-“貼上”即可)。

         #cp /software/apache-tomcat-7.0.47.tar.gz/usr/local

    (2)定位到資料夾/usr/local/。

         #cd /usr/local

    (3)解壓安裝包到當前目錄。

         #tar -zxvf apache-tomcat-7.0.47.tar.gz

    (4)修改配置檔案,增加java的環境變數資訊。在/usr/local/apache-tomcat-7.0.47/bin下有檔案catalina.sh 在檔案頭部增加下列資訊:

         exportJAVA_HOME=/usr/local//Java/jdk1.7.0_45

         exportCLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

         exportPATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin

    (5)啟動tomcat,結果如下圖所示。

         #/usr/local/apache-tomcat-7.0.47/bin/startup.sh

    Linux平臺上搭建apache+tomcat負載均衡叢集
  22. 22

    Tomcat安裝、測試及配置(2):瀏覽器測試tomcat是否啟動

    測試tomcat。開啟瀏覽器訪問http://127.0.0.1:8080,可以看到tomcat的啟動歡迎頁面,證明tomcat配置正確。

    Linux平臺上搭建apache+tomcat負載均衡叢集
  23. 23

    Tomcat安裝、測試及配置(3):tomcat的啟動和關閉

    在/usr/local/apache-tomcat-7.0.47/bin下有可執行程式。

    (1)啟動tomcat服務:

         # /usr/local/apache-tomcat-7.0.47/bin/startup.sh

         # /usr/local/apache-tomcat-7.0.47/bin/catalina.sh start

    (2)關閉tomcat服務:

         # /usr/local/apache-tomcat-7.0.47/bin/shutdown.sh

         # /usr/local/apache-tomcat-7.0.47/bin/catalina.sh stop

  24. 24

    Tomcat安裝、測試及配置(4):java web專案釋出

    (1)用eclipse將編譯好的Java Web專案匯出成war包。

    (2)將war包放置到linux伺服器上的tomcat的webapps目錄下。如本次配置放在/usr/local/apache-tomcat-7.0.47/webapps下。

    (3)啟動tomcat後,tomcat會自動將war包解壓並執行Java Web專案。

    (4)開啟瀏覽器,輸入http://127.0.0.1:8080/SessionTest(專案名),就可以訪問專案。

  25. 25

    Tomcat安裝、測試及配置(5):設定Tomcat預設訪問專案

      開啟/usr/local/apache-tomcat-7.0.47/conf/server.xml,在<Host></Host>標籤之間加入下面的語句:

       <Contextpath="" docBase="SessionTest" debug="0"reloadable="false" />

    <Context>標籤的docBase值為想要預設訪問的專案名稱,此處為SessionTest。檔案修改後如圖所示。然後重新啟動tomcat,開啟瀏覽器,輸入http://127.0.0.1:8080,就可以訪問SessionTest專案。

    Linux平臺上搭建apache+tomcat負載均衡叢集
  26. 26

    mod_jk安裝:

      mod_jk的作用:連線apache和tomcat叢集的中介軟體。

      mod_jk的安裝包:tomcat-connectors-1.2.37-src.tar.gz。

    安裝步驟如下:

    (1)將安裝包從/software目錄拷貝到/usr/local目錄下(圖形介面下直接“複製”-“貼上”即可)。

         #cp /software/tomcat-connectors-1.2.37-src.tar.gz /usr/local

    (2)定位到資料夾/usr/local/。

         #cd /usr/local

    (3)解壓安裝包到當前目錄。

         # tar -zxvf tomcat-connectors-1.2.37-src.tar.gz

    (4)編譯安裝mod_jk。

         #cd /tomcat-connectors-1. 2.37-src/native

         # chmod 755buildconf.sh

         # ./buildconf.sh

         # ./configure--with-apxs=/usr/local/apache/bin/apxs

         # make

         # make install

    (5)將/tomcat-connectors-1.2.37/apache-2.0下的mod_jk.so檔案拷貝到apache安裝目錄下的modules資料夾下面。

         # cp ./apache-2.0/mod_jk.so/usr/local/apache/modules/

  27. 27

    負載均衡叢集配置(1):修改Tomcat/conf 路徑下的server.xml。

       修改< Connector>節點值,是關於使用ajp連線apache和tomcat時的配置。修改成如下形式:

     <!-- Definean AJP 1.3 Connector on port 8009 -->

     <Connectorport="8009"protocolhandlerclassname="org.apache.jk.server.jkcoyotehandler"protocol="AJP/1.3" redirectPort="8443" />

       注意:如果一臺機器上同時執行多個tomcat,一定要將每個tomcat對應的Connector標籤的port埠設為不同的值

  28. 28

    負載均衡叢集配置(2):修改Tomcat/conf 路徑下的server.xml。

       修改<Engine>的配置。將<Engine>的註釋開啟,為安裝的tomcat命名,即修改jvmRoute的值為“tomcat例項名”(不同的tomcat賦予不同值,此處安裝了兩個tomcat,分別命名為tomcat1和tomcat2),修改結果參見下圖:

    Linux平臺上搭建apache+tomcat負載均衡叢集
  29. 負載均衡叢集配置(3):修改Tomcat/conf 路徑下的server.xml。

    在<Engine>或<Host>元素下新增以下內容均可:

    <ClusterclassName="org.apache.catalina.ha.tcp.SimpleTcpCluster">

           <ManagerclassName="org.apache.catalina.ha.session.BackupManager"

           expireSessionsOnShutdown="false"

           notifyListenersOnReplication="true"

            mapSendOptions="6"/>

        <!--

         <ManagerclassName="org.apache.catalina.ha.session.DeltaManager"

            expireSessionsOnShutdown="false"

            notifyListenersOnReplication="true"/>

        -->

        <ChannelclassName="org.apache.catalina.tribes.group.GroupChannel">

            <MembershipclassName="org.apache.catalina.tribes.membership.McastService"

                address="224.0.0.1 "

                port="45564"

                frequency="500"

                dropTime="3000"/>

            <ReceiverclassName="org.apache.catalina.tribes.transport.nio.NioReceiver"

                address="auto "

                port="4001"

                autoBind="100"

                selectorTimeout="5000"

                maxThreads="6"/>

            <SenderclassName="org.apache.catalina.tribes.transport.ReplicationTransmitter">

                <TransportclassName="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>

            </Sender>

            <InterceptorclassName="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>

            <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>

        </Channel>

        <ValveclassName="org.apache.catalina.ha.tcp.ReplicationValve"filter=""/>

        <ValveclassName="org.apache.catalina.ha.session.JvmRouteBinderValve"/>

        <DeployerclassName="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"/>

        <ClusterListenerclassName="org.apache.catalina.ha.session.ClusterSessionListener"/>

    </Cluster>

  30. 負載均衡叢集配置(4):修改Tomcat/conf 路徑下的server.xml。

    修改<Cluster>節點資訊

    <MembershipclassName="org.apache.catalina.tribes.membership.McastService"

          bind="127.0.0.1"  <!—如果主機有vpn-虛擬專用網路,需要要bind下。如果沒有的話可以不用加bind,否則會導致session無法複製-->

          address="228.0.1.99"  #廣播地址,同一組tomcat叢集一樣

          port="45564"   #同一組tomcat叢集一樣

          frequency="500"

          dropTime="3000"/>

    <ReceiverclassName="org.apache.catalina.tribes.transport.nio.NioReceiver"

          address="172.**.***.201"    #修改為本機IP地址

          port="5000"   #(tomcat預設可以檢測到4000~4100之間的埠)

    <!-- 如果是在同一臺電腦上配置負載,要修改這個埠,否則會因為埠衝突不起作用的。-->

          selectorTimeout="100"

          maxThreads="6"/>

  31. 負載均衡叢集配置(5):修改待發布專案的web.xml

       需要釋出的專案放在tomcat的webapps資料夾下,在每個待發布專案的web.xml末尾的</web-app>標籤裡新增<distributable/>,確保session能夠複製。如下圖所示。

    Linux平臺上搭建apache+tomcat負載均衡叢集
  32. 負載均衡叢集配置(6):Apache配置——修改 httpd.conf

    在apache的conf下的httpd.conf 檔案尾部追加以下內容:

       #載入mod_jk Module

       LoadModule jk_module modules/mod_jk.so

       <Ifmodule mod_jk.c>

           #指定workers.properties檔案路徑

           JkWorkersFile/usr/local/apache/conf/workers.properties

           #指定jk logs檔案存放位置

           JkLogFile/usr/local/apache/logs/mod_jk.log

           #Set the jk log level [debug/error/info]

           JkLogLevel info

           #Select the log format

           JkLogStampFormat "[%a %b %d%H:%M:%S %Y]"

           #JkOptions indicate to send SSL KEYSIZE,

           JkOptions  +ForwardKeySize +ForwardURICompat-ForwardDirectories

           #JkRequestLogFormat set the requestformat

           JkRequestLogFormat "%w %V %T %q %U%R"

           #JkShmFile to put logs

           JkShmFile/usr/local/apache/logs/mod_jk.shm

       </IfModule>

       #指定哪些請求交給tomcat處理,哪些請求交給apache處理

       #注意:" loadbalancer "為在workers.propertise裡指定的負載分配控制器

       JkMount /*.jsp loadbalancer  #所有的jsp都交給tomcat處理

  33. 負載均衡叢集配置(7):Apache配置——建立workers.properties

       httpd.conf的最後新增的配置中workers.properties檔案是不存在的,需要我們自己在apache/conf路徑下建立。workers.properties檔案用於對負載均衡的負載器worker

    (即tomcat)進行具體的登記,此處的2個tomcat就作為2個worker被登記在這個檔案中。

    workers.properties具體配置如下:

    #workers.properties

    #

    # in unix, weuse forward slashes:

    ps=/

    # workers 列表

    worker.list=tomcat1,tomcat2, loadbalancer, status

    #--------------------------------------------------------------------

    # 第一個tomcat

    #--------------------------------------------------------------------

    worker.tomcat1.port=8009   #對應tomcat的server.xml中配置的ajp13埠號

    worker.tomcat1.host=127.0.0.1  #tomcat1的主機地址,如不為本機,請填寫IP地址

    worker.tomcat1.type=ajp13  #定向包協議

    worker.tomcat1.lbfactor=1  #server的負載分配權重,值越高,分得的請求越多

    #以下為非必要配置,這部分配置tomcat2的配置同tomcat1

    #worker.tomcat1.cachesize=1000  #配置tomcat的jk連線快取大小 (非必要)

    #worker.tomcat1.cachesize_timeout=600  # (非必要)

    #worker.tomcat1.reclycle_timeout=300  # (非必要)

    #worker.tomcat1.socket_keepalive=1  #防止防火牆切斷未啟用的網路連線(非必要)

    #worker.tomcat1.socket_timeout=300   #(非必要)

    #worker.tomcat1.local_worker=1  # (非必要)

    #worker.tomcat1.retries=3  # (非必要) 

    #----------------------------------------------------------------------

    # 第二個tomcat

    #----------------------------------------------------------------------

    worker.tomcat2.port=8009

    worker.tomcat2.host=172.**.***.202  #tomcat2的主機IP地址

    worker.tomcat2.type=ajp13

    worker.tomcat2.lbfactor=1

    #----------------------------------------------------------------------

    # load balancerworker -負載均衡控制器

    # ---------------------------------------------------------------------

    worker.loadbalancer.type=lb

    worker.loadbalancer.balanced_workers=tomcat1,tomcat2  #指定分擔請求的tomcat

    worker.loadbalancer.sticky_session=1    #設定為粘性session

    worker.loadbalancer.sticky_session_force=0  #設定當多次請求未響應,請求將轉發

    worker.status.type=status

    #

    # end workers.properties

  34. 負載均衡叢集配置(8):Apache配置——設定apache對專案的訪問路徑

        修改/apache/conf/目錄下的httpd.conf檔案中的DocumentRoot和Directory值,將檔案訪問路徑定位到tomcat的webapps資料夾,即待發布專案的存放位置,修改結果如下:

    DocumentRoot"/usr/local/apache-tomcat-7.0.47/webapps"

    <Directory"/usr/local/apache-tomcat-7.0.47/webapps">

       Require all granted

        Orderallow,deny

       Allow from all

    </Directory>

    如此對apache的修改完成,加之tomcat設定了預設訪問專案,此時就可以實現直接通過apache所在主機的IP地址來訪問專案。(實際配置中,是否實現IP地址直接訪問以實際需求為準)

  35. 負載均衡叢集Session測試(1):建立測試工程SessionTest

    ① 新建一個Java Web工程SessionTest,在工程下新建index.jsp,檔案內容如下:

    <%@ pageimport="java.util.*" %>

    <html>

    <head>

        <title> Session Test</title>

    </head>

    <body bgcolor="red">

    <%

        out.print("session Id:"+session.getId());

    %>

    <formaction="index.jsp" method="post">

        key<input type="text" name="key"/>

        <br />

        value<input type="text"name="value" />

        <br />

        <input type="submit"value="Submit" />

        <br />

    </form>

    <%

        String key =request.getParameter("key");

        if(key!=null &&key.isEmpty()==false)

        {

            String value =request.getParameter("value");

            session.setAttribute(key, value);

            Enumeration e =session.getAttributeNames();

            while (e.hasMoreElements())

            {

                String sKey = (String)e.nextElement();

                String sValue = (String)session.getAttribute(sKey);

                out.print(sKey+ " ="+sValue+"<br>");

            }

        }

    %>

    </body>

    </html>

    ② 修改SessionTest的web.xml,在web.xml末尾的</web-app>標籤裡新增<distributable/>。

     將該專案放入同一組的tomcat的webapps下,並且使同一組的每個tomcat的專案中index.jsp的<bodybgcolor="red"> 顏色選用不同的顏色。(此處tomcat1為red,tomcat2為green)

  36. 負載均衡叢集Session測試(2):session粘性測試

       啟動同組tomcat以及apache。瀏覽器訪問apache所在的主機IP地址:http://172.18.145.201/, 顯示如圖一所示頁面。從頁面顯示的session Id可以看出請求訪問的是tomcat1。

      如圖二所示,發現多次重新整理或submit後,請求訪問的一直是tomcat1,並且session Id一直保持不變,session中的資料也能夠保持,說明session粘性良好。

    Linux平臺上搭建apache+tomcat負載均衡叢集
    Linux平臺上搭建apache+tomcat負載均衡叢集
  37. 負載均衡叢集Session測試(3):session複製測試

       啟動同組tomcat以及apache。瀏覽器訪問apache所在的主機IP地址:http://172.18.145.201/,從頁面顯示的session Id可以看出請求訪問的是tomcat1。提交幾組session資料,顯示結果如圖一所示。

       此時停掉tomcat1,再次提交session資料,或重新整理頁面,結果如圖二所示,發現請求被轉發給tomcat2,頁面訪問正常。頁面顏色改變,但Session Id保持不變,session資料也全部傳遞給tomcat2,表明session複製良好。

    Linux平臺上搭建apache+tomcat負載均衡叢集
    Linux平臺上搭建apache+tomcat負載均衡叢集
  38.   至此,apache+tomcat的負載均衡叢集就全部配置完成了。如果想實現開機時負載叢集服務自啟動的話,可將如下內容新增至/etc/rc.d/rc.local檔案末尾:

      /usr/local/apache-tomcat-7.0.47/bin/catalina.shstart

      /usr/local/apache/bin/apachectlstart

相關文章