本章說明 Application Server 中的節點代理程式。本章包含以下小節:
節點代理程式為簡易程序,用於託管伺服器實例的每台機器,包括託管網域管理伺服器 (DAS) 的機器。節點代理程式可以:
按照網域管理伺服器的指示啟動、停止、建立和刪除伺服器實例。
重新啟動有故障的伺服器實例。
提供有故障的伺服器的記錄檔檢視。
使每個伺服器實例的本機配置儲存庫與網域管理伺服器的中央儲存庫同步。每個本機儲存庫只包含與該伺服器實例或節點代理程式相關的資訊。
下圖說明了節點代理程式的整體架構:
安裝 Application Server 時,依預設將使用該機器的主機名稱建立節點代理程式。必須先在本地機器上手動啟動節點代理程式,該節點代理程式才能執行。
即使未執行節點代理程式,您也可以建立和刪除伺服器實例。但是,節點代理程式必須處於執行狀態,您才能用它來啟動和停止伺服器實例。
一個節點代理程式服務單一網域。如果某台機器託管在多個網域中執行的實例,則該機器必須執行多個節點代理程式。
線上部署,如果您知道網域的拓樸並擁有適用於該網域的硬體,請使用線上部署。
離線部署,如果您要在設定整個環境之前配置網域和伺服器實例,請使用離線部署。
如果您已經知道網域拓樸並擁有適用於網域的硬體,請使用線上部署。
下圖概括了節點代理程式的線上部署:
安裝並啟動網域管理伺服器。啟動並執行之後,便可以進行線上或離線部署。
在將要託管伺服器實例的每台機器上安裝節點代理程式。
使用安裝程式或 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 同步。使用 --startinstances=false 選項,緊跟在 asadmin start-instance 指令之後,以啟動與受 DAS 管理之中央儲存庫同步的遠端伺服器實例。
如果您在 DAS 上建立了萬用字元節點代理程式,則第一次啟動節點代理程式時,該節點代理程式將從 DAS 的中央儲存庫中獲取其配置。初始啟動節點代理程式期間,如果由於沒有執行 DAS 而使該節點代理程式無法連結 DAS,該節點代理程式將停止並保持未連結狀態。
如果在網域中變更了節點代理程式的配置,這些變更將在節點代理程式執行時自動傳送給本地機器中的節點代理程式。
如果在 DAS 中刪除了節點代理程式的一個配置,則下次該節點代理程式進行同步時將停止並會將其自身標記為待刪除狀態。使用本機 asadmin delete-node-agent 指令手動將其刪除。
如果您使用 Admin Console 或 asadmin 工具明確地啟動伺服器實例,則伺服器實例與中央儲存庫同步。如果此同步化作業失敗,則伺服器實例不會啟動。
如果節點代理程式不是透過 Admin Console 或 asadmin 工具傳送明確的請求來啟動伺服器實例,則不會同步化該伺服器實例的儲存庫快取記憶體。該伺服器實例將以儲存在其快取中的配置執行。您不能增加或移除位於遠端伺服器實例之快取中的檔案。
遠端伺服器實例之配置可視為快取 (在 nodeagents/na1/server1 下的所有檔案),並屬於應用程式伺服器所有。在特殊情況下,若使用者移除了遠端伺服器實例的所有檔案並重新啟動節點代理程式, 則將會重新建立遠端伺服器實例 (例如 server1),且將會同步所有必要檔案。
應用程式伺服器會保持下列檔案與目錄的同步。
表 8–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 文件根目錄。在出廠配置中,網域內所有的伺服器實例皆會使用相同的文件根目錄。需將虛擬伺服器之文件根目錄特性配置為使伺服器實例使用不同的文件根目錄。 |
generated |
Java EE 應用程式與模組之產生檔案,例如 EJB stub、編譯過的 JSP 類別與安全策略檔案。此目錄會與應用程式目錄同步。因此,只有伺服器實例參照之應用程式所對應的目錄會同步。 |
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.2 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 執行其他作業。
下表概括了這些作業以及執行這些作業的位置:
表 8–2 如何執行節點代理程式作業
作業 |
管理主控台 |
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 |
您可以在沒有現有節點代理程式的情況下,使用節點代理程式預留位置建立和刪除伺服器實例。節點代理程式預留位置是在節點代理程式的本機系統中建立節點代理程式本身之前,建立於網域管理伺服器 (DAS) 上的。
如需有關建立節點代理程式預留位置的資訊,請參閱建立節點代理程式預留位置
當您建立預留位置節點代理程式之後,即可使用其在網域中建立實例。但是,在啟動實例之前,您必須先使用 asadmin 指令,在實例將要常駐的本地機器上建立並啟動實際的節點代理程式。請參閱建立節點代理程式和啟動節點代理程式。
由於必須在託管節點代理程式的機器上本機建立節點代理程式,因此透過 Admin Console,您僅可以建立節點代理程式的預留位置。此萬用字元是尚不存在的節點代理程式的節點代理程式配置。
建立預留位置之後,請在託管節點代理程式的機器上使用 asadmin 指令 create-node-agent 完成節點代理程式的建立。如需更多資訊,請參閱建立節點代理程式。
如需用於建立和使用節點代理程式之步驟的清單,請參閱部署節點代理程式。
在樹形元件中,選取 [節點代理程式] 節點。
在 [節點代理程式] 頁面中,按一下 [新建]。
在 [目前節點代理程式萬用字元] 頁面中,為新節點代理程式輸入一個名稱。
在網域中所有節點代理程式名稱、伺服器實例名稱、叢集名稱和配置名稱都必須是唯一的。
按一下 [確定]。
新節點代理程式的萬用字元將列示在 [節點代理程式] 頁面中。
create-node-agent-config
若要建立節點代理程式,請在節點代理程式在其上執行的機器上,本機執行 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 --startinstances=false nodeagent1
其中,admin 為管理使用者,nodeagent1 為要啟動的節點代理程式。接著,使用 asadmin start-instance 指令以啟動伺服器實例。
在節點代理程式常駐的系統上執行 asadmin 指令 stop-node-agent,以停止正在執行的節點代理程式。stop-node-agent 指令將停止該節點代理程式所管理的所有伺服器實例。
如需有關指令語法的完整描述,請參閱該指令的線上說明。
例如︰
asadmin stop-node-agent nodeagent1
其中,nodeagent1 為節點代理程式的名稱。
刪除節點代理程式之前,必須先停止節點代理程式。您還可以刪除從未啟動過或者從未成功地與網域管理伺服器聯絡 (即尚未連結) 的節點代理程式。
在節點代理程式常駐的系統上執行 asadmin 指令 delete-node-agent,以刪除節點代理程式檔案。
如需有關指令語法的完整描述,請參閱該指令的線上說明。
例如︰
asadmin delete-node-agent nodeagent1
其中,nodeagent1 為節點代理程式。
刪除某個節點代理程式時,您還必須使用 Admin Console 或 asadmin delete-node-agent-config 指令從網域管理伺服器中刪除該節點代理程式的配置。
在樹形元件中,選取 [節點代理程式] 節點。
按一下節點代理程式的名稱。
如果節點代理程式已存在但未在此處顯示,請使用 asadmin start-node-agent 在節點代理程式的主機電腦上啟動該節點代理程式。請參閱啟動節點代理程式。
檢查節點代理程式的主機名稱。
如果主機名稱為 [未知主機],則該節點代理程式尚未同網域管理伺服器 (DAS) 進行初始聯絡。
檢查節點代理程式的狀態。
狀態可為︰
正在執行︰節點代理程式已正確建立,並且目前處於執行狀態。
未執行︰已在本地機器上建立節點代理程式,但從未啟動,或節點代理程式啟動過但已停止。
等待會合︰節點代理程式是從未在本地機器中建立的萬用字元。
選擇啟動節點代理程式時是否啟動實例。
選擇 [是],將在啟動節點代理程式時自動啟動與該節點代理程式關聯的伺服器實例。選擇 [否] 將手動啟動這些實例。
確定節點代理程式是否已同網域管理伺服器進行了聯絡。
如果節點代理程式從未與網域管理伺服器進行過聯絡,則表明該節點代理程式從未成功啟動過。
管理與節點代理程式關聯的伺服器實例。
如果節點代理程式正在執行,則可以透過按一下實例名稱旁邊的核取方塊並按一下 [啟動] 或 [停止] 來啟動或停止實例。
透過 Admin Console,您僅可刪除網域中的節點代理程式配置。而不能刪除實際的節點代理程式。若要刪除節點代理程式自身,請在節點代理程式的本地機器上執行 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 位址。
節點代理程式將偵聽與網路卡相關聯的特定 IP 位址或偵聽所有 IP 位址。如果接受所有位址,則會將值 0.0.0.0 放入 [偵聽主機位址] 特性中。
在 [範圍名稱] 欄位中,鍵入為偵聽程式處理認證的範圍的名稱。
在此頁面的 [安全性] 區段中,將偵聽程式配置為使用 SSL 安全性、TLS 安全性或同時使用 SSL 和 TLS 安全性。
若要設定安全偵聽程式,請執行以下操作:
在 [安全性] 欄位中核取 [啟用] 方塊。
依預設已啟用 [安全性]。
設定用戶端認證。
若要要求用戶端在使用此偵聽程式時自行向伺服器進行認證,請在 [用戶端認證] 欄位中核取 [啟用] 方塊。
輸入憑證暱稱。
在 [憑證暱稱] 欄位中輸入現有伺服器金鑰組和憑證的名稱。如需更多資訊,請參閱「Sun Java System Application Server Enterprise Edition 8.2 管理指南」中的「使用憑證和 SSL」。
在 [SSL3/TLS] 區段:
按一下 [儲存]。