本章介绍了 SunPlex Agent Builder 和 Agent Builder 的 Cluster Agent 模块。两种工具均可以自动创建在资源组管理器 (Resource Group Manager, RGM) 的控制下运行的资源类型或数据服务。资源类型是包裹在应用程序外围的封装程序,使应用程序可以在 RGM 的控制下运行于群集环境中。
本章包括以下主题:
Agent Builder 提供了图形用户界面 (GUI),用于指定关于要创建的应用程序和要创建资源类型的种类的信息。Agent Builder 支持网络可识别的应用程序和非网络可识别的应用程序。网络可识别的应用程序使用网络与客户机通信。非网络可识别的应用程序是独立的应用程序。
如果无法访问 Agent Builder 的 GUI 版本,可以通过命令行界面访问 Agent Builder。请参见使用 Agent Builder 的命令行版本的方法。
根据您指定的信息,Agent Builder 将生成以下软件:
一组用于故障转移的 C、Korn shell (ksh) 或通用数据服务 (GDS) 源文件或者与资源类型的方法回调对应的可伸缩资源类型。这些文件既可用于网络可识别(客户机/服务器模型)的应用程序又可用于非网络可识别(无客户机)的应用程序。
定制的资源类型注册 (RTR) 文件(如果您生成的是 C 或 Korn shell 源代码)。
用来启动、停止和删除资源类型的实例(资源)的定制实用程序脚本以及用来说明如何使用以上每一种文件的定制手册页。
包含二进制(如果您生成的是 C 源代码)、RTR 文件(如果您生成的是 C 或 Korn shell 源代码)和实用程序脚本的 Solaris 软件包。
使用 Agent Builder,您还可以为具有多个独立进程树(进程监视工具 [PMF] 必须对每个进程树分别进行监视和重新启动)的应用程序生成资源类型。
使用 Agent Builder 之前,需要了解如何创建具有多个独立进程树的资源类型。
Agent Builder 可以为具有一个以上独立进程树的应用程序创建资源类型。说进程树是独立的是因为 PMF 分别监视和启动每个进程树。PMF 使用每个进程树自己的标记启动它们。
只有在指定生成的源代码为 C 或 GDS 时,才可以使用 Agent Builder 创建具有多个独立的进程树的资源类型。对于 Korn shell,不能使用 Agent Builder 创建上述资源类型。要针对 Korn shell 创建上述资源类型,必须手动写入代码。
在基本应用程序具有多个独立的进程树的情况下,不能通过仅指定一个命令行来启动该应用程序,而是必须创建一个文本文件,并在每一行中指定指向用来启动一个应用程序进程树的命令的完整路径。此文件不能包含空行。需要在 Agent Builder“配置”屏幕上的“启动命令”文本字段中指定此文本文件。
确保此文件不具有执行权限,从而使 Agent Builder 可以识别此文件。此文件的用途是从包含多个命令的单一可执行脚本启动多个进程树。如果此文本文件具有执行权限,则出现在群集上的资源不会带有任何问题或错误。但是,将在一个 PMF 标记下启动所有命令。结果是 PMF 不能分别监视和重新启动每个进程树。
本节介绍了如何使用 Agent Builder。此外,本节还包括使用 Agent Builder 之前您必须完成的任务。本节还介绍了在生成资源类型代码之后充分利用 Agent Builder 的方法。
包括以下主题:
使用 Agent Builder 之前,必须确定要实现高可用性或可伸缩性的应用程序是否满足所需条件。Agent Builder 无法执行仅基于应用程序的运行时特性的分析。分析应用程序的适用性提供了关于此主题的更多信息。
Agent Builder 并不总是能够为应用程序创建完整的资源类型。但是,多数情况下,Agent Builder 至少可以提供部分解决方案。例如,更复杂的应用程序可能需要 Agent Builder 在默认情况下不生成的其他代码。其他代码的示例包括添加其他属性的验证检查的代码,或调谐 Agent Builder 不显示的参数的代码。在这些情况下,您必须更改所生成的源代码或 RTR 文件。Agent Builder 正是提供了这种灵活性。
Agent Builder 将注释置于生成的源代码中的特定点处,您可以在此处添加您自己的资源类型代码。更改源代码之后,您可以使用 Agent Builder 生成的 make 程序的描述文件重新编译该源代码并重新生成资源类型软件包。
即使在整个编写资源类型代码的过程中都没有使用 Agent Builder 生成的任何代码,您也可以使用 Agent Builder 提供的 make 程序的描述文件和结构为您的资源类型创建 Solaris 软件包。
Agent Builder 不需要专门进行安装。SUNWscdev 软件包中包含 Agent Builder,默认情况下,安装 Sun Cluster 软件时安装此软件包。《Sun Cluster 软件安装指南(适用于 Solaris OS)》中介绍了这方面的更多信息。
使用 Agent Builder 之前,请检验是否满足以下要求:
$PATH 变量中包含 Java 运行时环境。Agent Builder 基于 Java 开发工具包(不低于 1.3.1 版)进行工作。如果 $PATH 变量中未包含 Java 开发工具包,Agent Builder 命令 (scdsbuilder) 将返回并显示错误消息。
已安装不低于 Solaris 8 OS 版本的开发者系统支持软件组。
$PATH 变量中包含 cc 编译器。Agent Builder 使用 $PATH 变量中第一处 cc 来识别用于生成资源类型的 C 二进制代码的编译器。如果 $PATH 中未包含 cc,则 Agent Builder 将禁用生成 C 代码的选项。请参见使用“创建”屏幕。
除了标准 cc 编译器,您还可以在 Agent Builder 中使用其他编译器。要使用其他编译器,请在 $PATH 中将符号链接 cc 更改为其他编译器的符号链接,例如 gcc。或者,将 make 程序的描述文件中的编译器定义(当前为 CC=cc)更改为其他编译器的完整路径。例如,在 Agent Builder 生成的 make 程序的描述文件中,将 CC=cc 更改为 CC=pathname/gcc。此种情况下,您不能直接运行 Agent Builder。而必须使用 make 和 make pkg 命令来生成数据服务代码和软件包。
Agent Builder 是一个包含两个步骤的向导,每个步骤都有对应的屏幕。Agent Builder 提供了以下两个屏幕,用来指导您完成创建新资源类型的过程:
“创建”屏幕。需要在此屏幕上提供关于要创建的资源类型的基本信息,例如其名称和生成的文件的工作目录。工作目录是您创建和配置资源类型模板的位置。还可以指定以下信息:
要创建的资源种类(可伸缩或故障转移)
基本应用程序是否为网络可识别(即,应用程序是否使用网络与其客户机进行通信)的应用程序
要生成的代码的类型(C、Korn shell [ksh] 或 GDS)
有关 GDS 的信息,请参见第 10 章,普通数据服务。您必须在此屏幕上提供所有信息并选择“创建”以生成相应的输出。然后,您就可以看到“配置”屏幕。
“配置”屏幕。在此屏幕上,必须指定可以传送到任何 UNIX shell 以启动基本应用程序的完整命令行。您还可以提供停止和探测应用程序的命令(可选操作)。如果您尚未指定这两个命令,则生成的输出将使用信号来停止应用程序并提供默认探测机制。有关探测命令的说明,请参见使用“配置”屏幕。通过“配置”屏幕还可以更改以下三个命令中每个命令的超时值:启动、停止、探测。
如果无法访问 Agent Builder 的 GUI 版本,可以通过命令行界面访问 Agent Builder。请参见使用 Agent Builder 的命令行版本的方法。
如果从现有资源类型的工作目录启动 Agent Builder,则 Agent Builder 将以现有资源类型的值初始化“创建”和“配置”屏幕。
通过键入以下命令启动 Agent Builder:
% /usr/cluster/bin/scdsbuilder |
将显示“创建”屏幕。
在字段中键入信息
浏览目录结构并选择一个文件或目录
选择一组互斥的单选按钮中的一个单选按钮,例如选择“可伸缩”或“故障转移”
选择“网络可识别”复选框将基本应用程序标识为网络可识别应用程序,或不选择此复选框将其标识为非网络可识别应用程序。
使用每个屏幕底部的各个按钮,您可以分别完成结束任务、进入上一屏或下一屏或退出 Agent Builder 的操作。Agent Builder 将在必要时亮显或灰显这些按钮。
例如,完成“创建”屏幕上的各个字段并选择所需选项后,如果单击屏幕底部的“创建”按钮,则“上一步”和“下一步”按钮将灰显,因为不存在上一个屏幕,而且在您完成此步骤之前也不能进入下一步。
Agent Builder 将在屏幕底部的“输出记录”区域中显示进度消息。Agent Builder 完成此步骤后,它将显示成功消息或警告消息。将突出显示“下一步”,或如果此屏幕是最后一屏,则仅突出显示“取消”。
您可以随时单击“取消”以退出 Agent Builder。
您可以在某些 Agent Builder 字段中键入信息。而其他字段则需要单击“浏览”以浏览目录结构并选择文件或目录。
单击“浏览”时,将显示一个与以下屏幕相似的屏幕。
双击某个文件夹以打开该文件夹。当将光标移动到某个文件上时,该文件的名称将显示在“文件名”字段中。在找到所需文件并将光标移动到该文件上后,单击“选择”。
如果正在浏览以查找目录,请将光标移动到所需的目录上,然后单击“打开”。如果该目录不包含子目录,则 Agent Builder 将关闭该浏览窗口并将已将光标移至其上的目录的名称放置在相应字段中。如果该目录具有子目录,请单击“关闭”关闭浏览窗口并重新显示上一屏。Agent Builder 将把已将光标移至其上的目录的名称放置在相应字段中。
“浏览”屏幕右上角的图标的作用如下:
图标 |
目的 |
---|---|
![]() |
此图标可使您在目录树中向上移动一级。 |
![]() |
此图标可使您返回主文件夹。 |
![]() |
此图标可用来在当前选定文件夹下创建新文件夹。 |
![]() |
此图标用于以后在不同视图之间进行切换。 |
Agent Builder 提供了“文件”和“编辑”下拉式菜单。
“装入资源类型”选项。装入现有资源类型。Agent Builder 提供了浏览屏幕,您可以从中选择现有资源类型的工作目录。如果资源类型存在于启动 Agent Builder 的目录中,则 Agent Builder 将自动载入此资源类型。通过“装入资源类型”选项,可以从任何目录启动 Agent Builder,并选择现有资源类型以用作创建新资源类型的模板。请参见重复使用使用 Agent Builder 创建的代码。
“退出”选项。退出 Agent Builder。您也可以单击“创建”或“配置”屏幕上的“取消”来退出 Agent Builder。
“清除输出日志”选项。清除输出日志中的信息。每当您选择“创建”或“配置”时,Agent Builder 都将向输出记录中附加状态消息。如果要不断地在 Agent Builder 中对源代码进行更改并重新生成输出,而且要隔离不同的状态消息,请在每次使用之前保存并清除日志文件。
“保存日志文件”选项。将日志输出保存到文件中。Agent Builder 提供了浏览屏幕,通过该屏幕可以选择目录并指定文件名。
创建资源类型的第一个步骤是完成“创建”屏幕(即启动 Agent Builder 后显示的屏幕)上的各项内容。下图显示键入了信息后的“创建”屏幕。
“创建”屏幕中包含以下字段、单选按钮和复选框:
“供应商名”。用于标识资源类型供应商的名称。通常是指定供应商的库存符号。但是,任何能够唯一标识供应商的名称都是有效的。仅可使用字母数字字符。
“应用程序名”。资源类型的名称。仅可使用字母数字字符。
供应商名称和应用程序名称合在一起组成资源类型的全名。从 Solaris 9 操作系统开始,供应商名称和应用程序名称的组合可以超过九个字符。但是,如果您使用的是早于 Solaris 9 的操作系统版本,则供应商名称和应用程序名称的组合不能超过九个字符。
“RT 版本”。生成的资源类型的版本。RT 版本用于区分同一基本资源类型的多个已注册版本或升级版本。
空格键
Tab
斜杠 (/)
反斜杠 (\)
星号 (*)
问号 (?)
逗号 (,)
分号 (;)
左方括号 ([)
右方括号 (])
“工作目录”。Agent Builder 在该目录下创建一个目录结构,用于包含为目标资源类型创建的所有文件。在任意一个工作目录中仅能创建一个资源类型。Agent Builder 将此字段初始化为可以从中启动 Agent Builder 的目录的路径。您还可以键入其他名称或使用“浏览”找到其他目录。
在工作目录下,Agent Builder 将使用资源类型的名称创建子目录。例如,如果 SUNW 是供应商名称,ftp 是应用程序名称,则 Agent Builder 将把此子目录命名为 SUNWftp。
Agent Builder 将在此子目录下放置目录资源类型的所有目录和文件。请参见Agent Builder 创建的目录结构。
“可伸缩”或“故障转移”。指定目标资源类型为“故障转移”或“可伸缩”。
“网络可识别”。指定基本应用程序是否支持网路,即它是否使用网络与客户机进行通信。选择“网络可识别”复选框以指定网络可识别,或不选择该复选框以指定非网络可识别。
"C" 和 "ksh"。指定生成的源代码所用的语言。尽管这些选项是互斥的,但是通过 Agent Builder,您可以使用 Korn shell 生成的代码创建资源类型,并再次使用相同的信息创建 C 生成的代码。请参见重复使用使用 Agent Builder 创建的代码。
"GDS"。指定此服务为通用数据服务。第 10 章,普通数据服务包含关于创建和配置通用数据服务的更多详细信息。
如果 $PATH 变量中不包含 cc 编译器,则 Agent Builder 将灰显 C 单选按钮并允许您选择 ksh 单选按钮。要指定其他编译器,请参见安装和配置 Agent Builder结尾处的注释。
指定所需信息后,请单击“创建”。屏幕底部的“输出记录”区域用来显示 Agent Builder 执行的操作。您可以从“编辑”菜单中选择“保存输出日志”来保存输出日志中的信息。
完成操作后,Agent Builder 将显示一条成功消息或警告消息。
如果 Agent Builder 不能完成此步骤,请查看输出日志中的详细信息。
如果 Agent Builder 成功完成此步骤,请单击“下一步”以显示“配置”屏幕。通过“配置”屏幕,您可以完成资源类型的生成。
虽然生成完整资源类型的过程只有两步,但是您也可以在完成第一步(创建)之后退出 Agent Builder,您已指定的信息或 Agent Builder 已完成的工作并不会丢失。请参见重复使用使用 Agent Builder 创建的代码。
Agent Builder 完成资源类型的创建后,如果您在“创建”屏幕上单击“下一步”,将显示如下图所示的“配置”屏幕。必须先创建资源类型才能访问“配置”屏幕。
“配置”屏幕上包含以下字段:
“启动命令”。可以传送到任意 UNIX shell 以启动基本应用程序的完整命令行。必须指定启动命令。您可以在提供的字段中键入该命令,也可以使用“浏览”找到包含用来启动应用程序的命令的文件。
完整的命令行中必须包含启动应用程序所需的所有内容,例如主机名、端口号、配置文件的路径。您还可以指定使用属性变量中介绍的属性变量。如果基于 Korn shell 的应用程序要求您在命令行上指定主机名,则可以使用 Agent Builder 定义的 $hostnames 变量。请参见使用 Agent Builder 基于 Korn Shell 的 $hostnames 变量。
请不要将命令置于双引号 (””) 之间。
如果基本应用程序具有多个独立的进程树(每一个进程树都在进程监视工具 (PMF) 控制下以其各自的标记来启动),则不能只指定一个命令。您必须创建包含多个单独命令(启动每个进程树)的文本文件,并在“启动命令”文本字段中指定此文件的路径。请参见Agent Builder 使用前须知。本节列出了此文件正确运行需要的一些特性。
“停止命令”。可以传送到任意 UNIX shell 以停止基本应用程序的完整命令行。您可以在提供的字段中键入该命令,也可以使用“浏览”找到包含用来停止应用程序的命令的文件。您还可以指定使用属性变量中介绍的属性变量。如果基于 Korn shell 的应用程序要求您在命令行上指定主机名,则可以使用 Agent Builder 定义的 $hostnames 变量。请参见使用 Agent Builder 基于 Korn Shell 的 $hostnames 变量。
此命令是可选的。如果不指定停止命令,则生成的代码将按以下步骤使用信号(包含在 Stop 方法中)来停止应用程序:
Stop 方法发送 SIGTERM 来停止应用程序,等待应用程序退出的时间长度为超时值的 80%。
如果 SIGTERM 信号未成功,则 Stop 方法将发送 SIGKILL 来停止应用程序,等待应用程序退出的时间长度为超时值的 15%。
如果 SIGKILL 不成功,则退出 Stop 方法(不成功)。余下的 5% 的超时值被认为是系统开销。
请确保该停止命令在应用程序完全停止之后返回。
“探测命令”。此命令是一个可定期运行的命令,用来检查应用程序的运行状况并返回介于 0(成功)和 100(完全失败)之间的退出状态值。此命令是可选的。您可以键入该命令的完整路径,也可以使用“浏览”找到包含用来探测应用程序的命令的文件。
通常,您需指定基本应用程序的简单客户机。如果不指定探测命令,则生成的代码将只是连接至资源使用的端口或与其断开连接。如果这样的连接和断开连接成功,则生成的代码将声明应用程序运行状况良好。您还可以指定使用属性变量中介绍的属性变量。如果基于 Korn shell 的应用程序要求您在命令行上的探测命令中指定主机名,则可以使用 Agent Builder 定义的 $hostnames 变量。请参见使用 Agent Builder 基于 Korn Shell 的 $hostnames 变量。
请不要将命令置于双引号 (””) 之间。
“超时”。每个命令的超时值(以秒为单位)。可以指定新值,或者接受 Agent Builder 提供的默认值。启动命令和停止命令的默认值为 300 秒,探测命令的默认值为 30 秒。
对于许多应用程序(特别是网络可识别的应用程序),必须通过命令行将应用程序在其上侦听和响应用户请求的主机名传送至该应用程序。多数情况下,主机名是必须在“配置”屏幕上为目标资源类型的启动、停止和探测命令指定的主机名参数。但是,应用程序侦听时所在的主机的主机名是特定于群集的。只有当资源在群集上运行时才能确定主机名。Agent Builder 生成资源类型代码时无法确定主机名。
为了解决此问题,Agent Builder 提供了 $hostnames 变量,您可以在命令行为启动、停止和探测命令指定此变量。
$hostnames 变量只适用于基于 Korn shell 的服务。不支持对基于 C 和 GDS 的服务使用 $hostnames 变量。
指定 $hostnames 变量的方法就像指定实际主机名一样,例如:
% /opt/network_aware/echo_server -p port-no -l $hostnames |
当目标资源类型的资源在群集上运行时,将用为资源配置的 LogicalHostname 或 SharedAddress 主机名替换 $hostnames 变量的值。为资源配置的主机名位于资源的 Network_resources_used 资源属性中。
如果配置的 Network_resources_used 属性具有多个主机名,则 $hostnames 变量将包含所有主机名,并用逗号将其隔开。
您还可以通过使用属性变量,从 RGM 框架恢复选定 Sun Cluster 资源类型、资源和资源组属性的值。Agent Builder 将为属性变量扫描启动、探测或停止命令字符串,并在执行命令之前用这些值替换变量。
基于 Korn shell 的服务不支持使用属性变量。
本节列出了可以使用的属性变量。附录 A,标准属性中介绍了 Sun Cluster 的资源类型、资源和资源组属性。
RS_CHEAP_PROBE_INTERVAL
RS_MONITOR_START_TIMEOUT
RS_MONITOR_STOP_TIMEOUT
RS_NAME
RS_NUM_RESTARTS
RS_RESOURCE_DEPENDENCIES
RS_RESOURCE_DEPENDENCIES_WEAK
RS_RETRY_COUNT
RS_RETRY_INTERVAL
RS_SCALABLE
RS_START_TIMEOUT
RS_STOP_TIMEOUT
RS_THOROUGH_PROBE_INTERVAL
SCHA_STATUS
RG_GLOBAL_RESOURCES_USED
RG_IMPLICIT_NETWORK_DEPENDENCIES
RG_MAXIMUM_PRIMARIES
RG_NAME
RG_NODELIST
RG_NUM_RESTARTS
RG_PATHPREFIX
RG_PINGPONG_INTERVAL
RG_RESOURCE_LIST
您可以在属性名称前面加百分号 (%) 来表示属性变量,如下例所示:
/opt/network_aware/echo_server -t %RS_STOP_TIMEOUT -n %RG_NODELIST
根据上面的示例,Agent Builder 可以解释这些属性变量,并使用以下值启动 echo_server 脚本:
/opt/network_aware/echo_server -t 300 -n phys-node-1,phys-node-2,phys-node-3
Agent Builder 将按如下方式解释属性变量的类型:
将整型替换为其实际值(例如,300)。
将布尔型替换为字符串 TRUE 或 FALSE。
将字符串型替换为实际字符串(例如,phys-node-1)。
将字符串型列表替换为列表中的所有成员,每个字符串由逗号隔开(例如,phys-node-1,phys-node-2,phys-node-3)。
将整型列表替换为列表中的所有成员,每个整数由逗号隔开(1,2,3)。
枚举类型将按字符串格式被替换为该类型本身的值。
Agent Builder 使您可以通过以下方式重复使用已完成的工作:
您可以克隆使用 Agent Builder 创建的现有资源类型。
您可以编辑 Agent Builder 生成的源代码,并重新编译该代码来创建新的软件包。
请按照以下步骤克隆由 Agent Builder 生成的现有资源类型。
使用以下方法之一可将现有资源类型装入到 Agent Builder 中:
在使用 Agent Builder 创建的现有资源类型的工作目录中启动 Agent Builder。确保工作目录中包含 rtconfig 文件。Agent Builder 将在“创建”和“配置”屏幕装入该资源类型的值。
使用“文件”下拉式菜单中的“装入资源类型”选项。
在“创建”屏幕上更改工作目录。
必须使用“浏览”按钮来选择目录。仅键入新目录的名称是不够的。选择目录后,Agent Builder 将重新启用“创建”按钮。
对现有资源类型进行所需更改。
您可能更改生成该资源类型的代码的类型。例如,如果您最初创建了资源类型的 Korn shell 版本,却发现超时并需要 C 版本,则可以进行以下操作:
装入现有的 Korn shell 资源类型。
将输出语言更改为 C。
单击“创建”以使 Agent Builder 生成该资源类型的 C 版本。
创建克隆的资源类型。
为了简化创建资源类型的过程,Agent Builder 限制您可以指定的信息量,从而限制了生成的资源类型的范围。因此,要添加更多的复杂功能,您需要修改已生成的源代码或 RTR 文件。其他功能的示例包括添加其他属性的验证检查的代码,或调谐 Agent Builder 不显示的参数的代码。
源文件位于 install-directory/rt-name/src 目录中。Agent Builder 将注释嵌入在源代码中,您可以在这些注释中添加代码。这些注释的格式如下(针对 C 代码):
/* User added code -- BEGIN vvvvvvvvvvvvvvv */ /* User added code -- END ^^^^^^^^^^^^^^^ */
这些注释与 Korn shell 源代码中的相同,除了用注释标记 (#) 表示注释的开始。
例如,rt-name.h 声明了不同程序使用的所有实用程序函数。声明列表的结尾处是注释,通过这些注释您可以声明已添加到代码中的其他函数。
Agent Builder 还可以使用相应的目标在 install_directory/rt_name/src 目录中生成 make 程序的描述文件。使用 make 命令重新编译源代码。使用 make pkg 命令重新生成资源类型软件包。
RTR 文件位于 install-directory/rt-name/etc 目录中。您可以使用标准的文本编辑器编辑 RTR 文件。有关 RTR 文件的更多信息,请参见设置资源和资源类型属性。有关属性的信息,请参见附录 A,标准属性。
Agent Builder 的命令行版本的使用过程与 GUI 相同。但是,与在 GUI 中键入信息不同,您需要把参数传送到 scdscreate 和 scdsconfig 命令。有关更多信息,请参见 scdscreate(1HA) 和 scdsconfig(1HA) 手册页。
请按照以下步骤使用 Agent Builder 的命令行版本。
使用 scdscreate 来创建 Sun Cluster 资源类型模板,以便使应用程序具有高可用性和可伸缩性。
使用 scdsconfig 配置您用 scdscreate 创建的资源类型模板。
您可以指定属性变量。使用属性变量中介绍了属性变量。
将目录更改为工作目录中的 pkg 子目录。
使用 pkgadd 命令来安装用 scdscreate 创建的软件包。
(可选的)编辑已生成的源代码
运行启动脚本。
Agent Builder 将创建一个目录结构,用于存储它为目标资源类型生成的所有文件。在“创建”屏幕上可以指定工作目录。必须为要开发的所有其他资源类型分别指定它们的安装目录。在工作目录下,Agent Builder 将创建一个子目录,其名称由供应商名称和资源类型名称串联而成。例如,如果您将 SUNW 指定为供应商的名称并创建了一个名为 ftp 的资源类型,则 Agent Builder 将在工作目录下创建一个名为 SUNWftp 的目录。
在此子目录下,Agent Builder 创建下表中列出的目录并在它们中分别放入应放入的内容。
目录名称 |
内容 |
|
---|---|---|
bin |
如果用 C 输出,则将包含编译源文件得到的二进制文件。对于 Korn shell 输出,包含的文件与 src 目录中的文件相同。 |
|
etc |
包含 RTR 文件。Agent Builder 并置供应商名称和应用程序名称,两者之间用句点 (.) 进行分隔,从而构成 RTR 文件名。例如,如果供应商名为 SUNW 同时资源类型的名称为 ftp,则 RTR 文件的名称为 SUNW.ftp。 |
|
man |
将包含 start、stop 和 remove 实用程序脚本的定制手册页,例如 startftp(1M)、stopftp(1M) 和 removeftp(1M)。
要查看这些手册页,请在指定相应路径时使用 man -M 选项。例如:
|
|
pkg |
包含最终的 Solaris 软件包,其中包括已创建的数据服务。 |
|
src |
包含 Agent Builder 生成的源文件。 |
|
util |
包含 Agent Builder 生成的 start、stop 和 remove 实用程序脚本。请参见Sun Agent Builder 创建的实用程序脚本和手册页。Agent Builder 将应用程序名称附加到以上各个脚本名称上;例如,startftp、stopftp 和 removeftp。 |
用来管理群集上的资源组并最终管理资源的资源组管理器 (RGM)。RGM 基于回调模型进行工作。特定事件发生时(例如节点故障),RGM 将为在受影响的节点上运行的每个资源调用资源类型的方法。例如,RGM 将调用 Stop 方法来停止在受影响节点上运行的资源,然后再调用该资源的 Start 方法以在其它节点上启动该资源。有关此模型的更多信息,请参见资源组管理器模型、回调方法和 rt_callbacks(1HA) 手册页。
为了支持该模型,Agent Builder 将在 install-directory/rt-name/bin 目录中生成八个可执行的 C 程序或 Korn shell 脚本。这些程序或 shell 脚本做为回调方法。
严格地说,实现故障监视器的 rt-name_probe 程序不是回调程序。RGM 并不直接调用 rt-name_probe,而是调用 rt-name_monitor_start 和 rt-name_monitor_stop。然后这两种方法通过调用 rt-name_probe 来启动和停止故障监视器。
下面是 Agent Builder 生成的八种方法:
rt-name_monitor_check
rt-name_monitor_start
rt-name_monitor_stop
rt-name_probe
rt-name_svc_start
rt-name_svc_stop
rt-name_update
rt-name_validate
有关每种方法的特定信息,请参见 rt_callbacks(1HA) 手册页。
在 install-directory/rt-name/src 目录(C 输出)中,Agent Builder 将生成以下文件:
头文件 (rt-name.h)
包含所有方法都通用的代码的源文件 (rt-name.c)
通用代码的对象文件 (rt-name.o)
每种方法的源文件 (*.c)
每种方法的对象文件 (*.o)
Agent Builder 将 rt-name.o 文件链接至每个方法 .o 文件以在 install-directory/rt-name/bin 目录中创建可执行文件。
对于 Korn shell 输出,install-directory/rt-name/bin 和 install-directory/rt-name/src 目录相同。每个目录都包含八个可执行脚本,分别对应七个回调方法和 Probe 方法。
Korn shell 输出包括两个已编译的实用程序,gettime 和 gethostnames。特殊回调方法需要使用这些方法来获取时间和进行探测。
您可以编辑源代码并运行 make 命令来重新编译代码,并在完成时运行 make pkg 命令以生成新的软件包。为支持对源代码进行更改,Agent Builder 在源代码中的恰当位置嵌入了注释,您可以在这些注释中添加代码。请参见编辑已生成的源代码。
生成资源类型并将其软件包安装到群集上之后,您还必须获取在群集上运行的该资源类型的实例(资源)。通常,可以使用管理命令或 SunPlex Manager 获取实例。但是为了方便起见,Agent Builder 将生成用于启动目标资源类型的资源的定制实用程序脚本,还将生成用于停止和删除该资源的脚本。位于 install-directory/rt-name/util 目录中的这三个脚本具有以下作用:
启动脚本。注册资源类型和创建必要的资源组和资源。此脚本还可以创建网络地址资源(LogicalHostname 或 SharedAddress ),使用该资源可以使应用程序与网络上的客户机进行通信。
停止脚本。 停止资源。
删除脚本。撤消启动脚本的工作。即,此脚本用来停止并删除系统中的资源、资源组和目标资源类型。
您只能使用与启动脚本启动的资源相对应的删除脚本,因为这些脚本使用了内部约定来命名资源和资源组。
Agent Builder 通过将应用程序名称附加到脚本名称来命名这些脚本。例如,如果应用程序名为 ftp,则脚本名分别为 startftp、stopftp 和 removeftp。
在 install-directory/rt-name/man/man1m 中,Agent Builder 为每个实用程序脚本都提供了手册页。启动这些脚本之前,应阅读这些手册页,由于它们记录了需要传送给脚本的参数。
要查看这些手册页,请通过使用 -M 选项和 man 命令来指定此 man 目录的路径。例如,如果 SUNW 为供应商,ftp 为应用程序名,则键入以下命令以查看 startftp(1M) 手册页:
% man -M install-directory/SUNWftp/man startftp |
手册页公用程序脚本也可供群集管理员使用。如果 Agent Builder 生成的软件包已安装在群集上,则实用程序脚本的手册页将位于 /opt/rt-name/man 目录中。例如,键入以下命令可以查看 startftp(1M) 手册页:
% man -M /opt/SUNWftp/man startftp |
Agent Builder 将支持文件(例如 pkginfo、postinstall、postremove 和 preremove)置于 install-directory/rt-name/etc 目录中。此目录还包含资源类型注册 (RTR) 文件。RTR 文件将声明目标资源类型可用的资源和资源类型属性,并在群集中注册资源时初始化属性值。有关更多信息,请参见设置资源和资源类型属性。RTR 文件被命名为 vendor-name.resource-type-name,例如,SUNW.ftp。
您可以在不重新编译源代码的情况下使用标准的文本编辑器编辑此文件并进行更改,但是,您必须使用 make pkg 命令重建软件包。
install-directory/rt-name/pkg 目录包含 Solaris 软件包。软件包的名称是供应商名和应用程序名的串联,例如 SUNWftp。在 install-directory/rt-name/src 中的 make 程序的描述文件支持新软件包的创建。例如,如果您对源文件进行了更改并重新编译了其代码,或对软件包实用程序脚本进行了更改,则可以使用 make pkg 命令创建新软件包。
如果您尝试从多个节点同时运行 pkgrm 命令来从群集中删除一个软件包,则该命令将失败。您可以采用以下两种方法之一来解决此问题:
在群集的一个节点上运行 remove rt-name 脚本,然后在任意节点上运行 pkgrm 命令。
在群集的管理所有必要清除操作的那个节点上运行 pkgrm 命令。然后,在其余节点上同时(如果必要)运行 pkgrm 命令。
如果由于在多个节点上尝试同时运行 pkgrm 而使该命令失败,请在一个节点上再次运行该命令。然后,在其余节点运行该命令。
如果在工作目录中生成 C 或 Korn shell 源代码,则 Agent Builder 将生成名为 rtconfig 的配置文件。此文件包含您在“创建”和“配置”屏幕上指定的信息。如果从现有资源类型的工作目录启动 Agent Builder,则 Agent Builder 将读取 rtconfig 文件。Agent Builder 将把您为现有资源类型提供的信息填充到“创建”和“配置”屏幕中。如果您通过从“文件”下拉式菜单中选择“装入资源类型”来装入现有资源类型,则 Agent Builder 将以相似的方式进行工作。当克隆现有资源类型时,此功能非常有用。请参见重复使用使用 Agent Builder 创建的代码。
Agent Builder 的 Cluster Agent 模块为 NetBeansTM 模块。此模块提供了 GUI,使用此 GUI 和 Sun Java Studio(以前的 Sun ONE Studio)产品可以为 Sun Cluster 软件创建资源类型。
Sun Java Studio 文档中包含有关如何设置、安装和使用 Sun Java Studio 产品的信息。可以在 http://wwws.sun.com/software/sundev/jde/documentation/index.html Web 站点找到此文档。
安装 Sun Cluster 软件时会同时安装 Cluster Agent 模块。Sun Cluster 安装工具将 Cluster Agent 模块文件 scdsbuilder.jar 置于 /usr/cluster/lib/scdsbuilder 中。要将 Cluster Agent 模块与 Sun Java Studio 软件配套使用,您需要创建指向此文件的符号链接。
在要运行 Cluster Agent 模块的系统上,必须已安装 Sun Cluster 和 Sun Java Studio 产品以及 Java 1.4,并确保可用。
允许所有用户或只有您能够使用 Cluster Agent 模块。
要使所有用户均能使用该模块,您需要成为超级用户或与此相当的身份,然后在全局模块目录中创建符号链接。
# cd /opt/s1studio/ee/modules # ln -s /usr/cluster/lib/scdsbuilder/scdsbuilder.jar |
如果已将 Sun Java Studio 软件安装在 /opt/s1studio/ee 之外的目录,请用您所用目录的路径代替此目录路径。
如果希望只有您自己可以使用该模块,请在您的 modules 子目录中创建符号链接。
% cd ~your-home-dir/ffjuser40ee/modules % ln -s /usr/cluster/lib/scdsbuilder/scdsbuilder.jar |
停止并重新启动 Sun Java Studio 软件。
以下各个步骤介绍了如何从 Sun Java Studio 软件启动 Cluster Agent 模块。
Sun Java Studio 文档中包含有关如何设置、安装和使用 Sun Java Studio 产品的信息。可以在 http://wwws.sun.com/software/sundev/jde/documentation/index.html Web 站点找到此文档。
从 Sun Java Studio 的“文件”菜单中选择“新建”,或单击工具栏上相应的图标:
将显示“新建向导”屏幕。
在“选择模板”窗格中,向下滚动(如果必要)并单击“其他”文件夹旁边的钥匙符号。
将打开“其他”文件夹。
从“其他”文件夹中选择 "Sun Cluster Agent Builder" 然后单击“下一步”。
Sun Java Studio 的 Cluster Agent 模块将启动。将显示第一个“新建向导 - Sun Cluster Agent Builder”屏幕。
Cluster Agent 模块的使用方法与 Agent Builder 软件的使用方法相同,而且它们的界面也是相同的。例如,以下各图分别显示了 Agent Builder 软件的“创建”屏幕和 Cluster Agent 模块中的第一个“新建向导 - Sun Cluster Agent Builder”屏幕,它们包含有相同的字段和选项。
虽然 Cluster Agent 模块和 Agent Builder 很相似,但是两者之间仍然存在微小的区别:
在 Cluster Agent 模块中,仅在您单击位于第二个“新建向导 - Sun Cluster Agent Builder”屏幕上的“完成”按钮之后才能创建和配置资源类型。当您单击位于第一个“新建向导 - Sun Cluster Agent Builder”屏幕上的“下一步”后,该资源类型实际上并没有创建。
在 Agent Builder 中,在“创建”屏幕上单击“创建”时将立即创建资源类型。此外,在“配置”屏幕上单击“配置”时,将立即配置资源类型。
在 Sun Java Studio 产品中,显示在 Agent Builder 的“输出记录”区域中的信息将显示在一个单独的窗口中。