經典案例
當前位置 >首頁 > 經典案例 > 容災備份案例

捷信集團部署linux+apache+tomcat負載均衡集群

發布日期: 2015-10-14

傳統的Java Web項目是通過tomcat來(lái)運行和發布的。但(dàn)在實際的企業應用環境中,采用單一(yī)的tomcat來(lái)維持項目的運行是不現(xiàn)實的。tomcat 處理(lǐ)能(néng)力低(dī),效率低(dī),承受并發小(1000左右)。當用戶請求較少時(shí),單一(yī)的tomcat能(néng)夠快(kuài)速響應用戶請求,但(dàn)如(rú)果訪問量一(yī)大,tomcat處理(lǐ)能(néng)力跟不上(shàng),無法及時(shí)響應請求,就(jiù)會造成用戶等待;如(rú)果訪問量過大,超出tomcat的承受能(néng)力,還可能(néng)導緻tomcat超載故障。

    apache 是一(yī)個(gè) web 服務(wù)器(qì)環境程序,可以作(zuò)為(wèi)web 服務(wù)器(qì)使用。Apache對并發請求的處理(lǐ)能(néng)力較tomcat強,對靜态頁面(如(rú)asp,php,cgi,jsp等)的處理(lǐ)上(shàng)比tomcat更為(wèi)迅速,但(dàn)apache不支持動态網頁(需借助tomcat)。

    因此實際應用中可以搭建apache+tomcat負載均衡集群,一(yī)個(gè)apache 作(zuò)為(wèi) Web 服務(wù)器(qì),為(wèi)網站(zhàn)的靜态頁面請求提供服務(wù);并使用tomcat 服務(wù)器(qì)作(zuò)為(wèi)一(yī)個(gè) Servlet/JSP 插件,用于處理(lǐ)網站(zhàn)的動态頁面。當用戶通過浏覽器(qì)發出請求時(shí),客戶請求首先會發送到 apache,如(rú)果請求是靜态文本則由 apache 解析,并把結果返回給客戶端;如(rú)果是動态的請求,如(rú) jsp,apache 會把解析工作(zuò)交給 tomcat,由 tomcat 進行解析(這(zhè)首先要兩者現(xiàn)實整合),tomcat 解析完成後,結果仍是通過 apache 返回給客戶端。這(zhè)樣就(jiù)可以達到分(fēn)工合作(zuò),實現(xiàn)負載均衡,提高系統的性能(néng)! 


  1. 在linux服務(wù)器(qì)上(shàng)安裝CentOS之後,事(shì)先将所有軟件的安裝包上(shàng)傳到linux服務(wù)器(qì)上(shàng),并放(fàng)置在/software目錄下(xià)。

    JDK安裝(1):如(rú)圖所示,因為(wèi)CentOS自帶有open jdk,需要将其删除,再重新(xīn)安裝oracle jdk。但(dàn)如(rú)果直接在centOS的“應用程序--添加/删除軟件--基本系統--java”中,删除java,與之相關(guān)的openoffice等軟件,也(yě)會自動随之删除,因此,在進行原有的jdk删除之前,最好(hǎo)(hǎo)先安裝配置好(hǎo)(hǎo)新(xīn)的jdk及相應的環境。
  2. JDK安裝(2):安裝下(xià)載的oracle jdk。
  3.   (1)在/usr/local目錄下(xià)新(xīn)建Java文件夾,并将安裝包從/software目錄拷貝到/usr/local/Java目錄下(xià)(圖形界面下(xià)直接“複制”-“粘貼”即可)。

           #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的環境變量。

    為(wèi)了(le)系統中所有用戶都能(néng)使用java環境,修改系統中的環境配置文件/etc/profile。在文件最後添加下(xià)列語句:

           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再重新(xīn)登陸,或#source /etc/profile,使文件立即生(shēng)效。


  4. JDK安裝(3):查看與系統自帶open jdk有關(guān)的包。

    在終端中輸入“rpm -qa|grep gcj”,查看gcj的版本号,在這(zhè)裏得到的結果如(rú)圖所示:

    JDK安裝(4):卸載系統自帶open jdk。
  5.   在終端中輸入“yum -y remove javajava-1.4.2-gcj-compat-1.4.2.0-40jpp.115”,然後等待,等待系統卸載完自帶的jdk。最終在終端中顯示“Complete!”,卸載完成。


  6. JDK安裝(5):卸載系統自帶open jdk時(shí)出現(xiàn)問題及解決方案。

    【問題】使用yum安裝或卸載軟件,出現(xiàn)如(rú)圖所示的提示錯誤。

        原因是系統進程已經有一(yī)個(gè)yum的update進程在運行了(le)。可用ps -ef | grep update查看進程。解決辦法是在命令行輸入下(xià)面兩條命令:

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

        #yum-updatesdrestart

    然後重新(xīn)執行yum的删除命令即可。

    JDK安裝(6):查看jdk版本。
  7.   在命令行中輸入java -version命令可查看安裝的jdk版本。如(rú)果顯示出jdk安裝的版本信息則說(shuō)明jdk安裝成功。

      如(rú)果出現(xiàn)如(rú)圖所示的錯誤信息,則是因為(wèi)系統的selinux的設置問題,即開啓了(le)selinux服務(wù)。解決辦法如(rú)下(xià):

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

    (2)把selinux=enforcing改為(wèi)selinux=disabled;

    (3)重啓linux。

    Apache安裝(1):
  8. 如(rú)下(xià)圖所示,使用# rpm -qa|grep httpd,查看與httpd相關(guān)軟件包。發現(xiàn)CentOS自帶有apache,版本為(wèi)2.2.3。因此在安裝我們需要的apache之前,需要卸載CentOS自帶的apache。

    Apache安裝(2):卸載CentOS自帶Apache。
  9.   上(shàng)一(yī)步我們已經查看了(le)與httpd相關(guān)的軟件包,這(zhè)一(yī)步要删除删除httpd。在命令行中使用:# rpm -e httpd。

      如(rú)果出現(xiàn)如(rú)圖所示錯誤,說(shuō)明還有一(yī)個(gè)相關(guān)的軟件包沒有删除,清除之,即:# rpm -e gnome-user-share。

    Apache安裝(3):再次删除httpd:# rpm -e httpd。
  10.    可以使用參數--nodeps的意思就(jiù)是不管各個(gè)程序包間(jiān)的依賴關(guān)系。

    #rpm -e --nodeps httpd //這(zhè)樣不需要删除gnome-user-share了(le)。


  11. Apache安裝(4):重新(xīn)安裝自己下(xià)載的Apache

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

         #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)設置安裝路(lù)徑和需要編譯的模塊。

         # ./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的安裝路(lù)徑

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

         #make && makeinstall 


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

    在/usr/local目錄下(xià)安裝apr:

      #tar -zxvf apr-1.5.0.tar.gz

      #cd apr-1.5.0

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

      #make

      #make install

    安裝完成後再來(lái)configure apache。

    Apache安裝(6):apache安裝的check過程中出錯,如(rú)圖所示:APR-util not found。原因是沒有安裝apr-util。 
  13. 在/usr/local目錄下(xià)安裝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,重新(xīn)configure apache。

    Apache安裝(7)apache安裝的check過程中出錯,如(rú)圖所示,原因是沒有安裝pcre。
  14. 在/usr/local目錄下(xià)安裝pcre:

      # tar -zxvf pcre-8.32.tar.gz

      #cd pcre-8.32

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

      #make

      #make install

    安裝完成後,在apache的./configure 最後增加./configure 時(shí)加上(shàng)參數 --with-apr=/usr/local/apr/ --with-apr-util=/usr/local/apr-util/--with-pcre=/usr/local/pcre,重新(xīn)configure apache。

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

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

      (1)查找ServerName,打開注釋,将ServerName值改為(wèi)對應的IP地址。

      (2)在DirectoryIndex中添加 index.jsp。

      (3)以下(xià)2個(gè)注釋去掉:

           #Include conf/extra/httpd-mpm.conf

           #Include conf/extra/httpd-default.conf

    Apache配置及測試(2):保存httpd.conf文件的修改,啓動apache服務(wù)。
  16.    # /usr/local/apache/bin/apachectl start

       浏覽器(qì)訪問http://127.0.0.1,提示無法連接。說(shuō)明apache沒有成功啓動。查看錯誤日志(/apache/logs/error_log),發現(xiàn)如(rú)圖錯誤信息。原因是httpd.conf裏面的mod_slotmem_shm.so沒有加載。将httpd.conf 文件中的“#LoadModule slotmem_shm_module modules/mod_slotmem_shm.so”前的“#”去掉即可。


  17. Apache配置及測試(3)

    (1)重新(xīn)啓動apache并查看httpd是否運行。

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

         # ps -ef | grep httpd

    (2)浏覽器(qì)測試apache。在浏覽器(qì)中訪問http://127.0.0.1 。頁面出現(xiàn)“It's Works!”字樣即為(wèi)成功。

    Apache的啓動和關(guān)閉:
  18. 在/usr/local/apache/bin下(xià)有可執行程序。

    (1)啓動apache服務(wù):# /usr/local/apache/bin/apachectl start

    (2)關(guān)閉apache服務(wù):#  /usr/local/apache/bin/apachectlstop

    (3)重啓apache服務(wù):#  /usr/local/apache/bin/apachectl restart


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

    (1)将安裝包從/software目錄拷貝到/usr/local目錄下(xià)(圖形界面下(xià)直接“複制”-“粘貼”即可)。

         #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下(xià)有文件catalina.sh 在文件頭部增加下(xià)列信息:

         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,結果如(rú)下(xià)圖所示。

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

    Tomcat安裝、測試及配置(2):浏覽器(qì)測試tomcat是否啓動
  20. 測試tomcat。打開浏覽器(qì)訪問http://127.0.0.1:8080,可以看到tomcat的啓動歡迎頁面,證明tomcat配置正确。

    Tomcat安裝、測試及配置(3):tomcat的啓動和關(guān)閉
  21. 在/usr/local/apache-tomcat-7.0.47/bin下(xià)有可執行程序。

    (1)啓動tomcat服務(wù):

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

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

    (2)關(guān)閉tomcat服務(wù):

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

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


  22. Tomcat安裝、測試及配置(4):java web項目發布

    (1)用eclipse将編譯好(hǎo)(hǎo)的Java Web項目導出成war包。

    (2)将war包放(fàng)置到linux服務(wù)器(qì)上(shàng)的tomcat的webapps目錄下(xià)。如(rú)本次配置放(fàng)在/usr/local/apache-tomcat-7.0.47/webapps下(xià)。

    (3)啓動tomcat後,tomcat會自動将war包解壓并運行Java Web項目。

    (4)打開浏覽器(qì),輸入http://127.0.0.1:8080/SessionTest(項目名),就(jiù)可以訪問項目。


  23. Tomcat安裝、測試及配置(5):設置Tomcat默認訪問項目

      打開/usr/local/apache-tomcat-7.0.47/conf/server.xml,在<Host></Host>标簽之間(jiān)加入下(xià)面的語句:

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

    <Context>标簽的docBase值為(wèi)想要默認訪問的項目名稱,此處為(wèi)SessionTest。文件修改後如(rú)圖所示。然後重新(xīn)啓動tomcat,打開浏覽器(qì),輸入http://127.0.0.1:8080,就(jiù)可以訪問SessionTest項目。

    mod_jk安裝:
  24.   mod_jk的作(zuò)用:連接apache和tomcat集群的中間(jiān)件。

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

    安裝步驟如(rú)下(xià):

    (1)将安裝包從/software目錄拷貝到/usr/local目錄下(xià)(圖形界面下(xià)直接“複制”-“粘貼”即可)。

         #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下(xià)的mod_jk.so文件拷貝到apache安裝目錄下(xià)的modules文件夾下(xià)面。

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


  25. 負載均衡集群配置(1):修改Tomcat/conf 路(lù)徑下(xià)的server.xml。

       修改< Connector>節點值,是關(guān)于使用ajp連接apache和tomcat時(shí)的配置。修改成如(rú)下(xià)形式:

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

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

       注意:如(rú)果一(yī)台機器(qì)上(shàng)同時(shí)運行多個(gè)tomcat,一(yī)定要将每個(gè)tomcat對應的Connector标簽的port端口設為(wèi)不同的值


  26. 負載均衡集群配置(2):修改Tomcat/conf 路(lù)徑下(xià)的server.xml。

       修改<Engine>的配置。将<Engine>的注釋打開,為(wèi)安裝的tomcat命名,即修改jvmRoute的值為(wèi)“tomcat實例名”(不同的tomcat賦予不同值,此處安裝了(le)兩個(gè)tomcat,分(fēn)别命名為(wèi)tomcat1和tomcat2),修改結果參見下(xià)圖:

    負載均衡集群配置(3):修改Tomcat/conf 路(lù)徑下(xià)的server.xml。
  27. 在<Engine>或<Host>元素下(xià)添加以下(xià)内容均可:

    <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>


  28. 負載均衡集群配置(4):修改Tomcat/conf 路(lù)徑下(xià)的server.xml。

    修改<Cluster>節點信息

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

          bind="127.0.0.1"  <!—如(rú)果主機有vpn-虛拟專用網絡,需要要bind下(xià)。如(rú)果沒有的話(huà)可以不用加bind,否則會導緻session無法複制-->

          address="228.0.1.99"  #廣播地址,同一(yī)組tomcat集群一(yī)樣

          port="45564"   #同一(yī)組tomcat集群一(yī)樣

          frequency="500"

          dropTime="3000"/>

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

          address="172.**.***.201"    #修改為(wèi)本機IP地址

          port="5000"   #(tomcat默認可以檢測到4000~4100之間(jiān)的端口)

    <!-- 如(rú)果是在同一(yī)台電腦上(shàng)配置負載,要修改這(zhè)個(gè)端口,否則會因為(wèi)端口沖突不起作(zuò)用的。-->

          selectorTimeout="100"

          maxThreads="6"/>


  29. 負載均衡集群配置(5):修改待發布項目的web.xml

       需要發布的項目放(fàng)在tomcat的webapps文件夾下(xià),在每個(gè)待發布項目的web.xml末尾的</web-app>标簽裏添加<distributable/>,确保session能(néng)夠複制。如(rú)下(xià)圖所示。

    負載均衡集群配置(6):Apache配置——修改 httpd.conf
  30. 在apache的conf下(xià)的httpd.conf 文件尾部追加以下(xià)内容:

       #加載mod_jk Module

       LoadModule jk_module modules/mod_jk.so

       <Ifmodule mod_jk.c>

           #指定workers.properties文件路(lù)徑

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

           #指定jk logs文件存放(fàng)位置

           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>

       #指定哪些(xiē)請求交給tomcat處理(lǐ),哪些(xiē)請求交給apache處理(lǐ)

       #注意:" loadbalancer "為(wèi)在workers.propertise裏指定的負載分(fēn)配控制器(qì)

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


  31. 負載均衡集群配置(7):Apache配置——創建workers.properties

       httpd.conf的最後添加的配置中workers.properties文件是不存在的,需要我們自己在apache/conf路(lù)徑下(xià)創建。workers.properties文件用于對負載均衡的負載器(qì)worker

    (即tomcat)進行具體(tǐ)的登記,此處的2個(gè)tomcat就(jiù)作(zuò)為(wèi)2個(gè)worker被登記在這(zhè)個(gè)文件中。

    workers.properties具體(tǐ)配置如(rú)下(xià):

    #workers.properties

    #

    # in unix, weuse forward slashes:

    ps=/

    # workers 列表

    worker.list=tomcat1,tomcat2, loadbalancer, status

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

    # 第一(yī)個(gè)tomcat

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

    worker.tomcat1.port=8009   #對應tomcat的server.xml中配置的ajp13端口号

    worker.tomcat1.host=127.0.0.1  #tomcat1的主機地址,如(rú)不為(wèi)本機,請填寫IP地址

    worker.tomcat1.type=ajp13  #定向包協議(yì)

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

    #以下(xià)為(wèi)非必要配置,這(zhè)部分(fēn)配置tomcat2的配置同tomcat1

    #worker.tomcat1.cachesize=1000  #配置tomcat的jk連接緩存大小 (非必要)

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

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

    #worker.tomcat1.socket_keepalive=1  #防止防火(huǒ)牆切斷未激活的網絡連接(非必要)

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

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

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

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

    # 第二個(gè)tomcat

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

    worker.tomcat2.port=8009

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

    worker.tomcat2.type=ajp13

    worker.tomcat2.lbfactor=1

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

    # load balancerworker -負載均衡控制器(qì)

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

    worker.loadbalancer.type=lb

    worker.loadbalancer.balanced_workers=tomcat1,tomcat2  #指定分(fēn)擔請求的tomcat

    worker.loadbalancer.sticky_session=1    #設置為(wèi)粘性session

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

    worker.status.type=status

    #

    # end workers.properties


  32. 負載均衡集群配置(8):Apache配置——設置apache對項目的訪問路(lù)徑

        修改/apache/conf/目錄下(xià)的httpd.conf文件中的DocumentRoot和Directory值,将文件訪問路(lù)徑定位到tomcat的webapps文件夾,即待發布項目的存放(fàng)位置,修改結果如(rú)下(xià):

    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>

    如(rú)此對apache的修改完成,加之tomcat設置了(le)默認訪問項目,此時(shí)就(jiù)可以實現(xiàn)直接通過apache所在主機的IP地址來(lái)訪問項目。(實際配置中,是否實現(xiàn)IP地址直接訪問以實際需求為(wèi)準)


  33. 負載均衡集群Session測試(1):創建測試工程SessionTest

    ① 新(xīn)建一(yī)個(gè)Java Web工程SessionTest,在工程下(xià)新(xīn)建index.jsp,文件内容如(rú)下(xià):

    <%@ 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/>。

     将該項目放(fàng)入同一(yī)組的tomcat的webapps下(xià),并且使同一(yī)組的每個(gè)tomcat的項目中index.jsp的<bodybgcolor="red"> 顔色選用不同的顔色。(此處tomcat1為(wèi)red,tomcat2為(wèi)green)


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

       啓動同組tomcat以及apache。浏覽器(qì)訪問apache所在的主機IP地址:http://172.18.145.201/, 顯示如(rú)圖一(yī)所示頁面。從頁面顯示的session Id可以看出請求訪問的是tomcat1。

      如(rú)圖二所示,發現(xiàn)多次刷新(xīn)或submit後,請求訪問的一(yī)直是tomcat1,并且session Id一(yī)直保持不變,session中的數據也(yě)能(néng)夠保持,說(shuō)明session粘性良好(hǎo)(hǎo)。

    負載均衡集群Session測試(3):session複制測試
  35.    啓動同組tomcat以及apache。浏覽器(qì)訪問apache所在的主機IP地址:http://172.18.145.201/,從頁面顯示的session Id可以看出請求訪問的是tomcat1。提交幾組session數據,顯示結果如(rú)圖一(yī)所示。

       此時(shí)停掉tomcat1,再次提交session數據,或刷新(xīn)頁面,結果如(rú)圖二所示,發現(xiàn)請求被轉發給tomcat2,頁面訪問正常。頁面顔色改變,但(dàn)Session Id保持不變,session數據也(yě)全部傳遞給tomcat2,表明session複制良好(hǎo)(hǎo)。

      至此,apache+tomcat的負載均衡集群就(jiù)全部配置完成了(le)。如(rú)果想實現(xiàn)開機時(shí)負載集群服務(wù)自啓動的話(huà),可将如(rú)下(xià)内容添加至/etc/rc.d/rc.local文件末尾:
  36.   /usr/local/apache-tomcat-7.0.47/bin/catalina.shstart

      /usr/local/apache/bin/apachectlstart