摘要
最新版本的Tomcat(5.5.9)采用Java管理擴展(JMX)管理beans(managed beans)技術實現了對servlet容器的管理,其中包括監測所有的集群(cluster)元素和session復制情況。
本文探討了Tomcat對集群和session復制的支持,作者Srini Penchikala介紹了所有能用MBeans API監測的Tomcat集群組件。他還通過一個運行在集群上的Web應用示例展示了如何監測集群的細節和session復制,以及用JMX控制臺顯示服務器的統計數據。(原文2,300詞,2005年8月1日發表)
J2SE5.0在監測和管理方面的支持很全面,擁有對Java平臺及運行于其上的應用進行遠程監測能力。J2SE 5.0中包含了Java管理擴展(JMX)遠程監測技術,這是對JVM監控能力的一個新的補充。Java規范第160號需求是JMX遠程監測規范,它是關于遠程訪問機制的,為基于JMX的代理制定了一套遠程客戶端API。
Tomcat 5.5在設計上借助了J2SE 5.0內建的JMX技術,5.5版(由Tomcat 5.0.27發展而來)實現了最新的Servlet (2.4) 規范和JavaServer Pages (2.0)規范,并對Tomcat服務器架構在很大程度上做了重新設計和組合。它運行更加穩定,與Tomcat 4.x相比,性能、伸縮性、可靠性、JMX監測、集成的session集群和應用部署等方面都有了提高。
有了最新版的Tomcat和J2SE 5.0的JMX技術,我們就可以通過JMX來使用servlet容器的屬性和方法,同時減少與JMX相關的復雜編碼。我在本文中將介紹如何在啟動Tomcat servlet容器時啟用遠程JMX監測,以及一個運行在有session復制功能的Tomcat集群上的Web應用示例。最后,我們用JMX客戶端查看集群元素和HTTP session的細節。不過在我們深入探討遠程JMX監測之前,還是先看一下構成Tomcat集群的組件類。
集群元素
一個Tomcat集群由六個主要的組件構成:cluster(集群),membership(成員),sender(發送者),receiver(接收者),replication valve(復制閥)和deployer(部署者)。
表1說明了Tomcat中的每個組件是如何完成集群和session復制工作的。
表1 Tomcat集群元素
有關集群元素的詳細說明參見Tomcat 5.5的集群文檔。
Tomcat 5.5在集群、session復制、服務器監測和管理方面相對以前的版本(Tomcat 4.1 和 5.0)做了一些改進。在Tomcat 4中幾個服務器組件(如host、engine和service)可用MBeans來監測,而在Tomcat 5.5中Yoav Shapira、Filip Hanik和其他的Tomcat開發者為監測集群元素編寫了JMX實現。
既然我們已經了解了每個Tomcat集群元素的功能,接下來讓我們看看各種連接Tomcat服務器集群和監測集群情況的JMX客戶端工具。
JMX客戶端
JMX客戶端是一個用來連接JMX代理(運行在本地或遠程)的圖形化用戶界面(客戶機/服務器或瘦客戶端)。理想的JMX客戶端具備以下特點,能夠有效地監測應用服務器而不為其帶來額外的負擔:
---對系統和網絡資源的低占用
---能保持系統的穩定和性能
---少量的或無需特別設置(即使需要設置,也是簡單明了而不是編程方式的)
---可提供良好的報告
J2SE 5.0附帶了一個稱為Jconsole的JMX客戶端工具,可用來查看JVM運行時的詳細情況。Tomcat的安裝中包含了一個叫做JMXProxyServlet的JMX servlet,可用來查看、更新Tomcat MBeans的屬性。它是一個能查看、操作運行于Tomcat容器中的MBeans的輕量級代理,通過與命令行腳本共同作用來監測和改變Tomcat的內部運行。JMX Query和Set命令分別用于查詢MBeans和修改它們的屬性和操作。
除了這兩個工具,還有幾個第三方開源JMX客戶端應用程序(本文的資源部分有與之相關的鏈接):
---XMOJO
---jManage
---MX4J
---Spring JMX
---JMX-HTML適配器
---MC4J JMX控制臺
在本文中我將介紹如何安裝和配置MC4J,遠程連接到Tomcat Servlet容器,以及監測服務器集群所有的MBeans組件。
用MC4J實現JMX遠程監測與管理
MC4J控制臺提供了以下功能:
---以樹狀方式顯示MBeans的屬性、操作和通知
---設置MBeans屬性值
---執行MBeans操作
---連接多個J2EE應用服務器
---圖形化顯示MBeans屬性
我在本文的示例中用的是MC4J 1.2 Beta 9。安裝MC4J可從SourceForge下載可執行文件(MC4J-12b9-Windows.exe),然后雙擊該文件進行安裝,安裝過程中會提示選擇JDK宿主目錄和MC4J安裝目錄(本文是安裝在c:\dev\tools目錄下)。
為JMX設置系統屬性
只有對一些系統屬性進行設置后才能使用JMX遠程監測,這些屬性由一個在JAVA_HOME/lib/management目錄下名為management.properties的屬性文件設定。表2給出了啟用JXM監測所必須設定的屬性。
表2 啟用JMX監測所需的系統屬性
設置密碼文件非常重要,特別是在多用戶的環境下。我按以下步驟在JAVA_HOME/lib/management目錄下建立密碼文件:
---用密碼模板文件(文件名jmxremote.password.template)拷貝出一個名為jmxremote.password的新文件
---將密碼文件的文件權限設置為只有你能讀寫
---為角色設置密碼,如monitorRole 和controlRole
---當啟動JVM時系統屬性已經設置成表2的樣子
Tomcat集群的配置
我采用Tomcat 5.5.9組建Tomcat集群。本文使用的服務器集群由兩個Tomcat實例組成,它們共享session狀態,通過負載均衡在集群節點間分配處理請求。我的集群配置用到了SimpleTcpCluster 和 DeltaManager選項(使用默認值),在我的系列文章“Tomcat的集群與負載均衡”(ONJava.com,2004年)中對集群的組建有更詳細的闡述。
為了能夠在啟動Tomcat服務器時啟用遠程JMX監測,要對位于CATALINA_HOME/bin目錄下的 Tomcat啟動腳本(catalina.bat 或catalina.sh)做如下修改:
set JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.management.jmxremote.port=8999
注意:你在對第二個Tomcat實例的jmxremote端口設置時必須指定不同的端口(9999)。
圖1 給出了集群的拓撲細節。
表3列出了組建Tomcat集群所需的各項配置參數。
表3 集群配置詳細說明
原文轉自:http://www.anti-gravitydesign.com