本章說明 Application Server 中的節點代理程式。它包含以下小節:
節點代理程式是託管伺服器實例的每台機器 (包括託管網域管理伺服器 (DAS) 的機器) 上,都需要的簡易程序。節點代理程式可以:
按照網域管理伺服器的指示啟動、停止、建立和刪除伺服器實例。
重新啟動有故障的伺服器實例。
提供有故障的伺服器的記錄檔檢視。
使每個伺服器實例的本機配置儲存庫與網域管理伺服器的中央儲存庫同步。每個本機儲存庫只包含與該伺服器實例或節點代理程式相關的資訊。
下圖說明了節點代理程式的整體架構:
安裝應用程式伺服器時,依預設將使用該機器的主機名稱建立節點代理程式。必須先在本地機器上手動啟動節點代理程式,該節點代理程式才能執行。
即使未執行節點代理程式,您也可以建立和刪除伺服器實例。但是,節點代理程式必須處於執行狀態,您才能用它來啟動和停止伺服器實例。
如果停止節點代理程式,則該節點代理程式所管理的伺服器實例也將被停止。
一個節點代理程式服務單一網域。如果某台機器託管在多個網域中執行的實例,則該機器必須執行多個節點代理程式。
您可以在缺少現有節點代理程式的情況下,使用節點代理程式預留位置建立和刪除伺服器實例。預留位置是在節點代理程式的本機系統中建立節點代理程式本身之前,在網域管理伺服器 (DAS) 上建立的節點代理程式配置。
當您建立預留位置節點代理程式之後,即可使用其在網域中建立實例。但是在啟動實例之前,您必須先使用 asadmin 指令在實例將要常駐的機器上,直接從本機建立並啟動實際的節點代理程式。請參閱建立節點代理程式和啟動節點代理程式。
另請參閱:
線上部署,如果您知道網域的拓樸並擁有適用於該網域的硬體,請使用線上部署。
離線部署,如果是在設定整個環境之前配置網域和伺服器實例,請使用離線部署。
如果您已經知道網域拓樸並擁有適用於網域的硬體,請使用線上部署。
下圖是離線部署的示意圖:
安裝並啟動網域管理伺服器。啟動並執行之後,便可以進行線上或離線部署。
在將要託管伺服器實例的每台機器上安裝節點代理程式。
使用安裝程式或 asadmin create-node-agent 指令。如果某台機器需要多個節點代理程式,請使用 asadmin create-node-agent 指令來建立這些節點代理程式。
請參閱建立節點代理程式,以取得更多資訊。
使用 asadmin start-node-agent 指令啟動節點代理程式。
啟動之後,節點代理程式將與網域管理伺服器 (DAS) 進行通訊。當節點代理程式到達 DAS 時,將在 DAS 上建立該節點代理程式的配置。具備了配置之後,即可在管理主控台中檢視該節點代理程式。
請參閱啟動節點代理程式,以取得更多資訊。
配置網域:建立伺服器實例、叢集,並部署應用程式。
在配置個別本地機器之前,使用離線部署在網域中部署節點代理程式。
下圖概括了離線部署。
安裝並啟動網域管理伺服器。啟動並執行之後,便可以進行線上或離線部署。
在網域管理伺服器中建立預留位置節點代理程式。
請參閱建立節點代理程式預留位置,以取得更多資訊。
建立伺服器實例和叢集並部署應用程式。
建立伺服器實例時,請確保指定的是未處於使用中的連接埠號。由於是離線完成配置,因此網域無法在建立時檢查連接埠衝突。
在將要託管伺服器實例的每台機器上安裝節點代理程式。
使用安裝程式或 asadmin create-node-agent 指令。節點代理程式的名稱必須與先前建立的預留位置節點代理程式相同。
請參閱建立節點代理程式,以取得更多資訊。
使用 asadmin start-node-agent 指令啟動節點代理程式。
節點代理程式啟動之後,將連結到網域管理伺服器並建立先前已與該節點代理程式相關聯的所有伺服器實例。
請參閱啟動節點代理程式,以取得更多資訊。
由於配置資料儲存在網域管理伺服器的儲存庫 (中央儲存庫) 中,並且快取在節點代理程式的本地機器上,因此這兩者必須同步。使用者必須透過管理工具明確執行動作才能使快取同步。
本小節包含下列主題:
第一次啟動節點代理程式時,該節點代理程式將向網域管理伺服器 (DAS) 傳送一個請求,以獲得中央儲存庫中的最新資訊。當節點代理程式成功地與 DAS 取得聯絡並獲得配置資訊時,該節點代理程式即被連結到該 DAS。
依預設,asadmin start-node-agent 指令將自動啟動遠端伺服器實例,而不會與 DAS 同步。如果您要啟動的遠端伺服器實例已經與 DAS 管理的中央儲存庫同步,請指定 asadmin start-node-agent 指令的 --startinstances=false 選項。然後使用 asadmin start-instance 指令啟動遠端伺服器實例。
如果您在 DAS 上建立了預留位置節點代理程式,則第一次啟動節點代理程式時,該節點代理程式將從 DAS 的中央儲存庫中獲取其配置。初始啟動節點代理程式期間,如果由於沒有執行 DAS 而使該節點代理程式無法連結 DAS,該節點代理程式將停止並保持未連結狀態。
如果在網域中變更了節點代理程式的配置,這些變更將在節點代理程式執行時自動傳送給本地機器中的節點代理程式。
如果在 DAS 中刪除了節點代理程式的一個配置,則下次該節點代理程式進行同步時將自行停止,並將自身標記為待刪除狀態。使用本機 asadmin delete-node-agent 指令手動將其刪除。
如果使用管理主控台或 asadmin 工具明確地啟動伺服器實例,則伺服器實例將與中央儲存庫同步。如果此同步失敗,則伺服器實例不會啟動。
如果節點代理程式啟動伺服器實例的方法並非向管理主控台或 asadmin 工具傳送明確的請求,則該伺服器實例的儲存庫快取不會同步。該伺服器實例將以儲存在其快取中的配置執行。您不能在遠端伺服器實例的快取中增加或移除檔案。
遠端伺服器實例的配置被視為快取 (nodeagents/na1/server1 下的所有檔案) 並由應用程式伺服器擁有。在極少數情況下,如果使用者移除了遠端伺服器實例的所有檔案並重新啟動節點代理程式,則將重新建立遠端伺服器實例 (例如,server1) 並同步所有必需的檔案。
應用程式伺服器將使以下檔案和目錄繼續保持同步。
表 7–1 在遠端伺服器實例之間同步的檔案和目錄
檔案或目錄 |
說明 |
---|---|
applications |
所有已部署的應用程式。此目錄 (及子目錄) 已同步的部分取決於伺服器實例參照的應用程式。節點代理程式不會同步應用程式,因為它沒有參照任何應用程式。 |
config |
包含整個網域的配置檔案。此目錄中的所有檔案均會同步,但執行階段暫存檔案 (例如 admch、admsn、secure.seed、. timestamp 和 __timer_service_shutdown__.dat) 除外。 |
config/config_name |
用於儲存要由所有實例 (使用名為 config_name 的配置) 共用的檔案的目錄。在 domain.xml 中定義的每個配置都會有這樣的目錄。此目錄中的所有檔案均與使用 config_name 的伺服器實例同步。 |
config/config_name/lib/ext |
放置 Java 延伸類別 (如 zip 或 jar 歸檔檔案) 的資料夾。此資料夾供部署到伺服器實例 (使用名為 config_name 的配置) 的應用程式使用。您必須使用 Java 延伸機制載入這些 jar 檔案。 |
docroot |
HTTP 文件根目錄。在即開即用 (out of the box) 配置中,網域中的所有伺服器實例均使用相同的 docroot。需要將虛擬伺服器的 docroot 特性配置為使伺服器實例使用不同的 docroot。 |
generated |
已產生的 Java EE 應用程式檔案和模組檔案,例如 EJB stub、已編譯的 JSP 類別和安全策略檔案。此目錄與 applications 目錄同時同步。因此,僅同步應用程式 (由伺服器實例所參照) 對應的目錄。 |
lib、lib/classes |
可放置共用 Java 類別檔案或者 jar 和 zip 歸檔檔案 (供部署到整個網域的應用程式使用) 的資料夾。您必須使用應用程式伺服器的類別載入器載入這些類別。類別載入器的載入順序為:lib/classes、lib/*.jar、lib/*.zip。 |
lib/ext |
可放置 Java 延伸類別 (例如 zip 或 jar 歸檔檔案,以供部署到整個網域的應用程式使用) 的資料夾。您必須使用 Java 延伸機制載入這些 jar 檔案。 |
您可以使用應用程式的 --libraries 部署時間屬性來指定應用程式的執行階段相依性。
為使程式庫可用於整個網域,可以將 JAR 檔案放在 domain-dir/lib 或 domain-dir/lib/classes 中。(如需更多資訊,請參閱「Sun Java System Application Server Enterprise Edition 8.1 2005Q2 Developer’s Guide」中的「Using the Common Classloader」。)JDBC 驅動程式以及網域中所有應用程式共用的其他公用程式程式庫,通常需要如此。
為了用在整個叢集或整個獨立伺服器中,請將 jar 複製到 domain-dir/domain1/config/xyz-config/lib 目錄中。接下來,將 jar 增加至 xyz-config 的 classpath-suffix 或 classpath-prefix 元素中。這將針對所有使用 xyz-config 的伺服器實例同步 jar。
總而言之:
domains/domain1/lib - 用於整個網域範圍、使用共用類別載入器、自動增加 jar。
domains/domain1/config/cluster1、config/lib - 用於配置範圍、更新 classpath-prefix 或 classpath-suffix。
domains/domain1/config/cluster1、config/lib/ext - 自動增加至 java.ext.dirs。
整個網域中的配置檔案 (位於 domains/domain1/config 下) 都會同步。如果要為獨立伺服器實例 (server1) 使用的 server1-config 自訂 server.policy 檔案,請將修改後的 server.policy 檔案放在 domains/domain1/config/server1-config 目錄下。
此修改後的 server.policy 檔案僅針對獨立伺服器實例 server1 進行同步。請記得更新 jvm-option。例如︰<java-config> ... <jvm-options>-Djava.security.policy=${com.sun.aas.instanceRoot}/config /server1-config/server.policy</jvm-options></java-config>
當環境中有大型應用程式要進行同步或者可用記憶體受到限制時,您可以調整 JVM 選項以限制記憶體的使用。這種調整將減少收到記憶體不足錯誤的可能性。實例同步 JVM 使用的是預設設定,但您可以配置 JVM 選項來變更這些設定。
使用 INSTANCE-SYNC-JVM-OPTIONS 特性設定 JVM 選項。 用於設定特性的指令為:
asadmin set domain.node-agent.node_agent_name.property.INSTANCE-SYNC-JVM-OPTIONS="JVM_options"
例如︰
asadmin set domain.node-agent.node0.property.INSTANCE-SYNC-JVM-OPTIONS="-Xmx32m -Xss2m"
在此範例中,節點代理程式為 node0,JVM 選項為 -Xmx32m -Xss2m。
如需更多資訊,請參閱 http://java.sun.com/docs/hotspot/VMOptions.html。
變更 INSTANCE-SYNC-JVM-OPTIONS 特性後,請重新啟動節點代理程式,因為在節點代理程式的配置中新增或變更特性時節點代理程式並不會自動同步。
如果應用程式需要在由應用程式伺服器同步的目錄 (applications、generated、docroot、config、lib) 中儲存和讀取檔案,請使用 doNotRemoveList 標幟。此屬性接受以逗號分隔的檔案或目錄清單。即使應用程式相關檔案不存在於 DAS 所管理的中央儲存庫中,在伺服器啟動期間也不會移除這些檔案。如果中央儲存庫中存在相同的檔案,則在同步期間將覆寫這些檔案。
使用 INSTANCE-SYNC-JVM-OPTIONS 特性傳入 doNotRemoveList 屬性。
例如︰
<node-agent name="na1" ...>
...
<property name="INSTANCE-SYNC-JVM-OPTIONS" value="-Dcom.sun.appserv.doNotRemoveList=applications/j2ee-modules /<webapp_context>/logs,generated/mylogdir"/>
</node–agent>
每個節點代理程式均有其自己的記錄檔。如果使用節點代理程式時遇到問題,請參閱位於以下位置的記錄檔:
node_agent_dir/node_agent_name/agent/logs/server.log。
有時,節點代理程式記錄會指示您檢視伺服器的記錄,以取得有關所出現問題的詳細訊息。
伺服器記錄位於:
node_agent_dir/node_agent_name/server_name/logs/server.log
node_agent_dir 的預設位置為 install_dir/nodeagents
對於節點代理程式,有些作業必須從執行該節點代理程式的系統上本機執行,而其他作業則可以在網域管理伺服器中執行。需要直接從本機執行的作業,只能在節點代理程式常駐的機器上透過 asadmin 工具來執行。而在網域管理伺服器中執行的作業,可透過管理主控台和 asadmin 工具執行。
下表概括了這些作業以及執行這些作業的位置:
表 7–2 通過管理主控台或是 asadmin 指令都可以執行的作業
作業 |
管理主控台 |
asadmin 指令 |
---|---|---|
在網域管理伺服器中建立節點代理程式預留位置/配置 |
[建立節點代理程式預留位置] 頁面 |
create-node-agent-config |
建立節點代理程式 |
不可用 |
create-node-agent |
啟動節點代理程式 |
不可用 |
start-node-agent |
停止節點代理程式 |
不可用 |
stop-node agent |
從網域管理伺服器中刪除節點代理程式配置 |
[節點代理程式] 頁面 |
delete-node-agent-config |
從本地機器中刪除節點代理程式 |
不可用 |
delete-node-agent |
編輯節點代理程式配置 |
[節點代理程式] 頁面 |
set |
列出節點代理程式 |
[節點代理程式] 頁面 |
list-node-agents |
如需更多資訊,請參閱:
在樹形元件中,選取 [節點代理程式] 節點。
按一下節點代理程式的名稱。
如果節點代理程式已存在但未在此處顯示,請使用 asadmin start-node-agent 在節點代理程式的主機電腦上啟動該節點代理程式。請參閱啟動節點代理程式
檢查節點代理程式的主機名稱。
如果主機名稱為 [未知主機],則該節點代理程式尚未同網域管理伺服器 (DAS) 進行初始聯絡。
檢查節點代理程式的狀態。
狀態可為︰
正在執行︰節點代理程式已正確建立,並且目前處於執行狀態。
未執行︰已在本地機器上建立節點代理程式,但從未啟動,或節點代理程式啟動過但已停止。
等待會合:節點代理程式是從未在本地機器中建立的預留位置。
選擇啟動節點代理程式時是否啟動實例。
選擇 [是],將在啟動節點代理程式時自動啟動與該節點代理程式關聯的伺服器實例。選擇 [否] 將手動啟動這些實例。
確定節點代理程式是否已同網域管理伺服器進行了聯絡。
如果節點代理程式從未與網域管理伺服器進行過聯絡,則表明該節點代理程式從未成功啟動過。
管理與節點代理程式關聯的伺服器實例。
如果節點代理程式正在執行,則可以透過按一下實例名稱旁邊的核取方塊並按一下 [啟動] 或 [停止] 來啟動或停止實例。
由於您必須從託管節點代理程式的機器上,直接從本機建立節點代理程式,因此您只能透過管理主控台為節點代理程式建立預留位置。此預留位置是尚不存在的節點代理程式的節點代理程式配置。
建立預留位置之後,請在託管節點代理程式的機器中,使用 asadmin 指令 create-node-agent 完成建立程序。如需更多資訊,請參閱建立節點代理程式。
如需用於建立和使用節點代理程式之步驟的清單,請參閱部署節點代理程式。
在樹形元件中,選取 [節點代理程式] 節點。
在 [節點代理程式] 頁面中,按一下 [新建]。
在 [目前節點代理程式預留位置] 頁面中,為新節點代理程式輸入一個名稱。
此名稱必須與網域中的所有節點代理程式名稱、伺服器實例名稱、叢集名稱和配置名稱都不重複。
按一下 [確定]。
新節點代理程式的預留位置將列在 [節點代理程式] 頁面中。
create-node-agent-config
透過管理主控台,只能刪除網域中的節點代理程式配置,而不能刪除實際的節點代理程式。若要刪除節點代理程式自身,請在節點代理程式的本地機器上執行 asadmin 指令 delete-node-agent。如需更多資訊,請參閱刪除節點代理程式。
刪除節點代理程式配置之前,該節點代理程式必須停止並且不能有任何關聯的實例。若要停止節點代理程式,請使用 asadmin 指令 stop-node-agent。請參閱停止節點代理程式,以取得更多資訊。
delete-node-agent-config
在樹形元件中,展開 [節點代理程式] 節點。
選取要編輯的節點代理程式配置。
啟動代理程式後,在 [啟動] 上核取 [啟動實例] 以啟動該代理程式的伺服器實例。
您還可以從此頁面手動啟動和停止實例。
如果此配置是預留位置節點代理程式的配置,則使用 asadmin create-node-agent 建立實際的節點代理程式時,實際的節點代理程式將使用此配置。如需有關建立節點代理程式的資訊,請參閱建立節點代理程式。
如果此配置是現有節點代理程式的配置,則將自動同步此節點代理程式配置資訊。
您必須為連線至節點代理程式的使用者設定認證範圍。只有管理使用者才能存取節點代理程式。
在樹形元件中,展開 [節點代理程式] 節點。
選取要編輯的節點代理程式配置。
按一下 [認證範圍] 標籤。
在 [節點代理程式編輯範圍] 頁面中,輸入一個範圍。
預設範圍為 admin-realm,它是您在建立節點代理程式時建立的。若要使用其他範圍,請替代由網域控制的所有元件中的範圍,否則這些元件將無法正常通訊。
在 [類別名稱] 欄位中,指定實作該範圍的 Java 類別。
新增需要的所有特性。
認證範圍需要特定於供應商的特性,這些特性會因特定實作的需求不同而有所不同。
節點代理程式使用 JMX 與網域管理伺服器通訊。因此,該節點代理程式必須具有偵聽 JMX 請求的連接埠以及其他偵聽程式資訊。
在樹形元件中,展開 [節點代理程式] 節點。
選取要編輯的節點代理程式配置。
按一下 [JMX] 標籤。
在 [位址] 欄位中,輸入 IP 位址或主機名稱。
如果偵聽程式使用唯一連接埠值診聽伺服器的所有 IP 位址,請輸入 0.0.0.0。否則,請輸入此伺服器的有效 IP 位址。
在 [連結埠] 欄位中,鍵入節點代理程式的 JMX 連接器要偵聽的連接埠。
如果 IP 位址為 0.0.0.0,則連接埠號必須是唯一的。
在 [JMX 協定] 欄位中,鍵入 JMX 連接器支援的協定。
預設值為 rmi_jrmp。
按一下 [接受所有位吞 旁邊的核取方塊以允許連線到所有 IP 位均C
節點代理程式將偵聽與網路卡相關聯的特定 IP 位址或偵聽所有 IP 位址。如果接受所有位址,則會將值 0.0.0.0 放入 [偵聽主機位址] 特性中。
在 [範圍名稱] 欄位中,鍵入為偵聽程式處理認證的範圍的名稱。
在此頁面的 [安全性] 區段中,將偵聽程式配置為使用 SSL 安全性、TLS 安全性或同時使用 SSL 和 TLS 安全性。
若要設定安全偵聽程式,請執行以下操作:
在 [安全性] 欄位中核取 [已啟用] 方塊。
依預設已啟用 [安全性]。
設定用戶端認證。
若需要用戶端在使用此偵聽程式時向伺服器認證自己的身份,請在 [用戶端認證] 欄位中核取 [已啟用] 方塊。
輸入憑證暱稱。
在 [憑證暱稱] 欄位中輸入現有伺服器金鑰組和憑證的名稱。如需更多資訊,請參閱「Sun Java System Application Server Enterprise Edition 8.1 2005Q2 管理指南」中的「使用證書和 SSL」。
在 [SSL3/TLS] 區段:
按一下 [儲存]。
您可以使用 asadmin 執行以下節點代理程式作業︰
若要建立節點代理程式,請在執行節點代理程式的機器上,直接從本機執行 asadmin 指令 create-node-agent。
節點代理程式的預設名稱為該節點代理程式建立時所在的主機的名稱。
如果已建立節點代理程式預留位置,請使用與節點代理程式預留位置相同的名稱來建立相關聯的節點代理程式。如果尚未建立節點代理程式預留位置,而 DAS 已啟動並且可存取,則 create-node-agent 指令還將在 DAS 上建立節點代理程式配置 (預留位置)。
如需有關指令語法的完整描述,請參閱該指令的線上說明。
以下指令會建立節點代理程式︰
asadmin create-node-agent --host myhost --port 4849 ---user admin nodeagent1 |
其中,myhost 是網域管理伺服器 (DAS) 主機名稱、4849 是 DAS 連接埠號、admin 是 DAS 使用者、nodeagent1 是要建立的節點代理程式的名稱。
在以下情況下,必須指定一個可連線 DNS 的主機名稱:
網域跨越了子網路邊界 (即,節點代理程式和網域管理伺服器 [DAS] 處於不同的網域中,例如 sun.com 和 java.com)
如果使用主機名稱未在 DNS 中註冊的 DHCP 機器,
建立網域和節點代理程式時,可透過明確指定網域和節點代理程式的主機名稱來指定一個可連線 DNS 的主機名稱:
create-domain --domainproperties domain.hostName=DAS-host-name create-node-agent --hostDAS-host-name --agentproperties remoteclientaddress=node-agent-host-name |
另外一種解決方案是更新該平台的 hosts 主機名稱/IP 解析檔案,從而將主機名稱解析為正確的 IP 位址。但是,使用 DHCP 重新連線時,可能會指定給您一個不同的 IP 位均C在這種情況下,您必須更新每個伺服器中的主機解析檔案。
如需更多資訊,請參閱:
節點代理程式必須先執行,才能管理伺服器實例。在節點代理程式常駐的系統中直接從本機執行 asadmin 指令 start-node-agent,以啟動節點代理程式。
如需有關指令語法的完整描述,請參閱該指令的線上說明。
例如︰
asadmin start-node-agent --user admin nodeagent1
其中,admin 為管理使用者,nodeagent1 為要啟動的節點代理程式。
如需更多資訊,請參閱:
若要停止正在執行的節點代理程式,請在該節點代理程式常駐的系統中執行 asadmin 指令 stop-node-agent。stop-node-agent 指令將停止該節點代理程式所管理的所有伺服器實例。
如需有關指令語法的完整描述,請參閱該指令的線上說明。
例如︰
asadmin stop-node-agent nodeagent1
其中,nodeagent1 為節點代理程式的名稱。
如需更多資訊,請參閱:
刪除節點代理程式之前,必須先停止節點代理程式。您還可以刪除從未啟動過或者從未成功地與網域管理伺服器聯絡 (即尚未連結) 的節點代理程式。
若要刪除節點代理程式檔案,請在該節點代理程式常駐的系統中執行 asadmin 指令 delete-node-agent。
如需有關指令語法的完整描述,請參閱該指令的線上說明。
例如︰
asadmin delete-node-agent nodeagent1
其中,nodeagent1 是節點代理程式。
刪除節點代理程式時,您還必須使用管理主控台或 asadmin delete-node-agent-config 指令從網域管理伺服器中,刪除該節點代理程式的配置。
如需更多資訊,請參閱: