Sun Java System Application Server 9.1 高可用性管理指南

同步节点代理和域管理服务器

因为配置数据既存储在域管理服务器的系统信息库(中心系统信息库)中,又高速缓存在节点代理的本地计算机中,所以这两者必须同步。用户应始终通过管理工具执行显式操作来实现高速缓存的同步。

本节包括以下主题:

节点代理同步

第一次启动节点代理时,该节点代理将向域管理服务器 (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 将保持以下文件和目录的同步。

表 8–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 扩展机制装入。 

lib/applibs 

将相关 jar 放在 domains/<domain_name>lib/applibs 下,并通过 libraries 选项指定 jar 文件的相对路径。

例如,asadmin deploy --libraries commons-coll.jar,X1.jar foo.ear

java-web-start 

此目录(及子目录)的各部分根据服务器实例引用的应用程序进行同步。 

同步库文件

可以使用应用程序的 --libraries 部署时间属性来指定应用程序的运行时相关项。指定相对路径(仅 jar 名称)后,Application Server 会尝试在 domain-dir /lib/applibs 中查找指定的库。

为使库可用于整个域,可以将 JAR 文件放在 domain-dir/libdomain-dir/lib/classes 中。(有关更多信息,请参见《Sun Java System Application Server 9.1 Developer’s Guide》中的“Using the Common Class Loader”。这种情况通常适用于 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、java-web-start)中存储和读取文件,请使用 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>