Believe it,do it!

          Ideal is the beacon. Without ideal, there is no secure direction; without direction ,there is no life.
          理想是指路明燈。沒有理想,就沒有堅定的方向;沒有方向,就沒有生活。
          CTRL+T eclipse
          posts - 35, comments - 3, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          最新版整合Apache2.2.9和Tomcat6.0.18

          Posted on 2009-10-22 10:11 三羽 閱讀(792) 評論(0)  編輯  收藏 所屬分類: JAVA資料

          APACHE 2.2.9+TOMCAT6.0.18配置負載均衡

          目標:

          使用 apache 和 tomcat 配置一個可以應用的 web 網站,要達到以下要求:

          1、  Apache 做為 HttpServer ,后面連接多個 tomcat 應用實例,并進行負載均衡。

          2、  為系統設定 Session 超時時間,包括 Apache 和 tomcat

          3、  為系統屏蔽文件列表,包括 Apache 和 tomcat

          注:本例程以一臺機器為例子,即同一臺機器上裝一個apache和4個Tomcat。

          一、前期準備工作:安裝用的程序(前提保證已安裝了JDK1.5以上的版本)

          APAHCE 2.2.9下載:apache_2.2.9-win32-x86-no_ssl.msi

          TOMCAT6.0.18下載:apache-tomcat-6.0.18.zip直接解壓。

          二、安裝過程

          APAHCE安裝目錄:D:\Apache。

          四個TOMCAT目錄:自行解壓到(D:\Tomcat集群服務器\)下。分別為 tomcat6.0,tomcat6.01,tomcat6.02,tomcat6.03

          這幾個安裝過程就不詳細說明了。

          三、配置

          1、Apache配置

          1.1、httpd.conf配置

          修改APACHE的配置文件D:\Apache \conf\httpd.conf

          將以下Module的注釋去掉,這里并沒有使用mod_jk.so進行apache和tomcat的鏈接,從2.X以后apache自身已集成了mod_jk.so的功能。只需簡單的把下面幾行去掉注釋,就相當于以前用mod_jk.so比較繁瑣的配置了。這里主要采用了代理的方法,就這么簡單。

          LoadModule proxy_module modules/mod_proxy.so

          LoadModule proxy_connect_module modules/mod_proxy_connect.so

          LoadModule proxy_ftp_module modules/mod_proxy_ftp.so

          LoadModule proxy_http_module modules/mod_proxy_http.so

          LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

          LoadModule proxy_balancer_module modules/mod_proxy_balancer.so

          再找到<IfModule dir_module></IfModule>加上index.jsp修改成

          <IfModule dir_module>

          DirectoryIndex index.html index.jsp

          </IfModule>

          1.1.1、  在最下面加入

          ProxyRequests Off

          <proxy balancer://cluster>

          BalancerMember ajp://127.0.0.1:8009 loadfactor=1 route=jvm1

          BalancerMember ajp:// 127.0.0.1:9009 loadfactor=1 route=jvm2

          BalancerMember ajp:// 127.0.0.1:9001 loadfactor=1 route=jvm3

          BalancerMember ajp:// 127.0.0.1:9003 loadfactor=1 route=jvm4

          </proxy>

          上面的四個BalancerMember成員是我們配置的tomcat集群。后面會說明的。

          1.2、httpd-vhosts.conf設置

          接下來進行虛擬主機的設置。APACHE的虛擬主機設置如下:

          首先要修改 conf/httpd.conf找到(#Include conf/extra/httpd-vhosts.conf)

          把注釋去掉。

          # Virtual hosts

          Include conf/extra/httpd-vhosts.conf

          在文件(extra/httpd-vhosts.conf)最下面加入

          <VirtualHost *:80>

                   ServerAdmin rosi@126.com

                   ServerName localhost

                   ServerAlias localhost

                   ProxyPass / balancer://cluster/ stickysession=jsessionid nofailover=On

                   ProxyPassReverse / balancer://cluster/

          </VirtualHost>

          其中的域名和路徑根據你自己情況設置

          然后再設置TOMCAT虛擬主機

          2 配置 tomcat

          2.1.  配置 server 的關閉

          我們需要在一臺機器上跑 4 個不同的 tomcat ,需要修改不同的 tomcat 的關閉口,避免出現端口被占用的情況。其中tomcat6.0用默認值,不修改。其他三個修改。在tomcat6.01\conf, tomcat6.02\conf下和tomcat6.03\conf下的 server.xml 中找到 server, 將:

          <Server port="8005" shutdown="SHUTDOWN">

          改為

          <Server port="XXXX" shutdown="SHUTDOWN">

          XXXX 在這里表示不同的端口:我的其它三個 tomcat 分別使用 9005,8006 , 9007  

          2.2. 配置 Engine

          把原來的配置注釋掉,把下面一句去掉注釋。并標明jvmRoute="jvm2".

          <Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm2">        

          以下是原來的配置。

          <!-- <Engine name="Catalina" defaultHost="localhost">  -->

          其他(tomcat6.02和tomcat6.03)也要同樣 配置。注意:jvmRoute配置不要一樣。

          <Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm3"> 

          <Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm4"> 

          2.3. 配置 Connector

          原來的默認配置。

          <!-- Define an AJP 1.3 Connector on port 8009 -->

          <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

          這里是apache和tomcat鏈接的關鍵,前臺apache就是通過AJP協議與tomcat進行通信的,以完成負載均衡的作用。也可以用HTTP協議。大家注意它們是如何連接通信的,上面的紅色部分(port="8009")就是連接的接口了。

          把其他三個tomcat的<Connector port="XXX" />port分別改成與上面

          <proxy balancer://cluster>

               #與tomcat6.0對應,route與<Engine jvmRoute="jvm1">對應。

          BalancerMember ajp://127.0.0.1:8009 loadfactor=1 route=jvm1

          #與tomcat6.01對應,route與<Engine jvmRoute="jvm2">對應。

          BalancerMember ajp:// 127.0.0.1:9009 loadfactor=1 route=jvm2

          #與tomcat6.02對應,route與<Engine jvmRoute="jvm3">對應。

          BalancerMember ajp:// 127.0.0.1:9001 loadfactor=1 route=jvm3

          #與tomcat6.03對應,route與<Engine jvmRoute="jvm4">對應。

          BalancerMember ajp:// 127.0.0.1:9003 loadfactor=1 route=jvm4

          </proxy>

          中的端口對應,tomcat6.01 的ajp端口port:9009. tomcat6.02 的ajp端口port:9001。tomcat6.03 的ajp端口port:9003.一定要與上面的一致。同時也要把redirectPort的值改成唯一的,確保四個tomcat的都不一樣。

          2.5.配置Cluster(每個tomcat中都要修改)

          原來的配置。

          <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>

          修改為以下的代碼:<Receiver port=”XX”/>port也要保證唯一性。

          <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"  channelSendOptions="6">

          <Manager className="org.apache.catalina.ha.session.BackupManager"

          expireSessionsOnShutdown="false"

          notifyListenersOnReplication="true"

          mapSendOptions="6"/>

          <!--

          <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.0.4"

          port="45564"

          frequency="500"

          dropTime="3000"/>

          <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"

          address="auto"

          port="5001"

          selectorTimeout="100"

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

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

          </Channel>

          <Valve className="org.apache.catalina.ha.tcp.ReplicationValve"

          filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>

          <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.ClusterSessionListener"/>

          </Cluster>

          這個設置是主要用以tomcat的集群。

          四、啟動服務,測試tomcat自帶的例子

          1、測試apache和tomcat協作。

          先在每個tomcat中的\webapps\ROOT下的index.jsp下面加上以下的測試代碼部分:(X代表不同的tomcat的輸出不同的信息),把index.html刪除,以免影響測試效果。在最后面的加上.即</table></body>之間。

          <%

                System.out.println("tomcat6.0X  deal  with  request");

          %>

          然后再通過http:// 127.0.0.1來訪問一下,就會出現大家熟悉的貓貓。

          然后再通過分別訪問

          http:// 127.0.0.1:8080, http:// 127.0.0.1:9080,http:// 127.0.0.1:8081,http:// 127.0.0.1:9002它們訪問的內容和上面的http:// 127.0.0.1是一樣的。

          這樣就說明apache和TOMCAT整合成功!

          2、測試均衡器

          通過http:// 127.0.0.1多次訪問,要想看到真正的效果,必須用一些壓力測試工具,可用微軟Microsoft Web Application Stress Tool進行簡單壓力測試,不然你靠不停刷新是體現不出來的,你只會在一個tomcat的控制臺有輸出結果。只用用壓力測試工具模擬大量用戶同時訪問,你會發現四個tomcat控制臺均有打出控制信息,說明均衡器工作正常。

          3、測試Session復制

          訪問url: http://localhost/examples/servlet/SessionExample 可以得到一個關于session的例子,我們用它來測試集群的錯誤恢復能力。

          測試步驟如下:

          關閉tomcat1和tomcat2;

          啟動tomcat1

          在瀏覽器中輸入屬性名tomcat1和屬性值tomcat1再提交,返回的頁面顯示session中有剛剛輸入的tomcat1屬性;

          啟動tomcat2;

          過一會后(等待tomcat2和tomcat1通信并復制信息)關閉tomcat1;

          在瀏覽器中輸入屬性名tomcat2和屬性值tomcat2再提交,返回的頁面顯示session中有剛剛輸入的tomcat2屬性,還有先前輸入的tomcat1屬性;

          啟動tomcat1;

          過一會后(等待tomcat2和tomcat1通信并復制信息)關閉tomcat2;

          在瀏覽器中輸入屬性名tomcat11和屬性值tomcat11再提交,返回的頁面顯示session中有剛剛輸入的tomcat11屬性,還有先前輸入的tomcat1和tomcat2屬性;

          主站蜘蛛池模板: 曲阜市| 岫岩| 宁远县| 繁峙县| 永靖县| 凤山县| 朝阳区| 资源县| 徐汇区| 成武县| 遵义市| 太仆寺旗| 高唐县| 年辖:市辖区| 仙桃市| 阳东县| 确山县| 民勤县| 双柏县| 长垣县| 青浦区| 昌江| 桂阳县| 新巴尔虎左旗| 诏安县| 桃园县| 灌阳县| 锦州市| 盐亭县| 洪江市| 珲春市| 西林县| 海伦市| 新乡县| 德江县| 阜平县| 泰安市| 雅安市| 资源县| 弥勒县| 弥渡县|