在企業級應用中,采用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,開始測試你的應用在集群環境下的表現吧!
posted on 2007-08-03 23:53
有貓相伴的日子 閱讀(1584)
評論(0) 編輯 收藏 所屬分類:
j2ee