window下tomcat叢集和負載平衡

來源:互聯網
上載者:User
 在企業級應用中,採用Tomcat作為應用服務器的系統不在少數,但是Tomcat作為輕量級應用伺服器,它的負載能力確實有限,在系統上線後不堪重負,這時候人們都會想起叢集來,可惜以往的版本做起叢集來,實在不方便得很。
      Tomcat5.5在這方面作了很大的改進,我們首先可以實現Tomcat5.5的叢集。
 
一、配置Tomcat
1、直接將下載的apache-tomcat-5.5.17.zip解壓縮到一個磁碟機根目錄下,將目錄名改為Tomcat5517_S1,作為叢集的第一個Tomcat伺服器。
2、刪除Tomcat5517_S1/ webapps、Tomcat5517_S1/temp下的所有內容。
3、在Tomcat5517_S1/conf/Catalina/localhost下建立ROOT.xml檔案(注意:一定要用ROOT.xml這個檔案名稱)。新增內容:
<Context path="" docBase="發布路徑" displayName="Tomcat_1"
  debug="0" privileged="true">
 
    <!-- Default set of monitored resources -->
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
 
4、確認你的應用發布沒有問題的情況下,運行Tomcat5517_S1/bin中的Startup.bat。
5、在瀏覽器中訪問: http://localhost:8080,你的應用應該可以在此Tomcat中成功發布了。
這裡要注意的是:
如果你的系統中使用了Taglib尤其是c.tld,請下載最新版本的jakarta-taglibs-standard-1.1.2.zip,從中取得standard.jar、jstl.jar和c.tld,放在相應的目錄下,然後修改web.xml:
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" " http://java.sun.com/dtd/web-app_2_3.dtd">
 
<web-app xmlns=" http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation=" http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    version="2.4">
</web-app>
 
其中所有的
  <taglib>
    <taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
    <taglib-location>/WEB-INF/struts-html.tld</taglib-location>
  </taglib>
 
要放在<jsp-config>元素中,像這樣:
<jsp-config>
   <taglib>
     <taglib-uri>/WEB-INF/struts-template.tld</taglib-uri>
     <taglib-location>/WEB-INF/struts-template.tld</taglib-location>
   </taglib>
   <taglib>
<taglib-uri>/WEB-INF/c.tld</taglib-uri>
<taglib-location>/WEB-INF/c.tld</taglib-location>
   </taglib>
</jsp-config>

二、配置同一台機器中的Tomcat叢集
1、將Tomcat5517_S1/ Catalina檔案夾改名為Tomcat5517_S1/ Standalone,然後開啟Tomcat5517_S1/conf/server.xml,修改幾個關鍵的地方。
★ 遠程關閉Tomcat的服務連接埠,原來是8005,改為10005。
★ 兩個對外服務的Connector的連接埠:Http協議連接埠原來是8080,改為10001;AJP1.3協議連接埠原來是8009,改為10009。(這裡要注意的是在開始的調試階段我們保持http協議連接埠的開啟狀態,用於瀏覽器直接與此Tomcat串連,等到調試成功後,所有的用戶端只允許通過 apache訪問,我們就要將提供Http協議的Connector關掉。)其中的redirectPort我都改成了10043。
★ 將原來的:<Engine name="Catalina" defaultHost="localhost">注釋掉,開啟它上面的:<Engine name="Standalone" defaultHost="localhost" jvmRoute="Tomcat1">,並且將jvmRoute的值改為Tomcat1。
★ 開啟Cluster元素的注釋,並且將Receiver元素的監聽連接埠tcpListenPort改為10011。
2、修改Web.xml,加上<distributable/>,如下:
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
 
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
 version="2.4">
 <distributable/>
</web-app>
 
然後啟動此Tomcat,可以看到有這樣的提示資訊:
2006-6-28 13:33:57 org.apache.catalina.cluster.tcp.SimpleTcpCluster start
資訊: Cluster is about to start
2006-6-28 13:33:57 org.apache.catalina.cluster.tcp.ReplicationTransmitter start
資訊: Start ClusterSender at cluster Standalone:type=Cluster,host=localhost with name Standalone:type=ClusterSender,host=localhost
2006-6-28 13:33:57 org.apache.catalina.cluster.mcast.McastService start
資訊: Sleeping for 2000 milliseconds to establish cluster membership
2006-6-28 13:33:59 org.apache.catalina.cluster.mcast.McastService registerMBean
資訊: membership mbean registered (Standalone:type=ClusterMembership,host=localhost)
2006-6-28 13:33:59 org.apache.catalina.cluster.deploy.FarmWarDeployer start
資訊: Cluster FarmWarDeployer started.
2006-6-28 13:34:30 org.apache.coyote.http11.Http11BaseProtocol start
資訊: Starting Coyote HTTP/1.1 on http-10001
2006-6-28 13:34:30 org.apache.jk.common.ChannelSocket init
資訊: JK: ajp13 listening on /0.0.0.0:10009
2006-6-28 13:34:30 org.apache.jk.server.JkMain start
資訊: Jk running ID=0 time=0/141  config=null
 
這表示Tomcat叢集正常啟動了。
3、複製Tomcat5517_S1檔案夾,並更名為Tomcat5517_S2;然後修改Tomcat5517_S1/conf/server.xml,修改內容同上,要注意的是連接埠的修改:
★ 遠程關閉Tomcat的服務連接埠,原來是8005,改為20005。
★ 兩個對外服務的Connector的連接埠:Http協議連接埠原來是8080,改為20001;AJP1.3協議連接埠原來是8009,改為20009。其中的redirectPort我都改成了20043。
★ 將原來的:<Engine name="Catalina" defaultHost="localhost">注釋掉,開啟它上面的:<Engine name="Standalone" defaultHost="localhost" jvmRoute="Tomcat2">,並且將jvmRoute的值改為Tomcat2。
★ 開啟Cluster元素的注釋,並且將Receiver元素的監聽連接埠tcpListenPort改為20011。
啟動Tomcat2,可以看到有如下提示:
在Tomcat1中:
2006-6-28 14:25:46 org.apache.catalina.cluster.tcp.SimpleTcpCluster memberAdded
資訊: Replication member added:org.apache.catalina.cluster.mcast.McastMember[tcp://192.168.1.192:20011,catalina,192.168.1.192,20011, alive=40]
 
在Tomcat2中:
2006-6-28 14:25:44 org.apache.catalina.cluster.tcp.SimpleTcpCluster memberAdded
資訊: Replication member added:org.apache.catalina.cluster.mcast.McastMember[tcp://192.168.1.192:10011,catalina,192.168.1.192,10011, alive=3105085]
 
這表示兩個Tomcat已經建立了叢集,並保持Session同步了

三、配置Apache

Apache2.2提供了最新的mod_proxy_balancer模組,這是我們這次實踐過程中完成負載平衡的利器。安裝完Apache之後,直接開啟conf/httpd.conf檔案:

★ 開啟必要的模組:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_http_module modules/mod_proxy_http.so

★ 在httpd.conf的最後加上:

ProxyRequests Off

ProxyPass / balancer://myCluster/
<Proxy balancer://myCluster/>
       BalancerMember ajp://localhost:10009 route=Tomcat1
       BalancerMember ajp://localhost:20009 route=Tomcat2
</Proxy>

然後啟動apache,開始測試你的應用在叢集環境下的表現吧!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.