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

RMAPI 存取方法

API 提供可用来存取资源、资源类型和资源组特性以及其它群集信息的函数。 这些函数以 shell 命令和 C 函数的形式提供,从而使资源类型提供者可以实现 shell 脚本或 C 程序形式的控制程序。

RMAPI Shell 命令

shell 命令用于资源类型的回叫方法的 shell 脚本实现,这些资源类型表示群集的 RGM 所控制的服务。 您可以使用这些命令执行以下操作:


注意:

虽然本节中提供了对 shell 命令的简单介绍,但是 1HA 一节中各个手册页提供的信息才是有关 shell 命令的权威参考。 每个命令都对应一个具有相同名称的手册页,除非另外注明。


RMAPI 资源命令

您可以使用下面这些命令存取资源的信息或设置资源的 StatusStatus_msg 特性。

scha_resource_get

存取关于 RGM 所控制的资源和资源类型的信息。它提供的信息与 scha_resource_get () 函数提供的相同。

scha_resource_setstatus

设置 RGM 所控制的资源的 StatusStatus_msg 特性。 资源的监视器用它来指示监视器探测到的资源状态。 它提供的功能与 scha_resource_setstatus() C 函数相同。


注意:

虽然对于资源监视器来说 scha_resource_setstatus() 有特定用途,但是任何程序都可以调用该函数。


资源类型命令

下面的命令用来存取使用 RGM 登记的资源类型的信息。

scha_resourcetype_get

此命令提供与 scha_resourcetype_get() C 函数相同的功能。

资源组命令

您可以使用下面这些命令存取资源组的信息或重新启动资源组。

scha_resourcegroup_get

存取关于 RGM 所控制的资源组的信息。 此命令提供与 scha_resourcetype_get() C 函数相同的功能。

scha_control

请求重新启动 RGM 所控制的资源组或将其重定位到其它节点。 此命令提供与 scha_control() C 函数相同的功能。

群集命令

下面的命令用来存取有关群集的信息,例如节点名称、节点 ID、节点状态、群集名称、资源组等。

scha_cluster_get

此命令提供与 scha_cluster_get() C 函数相同的信息。

C 函数

C 函数用于资源类型的回叫方法的 C 程序实现,该资源类型表示群集的 RGM 所控制的服务。 您可以使用这些函数执行以下操作:


注意:

虽然本节中提供了对 C 函数的简单说明,但是各个 (3HA) 手册页中提供的信息才是有关 C 函数的权威参考。 每个函数都对应一个具有相同名称的手册页,除非另外注明。 有关 C 函数的输出变量和返回代码的信息,请参阅 scha_calls( 3HA) 手册页。


资源函数

下面这些函数用来存取关于 RGM 所管理的资源的信息或用来指示监视器探测到的资源状态。

scha_resource_open()scha_resource_get ()scha_resource_close()

这些函数共同用于存取有关 RGM 所管理的资源的信息。 scha_resource_open() 函数用来初始化对资源的存取并返回 scha_resource_get () 的句柄,用于存取资源信息。 scha_resource_close() 函数可使该句柄无效并释放为 scha_resource_get() 的返回值分配的内存。

scha_resource_open() 返回资源的句柄后,通过群集重新配置或管理操作,可以更改资源; 在这种情况下,scha_resource_get() 通过该句柄获得的信息可能不准确。 对资源进行群集重新配置或管理操作时,RGM 将向 scha_resource_get () 返回 scha_err_seqid 错误代码,以表明该资源的信息可能已更改。 这是一个非致命性错误消息;函数将成功返回。 您可以选择忽略该消息并接受返回的信息;您也可以关闭当前句柄并打开一个新的句柄,以存取该资源的信息。

在单个手册页中描述了这三个函数。 您可以通过以下任意一个函数存取此手册页:scha_resource_open(3HA)scha_resource_get(3HA)scha_resource_close(3HA)

scha_resource_setstatus()

设置 RGM 所控制的资源的 StatusStatus_msg 特性。 资源的监视器使用此函数指示该资源的状态。


