續二:Apache 2.0.48 + Tomcat 5.0.18 + Load Balancing (Solaris 9 x86) Tomcat 5的安裝及與Apache的整合請看我的這裡 http://bbs.chinaunix.net/forum/6/20040214/259794.html http://bbs.chinaunix.net/forum/6/20040214/263220.html I. 先安裝第二個Tomcat,把已裝好的複製一份就可以了 代碼: # cp -Rp /path/to/tomcat1 /path/to/tomcat2 II. 設定第二個Tomcat的啟動指令碼 如果用jsvc,修改CATALINA_HOME變數等於/path/to/tomcat2 代碼: # cd /etc/init.d # cp tomcat tomcat2 # vi tomcat2 # cd ../rc3.d # ln ../init.d/tomcat2 S99tomcat2 # cd ../rc0.d # ln ../init.d/tomcat2 K03tomcat2 如果用內建的startup.sh,則修改bin/catalina.sh,在開始處加上 代碼: CATALINA_HOME=/path/to/tomcat2; export CATALINA_HOME III. 修改兩個Tomcat的設定檔server.xml 代碼: 要修改的內容 Control Port 修改前 <Server port="8005" 修改後tomcat1 <Server port="11005" 修改後tomcat2 <Server port="12005" 要修改的內容 AJP13 Port 修改前 <Connector port="8009" 修改後tomcat1 <Connector port="11009" 修改後tomcat2 <Connector port="12009" 要修改的內容 Http Port 修改前 <Connector port="8080" 修改後tomcat1 <Connector port="11080" 修改後tomcat2 <Connector port="12080" 要修改的內容 Set jvmRoute 修改前 <Engine name="Catalina" defaultHost="localhost" debug=0"> 修改後tomcat1 <Engine jvmRoute="tomcat1" name="Catalina" defaultHost="localhost" debug=0"> 修改後tomcat2 <Engine jvmRoute="tomcat2" name="Catalina" defaultHost="localhost" debug=0"> IV. 配置workers2.proerties 代碼: #---- worker2.properties [logger.apache2] level=DEBUG # Shared memory handling. Needs to be set. [shm] file=/var/apache/logs/shm.file size=1048576 [channel.socket:localhost:11009] tomcatId=localhost:11009 port=11009 host=127.0.0.1 lb_factor=1 group=lb_1 disabled=0 [channel.socket:localhost:12009] tomcatId=localhost:12009 port=12009 host=127.0.0.1 lb_factor=1 group=lb_1 disabled=0 [status:status] [lb:lb] info=Default load balancer debug=1 [lb:lb_1] info=Second load balancer debug=0 # Uri mapping [uri:/jkstatus/*] group=status:status [uri:/*] group=lb:lb_1 #---- end of workers2.properties V. 建立兩個測試用的jsp檔案 /path/to/tomcat1/webapps/ROOT/test.jsp 代碼: <html> body bgcolor="red" <center> <%= request.getSession().getId() %> <h1>Tomcat 1</h1> </body> </html> /path/to/tomcat2/webapps/ROOT/test.jsp 代碼: <html> body bgcolor="blue" <center> <%= request.getSession().getId() %> <h1>Tomcat 2</h1> </body> </html> VI. 測試 啟動tomcat1、tomcat2和apache 代碼: # /etc/init.d/tomcat start # /etc/init.d/tomcat2 start # /etc/init.d/apache start 用瀏覽器測試一下 http://yourserverip/test.jsp 紅色頁面說明訪問的是tomcat1 藍色的是tomcat2 VII. Links http://raibledesigns.com/tomcat/ 實現session的複製 I. 修改server.xml 取消server.xml檔案中對下面這段代碼的注釋,還要修改tcpListenPort的值,注意不能衝突,可以設成4001和4002 代碼: <Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster" managerClassName="org.apache.catalina.cluster.session.DeltaManager" expireSessionsOnShutdown="false" useDirtyFlag="true"> <Membership className="org.apache.catalina.cluster.mcast.McastService" mcastAddr="228.0.0.4" mcastPort="45564" mcastFrequency="500" mcastDropTime="3000"/> <Receiver className="org.apache.catalina.cluster.tcp.ReplicationListener" tcpListenAddress="auto" tcpListenPort="4001" tcpSelectorTimeout="100" tcpThreadCount="6"/> <Sender className="org.apache.catalina.cluster.tcp.ReplicationTransmitter" replicationMode="pooled"/> <Valve className="org.apache.catalina.cluster.tcp.ReplicationValve" filter=".*.gif;.*.js;.*.jpg;.*.htm;.*.html;.*.txt;"/> </Cluster> II. 修改web.xml 修改示範Servlet的Web應用的web.xml檔案,添加<distributable/>元素。 代碼: ...... <display-name>Servlet 2.4 Examples</display-name> <description> Servlet 2.4 Examples. </description> <distributable/> ...... III. 測試 訪問url: http://serverip/servlets-examples/servlet/SessionExample 1. 關閉tomcat1和tomcat2; 2. 啟動tomcat1 3. 在瀏覽器中輸入屬性名稱tomcat1和屬性值tomcat1再提交,返回的頁面顯示session中有剛剛輸入的tomcat1屬性; 4. 啟動tomcat2; 5. 過一會後(等待tomcat2和tomcat1通訊並複製資訊)關閉tomcat1; 6. 在瀏覽器中輸入屬性名稱tomcat2和屬性值tomcat2再提交,返回的頁面顯示session中有剛剛輸入的tomcat2屬性,還有先前輸入的tomcat1屬性; 7. 啟動tomcat1; 8. 過一會後(等待tomcat2和tomcat1通訊並複製資訊)關閉tomcat2; 9. 在瀏覽器中輸入屬性名稱tomcat11和屬性值tomcat11再提交,返回的頁面顯示session中有剛剛輸入的tomcat11屬性,還有先前輸入的tomcat1和tomcat2屬性; IV. 參考文檔 http://jakarta.apache.org/tomcat/tomcat-5.0-doc/cluster-howto.html http://www-900.ibm.com/developerWorks/cn/java/l-jetspeed/ |