Sun Java System Application Server Enterprise Edition 8.1 2005Q2 高可用性管理指南

第 7 章 配置节点代理

本章介绍了 Application Server 中的节点代理。它包含以下小节:

关于节点代理

什么是节点代理?

节点代理是托管服务器实例的每台计算机(包括托管域管理服务器 (Domain Administration Server, DAS) 的计算机)上都需要的轻量级进程。节点代理可以:

安装 Application Server 时,默认情况下将使用该计算机的主机名创建节点代理。必须先在本地计算机上手动启动节点代理之后,该节点代理才能运行。

即使未运行节点代理,您也可以创建和删除服务器实例。但是,节点代理必须处于运行状态,您才能用它来启动和停止服务器实例。

如果停止节点代理,则该节点代理管理的服务器实例也将被停止。

一个节点代理服务一个域。如果一台计算机托管在多个域中运行的实例,则该计算机必须运行多个节点代理。

另请参见

节点代理占位符

在没有节点代理的情况下,可以使用节点代理占位符创建和删除服务器实例。占位符是在节点代理的本地系统中创建节点代理本身之前,在域管理服务器 (Domain Administration Server, DAS) 上创建的节点代理配置。


注 –

当您创建占位符节点代理之后,即可使用该占位符节点代理在域中创建实例。但是,在启动实例之前,您必须先使用 asadmin 命令在实例将要驻留的计算机上从本地创建并启动实际的节点代理。请参见创建节点代理启动节点代理


另请参见:

部署节点代理

可以使用以下两种方式配置和部署节点代理:

Procedure联机部署节点代理

如果您已经知道域的拓扑并且具有用于该域的硬件,则使用联机部署。

下图总结了节点代理的联机部署:

节点代理联机部署
开始之前

安装并启动域管理服务器。启动并运行域管理服务器后,便可以开始进行联机或脱机部署。

  1. 在将要托管服务器实例的每台计算机上安装节点代理。

    使用安装程序或 asadmin create-node-agent 命令。如果某台计算机需要多个节点代理,请使用 asadmin create-node-agent 命令来创建这些节点代理。

    有关更多信息,请参见创建节点代理

  2. 使用 asadmin start-node-agent 命令启动节点代理。

    启动之后,节点代理将与域管理服务器进行通信 (DAS)。当节点代理到达 DAS 时,将在 DAS 上创建该节点代理的配置。具备了配置之后,即可在管理控制台中查看该节点代理。

    有关更多信息,请参见启动节点代理

  3. 配置域:创建服务器实例和群集,并部署应用程序。

Procedure脱机部署节点代理

在配置各个本地计算机之前,使用脱机部署在域中部署节点代理。

下图总结了脱机部署。

节点代理脱机部署
开始之前

安装并启动域管理服务器。启动并运行域管理服务器后,便可以开始进行联机或脱机部署。

  1. 在域管理服务器中创建占位符节点代理。

    有关更多信息,请参见创建节点代理占位符

  2. 创建服务器实例和群集并部署应用程序。

    创建服务器实例时,请确保指定尚未使用的端口号。因为正在进行脱机配置,所以域无法在创建时检查端口冲突。

  3. 在将要托管服务器实例的每台计算机上安装节点代理。

    使用安装程序或 asadmin create-node-agent 命令。节点代理的名称必须与先前创建的占位符节点代理的名称相同。

    有关更多信息,请参见创建节点代理

  4. 使用 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 下的所有文件)并由 Application Server 所有。在极少数情况下,如果用户删除了远程服务器实例的所有文件并重新启动节点代理,则将重新创建远程服务器实例(例如,server1)并同步所有必需的文件。

Application Server 将保持以下文件和目录的同步。

表 7–1 在远程服务器实例之间同步的文件和目录

文件或目录 

说明 

applications

所有已部署的应用程序。已同步的此目录(及子目录)的部分取决于服务器实例中引用的应用程序。节点代理不会同步任何应用程序,因为它并没有引用任何应用程序。 

