在企業(yè)級應用中,采用Tomcat作為應用服務器的系統(tǒng)不在少數(shù),但是Tomcat作為輕量級應用服務器,它的負載能力確實有限,在系統(tǒng)上線后不堪重負,這時候人們都會想起集群來,可惜以往的版本做起集群來,實在不方便得很。
Tomcat5.5在這方面作了很大的改進,我們首先可以實現(xiàn)Tomcat5.5的集群。 一、配置Tomcat 1、直接將下載的apache-tomcat-5.5.17.zip解壓縮到一個驅(qū)動器根目錄下,將目錄名改為Tomcat5517_S1,作為集群的第一個Tomcat服務器。 2、刪除Tomcat5517_S1\ webapps、Tomcat5517_S1\temp下的所有內(nèi)容。 3、在Tomcat5517_S1\conf\Catalina\localhost下建立ROOT.xml文件(注意:一定要用ROOT.xml這個文件名)。添加內(nèi)容: <Context path="" docBase="發(fā)布路徑" displayName="Tomcat_1" debug="0" privileged="true"> <!-- Default set of monitored resources --> <WatchedResource>WEB-INF/web.xml</WatchedResource> </Context> 4、確認你的應用發(fā)布沒有問題的情況下,運行Tomcat5517_S1\bin中的Startup.bat。 5、在瀏覽器中訪問:http://localhost:8080,你的應用應該可以在此Tomcat中成功發(fā)布了。 這里要注意的是: 如果你的系統(tǒng)中使用了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./dtd/web-app_2_3.dtd"> <web-app xmlns="http://java./xml/ns/j2ee" xmlns:xsi="http://www./2001/XMLSchema-instance" xsi:schemaLocation="http://java./xml/ns/j2ee http://java./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,修改幾個關(guān)鍵的地方。 ★ 遠程關(guān)閉Tomcat的服務端口,原來是8005,改為10005。 ★ 兩個對外服務的Connector的端口:Http協(xié)議端口原來是8080,改為10001;AJP1.3協(xié)議端口原來是8009,改為10009。(這里要注意的是在開始的調(diào)試階段我們保持http協(xié)議端口的打開狀態(tài),用于瀏覽器直接與此Tomcat連接,等到調(diào)試成功后,所有的客戶端只允許通過 apache訪問,我們就要將提供Http協(xié)議的Connector關(guān)掉。)其中的redirectPort我都改成了10043。 ★ 將原來的:<Engine name="Catalina" defaultHost="localhost">注釋掉,打開它上面的:<Engine name="Standalone" defaultHost="localhost" jvmRoute="Tomcat1">,并且將jvmRoute的值改為Tomcat1。 ★ 打開Cluster元素的注釋,并且將Receiver元素的監(jiān)聽端口tcpListenPort改為10011。 2、修改Web.xml,加上<distributable/>,如下: <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java./dtd/web-app_2_3.dtd"> <web-app xmlns="http://java./xml/ns/j2ee" xmlns:xsi="http://www./2001/XMLSchema-instance" xsi:schemaLocation="http://java./xml/ns/j2ee http://java./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,修改內(nèi)容同上,要注意的是端口的修改: ★ 遠程關(guān)閉Tomcat的服務端口,原來是8005,改為20005。 ★ 兩個對外服務的Connector的端口:Http協(xié)議端口原來是8080,改為20001;AJP1.3協(xié)議端口原來是8009,改為20009。其中的redirectPort我都改成了20043。 ★ 將原來的:<Engine name="Catalina" defaultHost="localhost">注釋掉,打開它上面的:<Engine name="Standalone" defaultHost="localhost" jvmRoute="Tomcat2">,并且將jvmRoute的值改為Tomcat2。 ★ 打開Cluster元素的注釋,并且將Receiver元素的監(jiān)聽端口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已經(jīng)建立了集群,并保持Session同步了。 三、配置Apache Apache2.2提供了最新的mod_proxy_balancer模塊,這是我們這次實踐過程中完成負載均衡的利器。安裝完Apache之后,直接打開conf\httpd.conf文件: ★ 打開必要的模塊: ★ 在httpd.conf的最后加上: ProxyRequests Off ProxyPass / balancer://myCluster/ 然后啟動apache,開始測試你的應用在集群環(huán)境下的表現(xiàn)吧! |
|
|