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