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 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

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

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

          APACHE 2.2.9+TOMCAT6.0.18配置負(fù)載均衡

          目標(biāo):

          使用 apache 和 tomcat 配置一個可以應(yīng)用的 web 網(wǎng)站,要達(dá)到以下要求:

          1、  Apache 做為 HttpServer ,后面連接多個 tomcat 應(yīng)用實例,并進(jìn)行負(fù)載均衡。

          2、  為系統(tǒng)設(shè)定 Session 超時時間,包括 Apache 和 tomcat

          3、  為系統(tǒng)屏蔽文件列表,包括 Apache 和 tomcat

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

          一、前期準(zhǔn)備工作:安裝用的程序(前提保證已安裝了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集群服務(wù)器\)下。分別為 tomcat6.0,tomcat6.01,tomcat6.02,tomcat6.03

          這幾個安裝過程就不詳細(xì)說明了。

          三、配置

          1、Apache配置

          1.1、httpd.conf配置

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

          將以下Module的注釋去掉,這里并沒有使用mod_jk.so進(jìn)行apache和tomcat的鏈接,從2.X以后apache自身已集成了mod_jk.so的功能。只需簡單的把下面幾行去掉注釋,就相當(dāng)于以前用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設(shè)置

          接下來進(jìn)行虛擬主機的設(shè)置。APACHE的虛擬主機設(shè)置如下:

          首先要修改 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>

          其中的域名和路徑根據(jù)你自己情況設(shè)置

          然后再設(shè)置TOMCAT虛擬主機

          2 配置 tomcat

          2.1.  配置 server 的關(guān)閉

          我們需要在一臺機器上跑 4 個不同的 tomcat ,需要修改不同的 tomcat 的關(guān)閉口,避免出現(xiàn)端口被占用的情況。其中tomcat6.0用默認(rèn)值,不修改。其他三個修改。在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

          把原來的配置注釋掉,把下面一句去掉注釋。并標(biāo)明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

          原來的默認(rèn)配置。

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

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

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

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

          <proxy balancer://cluster>

               #與tomcat6.0對應(yīng),route與<Engine jvmRoute="jvm1">對應(yīng)。

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

          #與tomcat6.01對應(yīng),route與<Engine jvmRoute="jvm2">對應(yīng)。

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

          #與tomcat6.02對應(yīng),route與<Engine jvmRoute="jvm3">對應(yīng)。

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

          #與tomcat6.03對應(yīng),route與<Engine jvmRoute="jvm4">對應(yīng)。

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

          </proxy>

          中的端口對應(yīng),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>

          這個設(shè)置是主要用以tomcat的集群。

          四、啟動服務(wù),測試tomcat自帶的例子

          1、測試apache和tomcat協(xié)作。

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

          <%

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

          %>

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

          然后再通過分別訪問

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

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

          2、測試均衡器

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

          3、測試Session復(fù)制

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

          測試步驟如下:

          關(guān)閉tomcat1和tomcat2;

          啟動tomcat1

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

          啟動tomcat2;

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

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

          啟動tomcat1;

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

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

          主站蜘蛛池模板: 双柏县| 库尔勒市| 宁陵县| 高雄县| 临夏市| 且末县| 嘉祥县| 浠水县| 都江堰市| 台中县| 石台县| 威信县| 华阴市| 扎赉特旗| 安溪县| 舟山市| 壶关县| 三门县| 长宁区| 建平县| 张北县| 苏尼特左旗| 布拖县| 县级市| 广元市| 金山区| 拉孜县| 长沙县| 西丰县| 通江县| 吴江市| 新龙县| 太谷县| 屯昌县| 山东| 光泽县| 林州市| 梓潼县| 大关县| 巴塘县| 霍城县|