config

包含整个域的配置文件。此目录中的所有文件均被同步,但运行时临时文件(例如 admchadmsnsecure.seedtimestamp__timer_service_shutdown__.dat)除外。

config/config_name

所有实例共享的存储文件的目录(使用名为 config_name 的配置)。对于每个在 domain.xml 中定义的配置,都存在这样一个目录。此目录中的所有文件均同步到使用 config_name 的服务器实例。

config/config_name/lib/ext

可向其中放入 Java 扩展类(如 zip 或 jar 归档文件)的文件夹。此文件夹供部署到服务器实例(使用名为 config_name 的配置)的应用程序使用。这些 jar 文件使用 Java 扩展机制装入。

docroot 

HTTP 文档根目录。在现有 (out of the box) 配置中,域中的所有服务器实例均使用相同的 docroot。需要对虚拟服务器的 docroot 属性进行配置,以使服务器实例使用不同的 docroot。 

generated 

已生成的 Java EE 应用程序文件和模块文件,例如 EJB 桩模块、已编译的 JSP 类和安全策略文件。此目录与 applications 目录同步。因此,仅同步与服务器实例所引用的应用程序对应的目录。 

lib、lib/classes 

可以丢弃应用程序(部署到整个域)使用的通用 Java 类文件或 jar 和zip 归档文件所在的文件夹。这些类使用 Application Server 的类加载器装入。类加载器的装入顺序为:lib/classeslib/*.jarlib/*.zip

lib/ext 

可以丢弃应用程序(部署到整个域)使用的 Java 扩展类(如 zip 或 jar 归档文件)所在的文件夹。这些 jar 文件使用 Java 扩展机制装入。 

同步库文件

可以使用应用程序的 --libraries 部署时间属性来指定应用程序的运行时相关项。

为使库可用于整个域,可以将 JAR 文件放在 domain-dir/libdomain-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-configclasspath-suffixclasspath-prefix 元素中。这将针对所有使用 xyz-config 的服务器实例同步 jar。

具体概括如下:

独特的设置和配置管理

配置文件(位于 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 属性后,请重新启动节点代理,因为在节点代理的配置中添加或更改了某个属性时节点代理并不会自动同步。


使用 doNotRemoveList 标志

如果应用程序需要在由 Application Server 同步的目录(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 工具来执行。在域管理服务器中运行的任务则可以通过管理控制台和 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 

有关更多信息,请访问:

处理节点代理

Procedure查看常规节点代理信息

  1. 在树组件中,选择“节点代理”节点。

  2. 单击一个节点代理的名称。

    如果节点代理已经存在但并未在此处显示,请在节点代理的主机上使用 asadmin start-node-agent 来启动该节点代理。请参见启动节点代理

  3. 检查节点代理的主机名。

    如果主机名为“未知主机”,则该节点代理没有同域管理服务器 (Domain Administration Server, DAS) 进行初始联系。

  4. 检查节点代理的状态。

    状态可以为:

    • 正在运行:已正确创建节点代理,并且当前该节点代理正在运行。

    • 未在运行:已在本地计算机中创建了节点代理,但该节点代理从未启动过,或启动过但已停止。

    • 等待会合:节点代理是从未在本地计算机中创建的占位符。

    请参见创建节点代理启动节点代理

  5. 选择启动节点代理时是否启动实例。

    选择“是”,将在启动节点代理时自动启动与该节点代理关联的服务器实例。选择“否”以手动启动这些实例。

  6. 确定节点代理是否已同域管理服务器进行了联系。

    如果节点代理从未与域管理服务器进行过联系,则该节点代理从未被成功启动过。

  7. 管理与节点代理关联的服务器实例。

    如果节点代理正在运行,则通过单击实例名称旁边的复选框并单击“启动”或“停止”来启动或停止实例。

另请参见

Procedure创建节点代理占位符

由于必须从托管节点代理的计算机上本地创建节点代理,因此您只能通过管理控制台为节点代理创建占位符。此占位符是尚不存在的节点代理的节点代理配置。

创建一个占位符之后,请在托管节点代理的计算机中使用 asadmin 命令 create-node-agent 完成节点代理的创建。有关更多信息,请参见创建节点代理

有关创建和使用节点代理所涉及的一系列步骤,请参见部署节点代理

  1. 在树组件中,选择“节点代理”节点。

  2. 在“节点代理”页面中,单击“新建”。

  3. 在“当前节点代理占位符”页面中为新节点代理输入一个名称。

    在域中的所有节点代理名称、服务器实例名称、群集名称和配置名称中,此名称必须是唯一的。

  4. 单击“确定”。

    新节点代理的占位符将列出在“节点代理”页面中。

等效的 asadmin 命令

create-node-agent-config

另请参见

Procedure删除节点代理配置

通过管理控制台,只能删除域中的节点代理配置,而不能删除实际的节点代理。要删除节点代理本身,请在该节点代理的本地计算机中运行 asadmin 命令 delete-node-agent。有关更多信息,请参见删除节点代理

删除节点代理配置之前,必须停止该节点代理并且该节点代理不能有任何关联的实例。要停止节点代理,请使用 asadmin 命令 stop-node-agent。有关更多信息,请参见停止节点代理

  1. 在树组件中,选择“节点代理”节点。

  2. 在“节点代理”页面中,选中要删除的节点代理旁边的复选框。

  3. 单击“删除”。

等效的 asadmin 命令

delete-node-agent-config

另请参见

Procedure编辑节点代理配置

  1. 在树组件中,展开“节点代理”节点。

  2. 选择要编辑的节点代理配置。

  3. 选中“在启动时启动实例”以在代理启动时启动代理的服务器实例。

    您还可以从此页面手动启动和停止实例。

    如果此配置用于占位符节点代理,则使用 asadmin create-node-agent 创建实际的节点代理时,实际的节点代理将使用此配置。有关创建节点代理的信息,请参见创建节点代理

    如果此配置是现有节点代理的配置,则将自动同步此节点代理配置信息。

另请参见

Procedure编辑节点代理区域

必须为连接到节点代理的用户设置验证区域。只有管理用户才能访问节点代理。

  1. 在树组件中,展开“节点代理”节点。

  2. 选择要编辑的节点代理配置。

  3. 单击“验证区域”选项卡。

  4. 在“节点代理编辑区域”页面中,输入一个区域。

    默认区域为 admin-realm,它是在您创建节点代理时创建的。要使用其他区域,请用新区域替换由域控制的所有组件中的区域,否则这些组件将无法正常通信。

  5. 在“类名”字段中,指定实现该区域的 Java 类。

  6. 添加需要的所有属性。

    验证区域需要特定于提供商的属性,这些属性会因特定实现的需求而有所不同。

另请参见

Procedure编辑节点代理的 JMX 侦听器

节点代理使用 JMX 与域管理服务器通信。因此,该节点代理必须具有侦听 JMX 请求的端口和其他侦听器信息。

  1. 在树组件中,展开“节点代理”节点。

  2. 选择要编辑的节点代理配置。

  3. 单击 "JMX" 选项卡。

  4. 在“地址”字段中,输入 IP 地址或主机名。

    如果侦听器使用唯一端口值侦听服务器的所有 IP 地址,请输入 0.0.0.0。否则,请输入此服务器的有效 IP 地址。

  5. 在“端口”字段中,键入节点代理的 JMX 连接器将要侦听的端口。

    如果 IP 地址为 0.0.0.0,则端口号必须唯一。

  6. 在“JMX 协议”字段中,键入 JMX 连接器支持的协议。

    默认值为 rmi_jrmp。

  7. 单击“接受所有地址”旁边的复选框以允许连接到所有 IP 地址。

    节点代理将侦听与网卡相关联的特定 IP 地址或侦听所有 IP 地址。如果接受所有地址,则会将值 0.0.0.0 放入“侦听主机地址”属性中。

  8. 在“区域名称”字段中,键入为侦听器处理验证的区域的名称。

    在此页面的“安全性”部分中,将侦听器配置为使用 SSL 安全性、TLS 安全性或同时使用 SSL 和 TLS 安全性。

    要设置安全侦听器,请执行以下操作:

  9. 在“安全性”字段中选中“启用”框。

    默认情况下,启用“安全性”。

  10. 设置客户机验证。

    如果需要客户机在使用此侦听器时自行向服务器进行验证,请在“客户机验证”字段中选中“启用”框。

  11. 输入证书昵称。

    在“证书昵称”字段中输入现有服务器密钥对和证书的名称。有关更多信息,请参见《Sun Java System Application Server Enterprise Edition 8.1 2005Q2 管理指南》中的“使用证书和 SSL”

  12. 在 "SSL3/TLS" 部分:

    1. 选取要在侦听器上启用的安全协议。

      必须选取 SSL3 或 TLS, 或同时选取两者。

    2. 选取协议所使用的加密算法套件。

      要启用所有加密算法套件,请选取“所有支持的加密算法套件”。

  13. 单击“保存”。

另请参见

通过 asadmin 处理节点代理

可以使用 asadmin 执行以下节点代理任务:

创建节点代理

要创建节点代理,请在运行节点代理的本地计算机上运行 asadmin 命令 create-node-agent

节点代理的默认名称为创建节点代理时所在的主机的名称。

如果已创建节点代理占位符,请使用与节点代理占位符相同的名称来创建相应的节点代理。如果尚未创建节点代理占位符,而 DAS 已启动并且可访问,则 create-node-agent 命令还将在 DAS 上创建节点代理配置(占位符)。

有关命令语法的完整说明,请参见该命令的联机帮助。


示例 7–1 创建节点代理的示例

可用以下命令创建节点代理:


asadmin create-node-agent --host myhost --port 4849 ---user admin nodeagent1

其中,myhost 是域管理服务器 (Domain Administration Server, DAS) 主机名,4849 是 DAS 端口号,admin 是 DAS 用户,nodeagent1 是要创建的节点代理的名称。



注 –

在以下情况下,必须指定一个 DNS 可访问的主机名:

创建域和节点代理时,可通过明确指明域和节点代理的主机名指定一个 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 地址。在这种情况下,您必须更新每个服务器中的主机解析文件。


有关更多信息,请访问:

启动节点代理

节点代理必须先运行才能管理服务器实例。通过在节点代理所驻留的系统中以本地方式运行 asadmin 命令 start-node-agent 来启动节点代理。

有关命令语法的完整说明,请参见该命令的联机帮助。

例如:

asadmin start-node-agent --user admin nodeagent1

其中,admin 为管理用户,nodeagent1 为要启动的节点代理。

有关更多信息,请访问:

停止节点代理

要停止正在运行的节点代理,请在该节点代理驻留的系统中运行 asadmin 命令 stop-node-agentstop-node-agent 命令将停止节点代理所管理的所有服务器实例。

有关命令语法的完整说明,请参见该命令的联机帮助。

例如:

asadmin stop-node-agent nodeagent1

其中,nodeagent1 为节点代理的名称。

有关更多信息,请访问:

删除节点代理

删除节点代理之前,必须先停止节点代理。您还可以删除从未启动过或者从未成功地与域管理服务器连接(即尚未绑定)的节点代理。

要删除节点代理文件,请在该节点代理驻留的系统中运行 asadmin 命令 delete-node-agent

有关命令语法的完整说明,请参见该命令的联机帮助。

例如:

asadmin delete-node-agent nodeagent1

其中,nodeagent1 是节点代理。

删除节点代理时,您还必须使用管理控制台或 asadmin delete-node-agent-config 命令将该节点代理的配置从域管理服务器中删除。

有关更多信息,请访问: