Sun Cluster 数据服务开发者指南(适用于 Solaris OS)

使用 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

Agent Builder 不需要专门进行安装。Agent Builder 已包括在 SUNWscdev 软件包中,缺省情况下,该软件包将被作为标准的 Sun Cluster 软件安装的一部分进行安装。Sun Cluster 软件安装指南(适用于 Solaris OS)中介绍了这方面的详细信息。

使用 Agent Builder 前,请检验以下信息:


注意 –

除了标准 cc 编译器之外,您可以将其他编译器与 Agent Builder 一起使用。要使用其他编译器,请在 $PATH 中创建从 cc 到其他编译器(例如 gcc)的符号链接。或者,将 makefile 中的编译器定义(当前为 CC=cc)更改为其他编译器的完整路径。例如,在 Agent Builder 生成的 makefile 中,将 CC=cc 更改为 CC=路径名/gcc。在此情况下,您不能直接运行 Agent Builder,而必须要使用 makemake pkg 命令生成数据服务代码和软件包。


Agent Builder 屏幕

Agent Builder 是一个包含两个步骤的向导,每个步骤都有对应的屏幕。Agent Builder 提供了以下两个屏幕,用来帮助您完成创建新资源类型的过程。

  1. 创建。可在此屏幕上提供关于要创建的资源类型的基本信息,例如,该资源类型的名称和用于保存生成的文件的工作目录。工作目录是您创建和配置资源类型模板的位置。您还需要确定要创建的资源的种类(可伸缩或故障转移)、基本应用程序是否支持网络(即该应用程序是否使用网络与它的客户机进行通信)以及要生成的代码的类型(C、Korn shell [ksh] 或 GDS)。有关 GDS 的更多信息,请参见第 10 章,普通数据服务。必须提供此屏幕上提示的所有信息并选择“创建”以便生成相应的输出。然后,您就可以看到“配置”屏幕。

  2. 配置。在此屏幕上必须指定可以传递给任何 UNIX® shell 的完整的命令行以启动基本应用程序。您还可以提供停止和探测应用程序的命令(可选操作)。如果不指定这些命令,则生成的输出结果将使用信号停止应用程序并提供缺省的探测机制。请参见使用“配置”屏幕中对探测命令的说明。此屏幕还使您可以分别更改这三个命令的超时值。

启动 Agent Builder


注意 –

如果不能访问 Agent Builder 的图形用户界面版本,则可以通过命令行界面访问 Agent Builder。请参见使用 Agent Builder 的命令行版本的方法



注意 –

如果是从现有资源类型的工作目录启动 Agent Builder,则“创建”和“配置”屏幕将使用现有资源类型的值作为初始值。


请键入以下命令来启动 Agent Builder:


% /usr/cluster/bin/scdsbuilder

将显示“创建”屏幕。

图 9–1 “创建”屏幕

标题为“SunPlex 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 后显示的屏幕)上的各项内容。下图显示的是已在各个字段输入信息的“创建”屏幕。

图 9–2 “创建”屏幕

显示已输入信息的“创建”屏幕的对话框

“创建”屏幕中包含以下字段、单选按钮和复选框:


注意 –

如果在 $PATH 中没有包括 cc 编译器,则 Agent Builder 将禁用 "C" 单选按钮,而允许您选择 "ksh" 单选按钮。要指定其他编译器,请参见安装和配置 Agent Builder结尾处的说明。


输入必需的信息后,请单击“创建”。屏幕底部的“输出日志”窗口用来显示 Agent Builder 执行的操作。您可以从“编辑”菜单中选择“保存输出日志”来保存输出日志中的信息。

完成操作后,Agent Builder 将显示一条成功消息或警告消息。


注意 –

虽然生成完整的资源类型需要两步才能完成,但是您可以在完成第一步(创建)后就退出 Agent Builder,这样做既不会丢失已输入的信息也不会丢失 Agent Builder 已完成的工作。请参见重复使用完成的工作


使用“配置”屏幕

“配置”屏幕

在 Agent Builder 完成创建资源类型的操作后,在“创建”屏幕上选择“下一步”,将会出现“配置”屏幕(如下图所示)。必须先创建资源类型才能存取“配置”屏幕。

图 9–3 “配置”屏幕

显示“配置”屏幕的对话框

“配置”屏幕上包含以下字段:

使用 Agent Builder 提供的 适用于 Korn Shell 的 $hostnames 变量

对于许多应用程序,尤其是支持网络的应用程序而言,必须将应用程序侦听时所在的和响应用户请求的主机的主机名通过命令行传递给应用程序。大多数情况下,必须为目标资源类型的启动、停止和探测命令指定主机名参数(在“配置”屏幕上)。但是,应用程序侦听时所在的主机的主机名是特定于群集的。主机名是在群集上运行资源时才确定的,在 Agent Builder 生成资源类型代码时,并不能确定主机名。

要解决此问题,Agent Builder 提供了您可以在启动、停止和探测命令的命令行中指定的 $hostnames 变量。


注意 –

$hostnames 变量只适用于基于 Korn shell 的服务。不支持对基于 C 和 GDS 的服务使用 $hostnames 变量。


指定 $hostnames 变量的方法就像指定实际主机名一样,例如:


% /opt/network_aware/echo_server -p port_no -l $hostnames

如果目标资源类型的资源在群集上运行,则为该资源配置的 LogicalHostnameSharedAddress 主机名(在该资源的 Network_resources_used 资源特性中)将替换 $hostnames 变量的值。

如果配置的是包含多个主机名的 Network_resources_used 特性,则 $hostnames 变量中将包含所有主机名(用逗号分开各主机名)。

特性变量

您可以使用特性变量从 RGM 框架中检索选中的 Sun Cluster 资源、资源类型和资源组特性的值。Agent Builder 将在启动、探测或停止脚本中扫描特性变量,并在 Agent Builder 启动脚本前用这些变量的值替换这些变量。


注意 –

基于 Korn shell 的服务不支持使用特性变量。


特性变量列表

以下列表列出了可以在脚本中使用的特性变量。附录 A,标准特性中介绍了 Sun Cluster 资源、资源类型和资源组特性。

以下列表列出了资源特性变量:

以下列表列出了资源类型特性变量:

以下列表列出了资源组特性变量:

特性变量的语法

表示特性变量的方法是在特性名之前加上一个百分号 (%),如以下示例所示。


# /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 替换特性变量的方式

以下列表说明了 Agent Builder 如何解释各类型的特性变量:

重复使用完成的工作

使用 Agent Builder,您可以通过以下多种方式重复使用已完成的工作:

克隆现有的资源类型的方法

请按照一下步骤克隆已由 Agent Builder 生成的现有资源类型。

  1. 使用以下方法之一可将现有资源类型装入到 Agent Builder 中:

    • 从现有资源类型(用 Agent Builder 创建的资源类型)的工作目录(即包含 rtconfig 文件的目录)中启动 Agent Builder。Agent Builder 将在“创建”和“配置”屏幕装入该资源类型的值。

    • 从“文件”下拉菜单中选择“装入资源类型”选项。

  2. 在“创建”屏幕上更改工作目录。

    必须使用“浏览”按钮来选择目录。仅键入新目录的名称是不够的。选择目录后,Agent Builder 将重新启用“创建”按钮。

  3. 进行更改。

    您可以使用此步骤来更改该资源类型的生成代码的类型。例如,如果原来创建的是 Korn shell 版本的资源类型,但是过了一段时间发现需要 C 版本的资源类型,则可以装入现有的 Korn shell 资源类型,并将输出语言更改为 C 语言,然后使用 Agent Builder 创建 C 版本的资源类型。

  4. 创建克隆的资源类型。

    单击“创建”按钮创建该资源类型。单击“下一步”将显示“配置”屏幕。单击“配置”按钮以配置该资源类型,然后单击“取消”以完成操作。

编辑已生成的源代码

为使创建资源类型的过程保持简单,Agent Builder 将限制输出数量,这必将限定已生成的资源类型的范围。因此,为了添加更复杂的特征(例如附加特性的验证检查)或调整 Agent Builder 未提供的参数,您需要修改已生成的源代码或 RTR 文件。

源文件位于 install_directory /rt_name/src 目录中。在源代码中,Agent Builder 在您可以添加代码的位置嵌入了注释。这些注释的格式如下(针对 C 代码):


/* 用户添加的代码 -- 开始 vvvvvvvvvvvvvvv */ 
/* 用户添加的代码 -- 结束 ^^^^^^^^^^^^^^^ */


注意 –

除了 Korn shell 规定以井号 (#) 表示注释的开始外,以上这些注释与 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 的命令行版本的方法

Agent Builder 的命令行版本也采用与图形用户界面版本相同的基本过程。但是,与在图形用户界面上输入信息不同,您需要将参数传递给命令 scdscreatescdsconfig。请参见scdscreate(1HA)scdsconfig(1HA)手册页。

按照以下步骤使用 Agent Builder 的命令行版本:

  1. 使用 scdscreate 来创建 Sun Cluster 资源类型模板,以便使应用程序具有高可用性和可伸缩性。

  2. 使用 scdsconfig 来配置您用 scdscreate 所创建的资源类型模板。

    您可以指定特性变量。在特性变量中介绍了特性变量。

  3. 将目录更改为工作目录中的 pkg 子目录。

  4. 使用 pkgadd 命令来安装用 scdscreate 创建的软件包。

  5. 如果需要,可以编辑已生成的源代码。

  6. 运行启动脚本。