熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java開源技術 >> 正文

MC4J遠程監測Tomcat集群-JMX助Tomcat1(圖)

2013-11-23 20:38:29  來源: Java開源技術 

  摘要
  
  最新版本的Tomcat()采用Java管理擴展(JMX)管理beans(managed beans)技術實現了對servlet容器的管理其中包括監測所有的集群(cluster)元素和session復制情況本文探討了Tomcat對集群和session復制的支持作者Srini Penchikala介紹了所有能用MBeans API監測的Tomcat集群組件他還通過一個運行在集群上的Web應用示例展示了如何監測集群的細節和session復制以及用JMX控制台顯示服務器的統計數據(原文日發表)
  
  JSE在監測和管理方面的支持很全面擁有對Java平台及運行於其上的應用進行遠程監測能力JSE 中包含了Java管理擴展(JMX)遠程監測技術這是對JVM監控能力的一個新的補充Java規范第號需求是JMX遠程監測規范它是關於遠程訪問機制的為基於JMX的代理制定了一套遠程客戶端API
  
  Tomcat 在設計上借助了JSE 內建的JMX技術版(由Tomcat 發展而來)實現了最新的Servlet () 規范和JavaServer Pages ()規范並對Tomcat服務器架構在很大程度上做了重新設計和組合它運行更加穩定與Tomcat x相比性能伸縮性可靠性JMX監測集成的session集群和應用部署等方面都有了提高
  
  有了最新版的Tomcat和JSE 的JMX技術我們就可以通過JMX來使用servlet容器的屬性和方法同時減少與JMX相關的復雜編碼我在本文中將介紹如何在啟動Tomcat servlet容器時啟用遠程JMX監測以及一個運行在有session復制功能的Tomcat集群上的Web應用示例最後我們用JMX客戶端查看集群元素和HTTP session的細節不過在我們深入探討遠程JMX監測之前還是先看一下構成Tomcat集群的組件類
  
  集群元素
  
  一個Tomcat集群由六個主要的組件構成cluster(集群)membership(成員)sender(發送者)receiver(接收者)replication valve(復制閥)和deployer(部署者)
  
  表說明了Tomcat中的每個組件是如何完成集群和session復制工作的
  
  表 Tomcat集群元素
  
 

  有關集群元素的詳細說明參見Tomcat 的集群文檔
  
  Tomcat 在集群session復制服務器監測和管理方面相對以前的版本(Tomcat )做了一些改進在Tomcat 中幾個服務器組件(如hostengine和service)可用MBeans來監測而在Tomcat 中Yoav ShapiraFilip Hanik和其他的Tomcat開發者為監測集群元素編寫了JMX實現
  
  既然我們已經了解了每個Tomcat集群元素的功能接下來讓我們看看各種連接Tomcat服務器集群和監測集群情況的JMX客戶端工具
  
  JMX客戶端
  
  JMX客戶端是一個用來連接JMX代理(運行在本地或遠程)的圖形化用戶界面(客戶機/服務器或瘦客戶端)理想的JMX客戶端具備以下特點能夠有效地監測應用服務器而不為其帶來額外的負擔
  
  對系統和網絡資源的低占用
  能保持系統的穩定和性能
  少量的或無需特別設置(即使需要設置也是簡單明了而不是編程方式的)
  可提供良好的報告
  
  JSE 附帶了一個稱為Jconsole的JMX客戶端工具可用來查看JVM運行時的詳細情況Tomcat的安裝中包含了一個叫做JMXProxyServlet的JMX servlet可用來查看更新Tomcat MBeans的屬性它是一個能查看操作運行於Tomcat容器中的MBeans的輕量級代理通過與命令行腳本共同作用來監測和改變Tomcat的內部運行JMX Query和Set命令分別用於查詢MBeans和修改它們的屬性和操作
  
  除了這兩個工具還有幾個第三方開源JMX客戶端應用程序(本文的資源部分有與之相關的鏈接)
  
  XMOJO
  jManage
  MXJ
  Spring JMX
  JMXHTML適配器
  MCJ JMX控制台
  
  在本文中我將介紹如何安裝和配置MCJ遠程連接到Tomcat Servlet容器以及監測服務器集群所有的MBeans組件
  
  用MCJ實現JMX遠程監測與管理
  
  MCJ控制台提供了以下功能
  
  以樹狀方式顯示MBeans的屬性操作和通知
  設置MBeans屬性值
  執行MBeans操作
  連接多個JEE應用服務器
  圖形化顯示MBeans屬性
  
  我在本文的示例中用的是MCJ Beta 安裝MCJ可從SourceForge下載可執行文件(MCJbWindowsexe)然後雙擊該文件進行安裝安裝過程中會提示選擇JDK宿主目錄和MCJ安裝目錄(本文是安裝在c:\dev\tools目錄下)
  
  為JMX設置系統屬性
  
  只有對一些系統屬性進行設置後才能使用JMX遠程監測這些屬性由一個在JAVA_HOME/lib/management目錄下名為managementproperties的屬性文件設定給出了啟用JXM監測所必須設定的屬性
  
  表 啟用JMX監測所需的系統屬性
  
 

  設置密碼文件非常重要特別是在多用戶的環境下我按以下步驟在JAVA_HOME/lib/management目錄下建立密碼文件
  
  用密碼模板文件(文件名jmxremotepasswordtemplate)拷貝出一個名為jmxremotepassword的新文件
  將密碼文件的文件權限設置為只有你能讀寫
  為角色設置密碼如monitorRole 和controlRole
  當啟動JVM時系統屬性已經設置成表的樣子
  
  Tomcat集群的配置
  
  我采用Tomcat 組建Tomcat集群本文使用的服務器集群由兩個Tomcat實例組成它們共享session狀態通過負載均衡在集群節點間分配處理請求我的集群配置用到了SimpleTcpCluster 和 DeltaManager選項(使用默認值)在我的系列文章Tomcat的集群與負載均衡年)中對集群的組建有更詳細的闡述
  
  為了能夠在啟動Tomcat服務器時啟用遠程JMX監測要對位於CATALINA_HOME/bin目錄下的 Tomcat啟動腳本(catalinabat 或catalinash)做如下修改
  
  set JAVA_OPTS=%JAVA_OPTS% Dcomsunmanagementjmxremoteport=
  
  注意你在對第二個Tomcat實例的jmxremote端口設置時必須指定不同的端口(
  
  圖 給出了集群的拓撲細節
  
 

  
Tomcat集群架構示意圖

  
  表列出了組建Tomcat集群所需的各項配置參數
  
  表 集群配置詳細說明
  

From:http://tw.wingwit.com/Article/program/Java/ky/201311/28819.html
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.