注意:

虽然对于资源监视器来说 scha_resource_setstatus() 有特定用途,但是任何程序都可以调用该函数。


资源类型函数

下面这些函数共同用于存取通过 RGM 登记的资源类型的信息。

scha_resourcetype_open()scha_resourcetype_get()scha_resourcetype_close()

scha_resourcetype_open() 函数用来初始化对资源类型的存取并返回 scha_resourcetype_get () 的句柄,用于存取资源类型的信息。 scha_resourcetype_close() 函数可使该句柄无效并释放为 scha_resourcetype_get() 的返回值分配的内存。

scha_resourcetype_open() 返回资源类型的句柄后,通过群集重新配置或管理操作,可以更改资源类型;在这种情况下,scha_resourcetype_get() 通过该句柄获得的信息可能不准确。 对资源类型进行群集重新配置或管理操作时,RGM 将向 scha_resourcetype_get() 返回 scha_err_seqid 错误代码,以表明该资源类型的信息可能已更改。 这是一个非致命性错误消息;函数将成功返回。 您可以选择忽略该消息并接受返回的信息;您也可以关闭当前句柄并打开一个新的句柄,以存取关于该资源类型的信息。

在单个手册页中描述了这三个函数。 您可以通过以下任意一个函数存取此手册页:scha_resourcetype_open(3HA)scha_resourcetype_get(3HA)scha_resourcetype_close(3HA)

资源组函数

您可以通过下面这些函数存取资源组信息或重新启动该资源组。

scha_resourcegroup_open(3HA)scha_resourcegroup_get(3HA)scha_resourcegroup_close(3HA)

这些函数共同用于存取有关 RGM 所管理的资源组的信息。 scha_resourcegroup_open() 函数用来初始化对资源组的存取并返回 scha_resourcegroup_get () 的句柄,用于存取资源组信息。 scha_resourcegroup_close() 函数可使该句柄无效并释放为 scha_resourcegroup_get() 的返回值分配的内存。

可以在 scha_resourcegroup_open() 返回该资源的句柄后通过群集重新配置或管理操作更改资源类型,这时 scha_resourcegroup_get() 通过该句柄获得信息可能会不准确。 对资源组进行群集重新配置或管理操作时,RGM 将向 scha_resourcegroup_get () 返回 scha_err_seqid 错误代码,以表明该资源组的信息可能已更改。 这是一个非致命性错误消息;函数将成功返回。 您可以选择忽略该消息并接受返回的信息;您也可以关闭当前句柄并打开一个新的句柄,以存取关于该资源组的信息。

scha_control(3HA)

请求重新启动 RGM 所控制的资源组或将其重定位到其它节点。

群集函数

下面这些新函数用来存取或返回群集的信息。

scha_cluster_open(3HA)scha_cluster_get(3HA)scha_cluster_close(3HA)

这些函数共同用来存取群集信息,例如节点名称、节点 ID 和节点状态、群集名称、资源组等。

可以在 scha_cluster_open() 返回该资源的句柄后通过群集重新配置或管理操作更改资源,这时 scha_cluster_get() 通过该句柄获得信息可能会不准确。 对群集进行重新配置或管理操作时,RGM 将向 scha_cluster_get() 返回 scha_err_seqid 错误代码,以表明该群集的信息可能已更改。 这是一个非致命性错误;函数将成功返回。 您可以选择忽略该消息并接受返回的信息;您也可以关闭当前句柄并打开一个新的句柄,以存取关于该群集的信息。

scha_cluster_getlogfacility(3HA)

返回用作群集记录的系统记录工具的数量。 使用返回值和 Solaris syslog() 函数将事件和状态消息记录到群集记录中。

scha_cluster_getnodename(3HA)

返回在其上调用该函数的群集节点的名称。

公用程序函数

此函数用来将错误代码转换成错误消息。

scha_strerror(3HA)

将某个 scha_ 函数返回的错误代码转换成相应的错误消息。 使用此函数和 logger 可以将消息记录到系统日志 (syslog) 中。