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

GDS 概述

GDS 是一种机制,它将简单的、能支持网络的应用程序插入 Sun Cluster 资源组管理框架中,从而使它们具有高可用性或可伸缩性。 此机制不需要为代理编写代码,而编写代码是使应用程序具有高可用性或可伸缩性的通常做法。

GDS 是一项单独的、预编译的数据服务。 您不能修改预编译的数据服务及其组件、回叫方法 (rt_callbacks (1HA)) 实现和资源类型登记文件 (rt_reg( 4))。

预编译的资源类型

普通数据服务资源类型 SUNW.gds 包含在 SUNWscgds 软件包中。 scinstall(1M) 公用程序将在群集安装过程中安装该软件包。 SUNWscgds 软件包中包含以下文件:


# pkgchk -v SUNWscgds 

/opt/SUNWscgds 
/opt/SUNWscgds/bin 
/opt/SUNWscgds/bin/gds_monitor_check 
/opt/SUNWscgds/bin/gds_monitor_start 
/opt/SUNWscgds/bin/gds_monitor_stop 
/opt/SUNWscgds/bin/gds_probe 
/opt/SUNWscgds/bin/gds_svc_start 
/opt/SUNWscgds/bin/gds_svc_stop 
/opt/SUNWscgds/bin/gds_update 
/opt/SUNWscgds/bin/gds_validate 
/opt/SUNWscgds/etc 
/opt/SUNWscgds/etc/SUNW.gds

使用 GDS 的原因

通过使用 SunPlex Agent Builder 生成的源代码模型(请参阅 scdscreate( 1HA))或标准的 Sun Cluster 管理命令,GDS 具有以下优点:

创建使用 GDS 的服务的方法

创建使用 GDS 的服务有两种方法:

GDS 和 SunPlex Agent Builder

使用 SunPlex Agent Builder 并选择 GDS 作为生成的源代码的类型。 使用用户所输入的内容来生成一组驱动脚本,而这些脚本将为给定的应用程序配置资源。

GDS 和标准的 Sun Cluster 管理命令

此方法使用 SUNWscgds 中预编译的数据服务代码,但要求系统管理员使用标准的 Sun Cluster 管理命令(scrgadm(1M)scswitch(1M))创建和配置资源。

选择创建基于 GDS 的服务时所应使用的方法

正如如何使用 Sun Cluster 管理命令来创建使用 GDS 且具有高可用性的服务标准的 Sun Cluster 管理命令(用于创建使用 GDS 的、可伸缩的服务)等过程所示,需要在键盘上输入大量的信息才能发出有关的 scrgadm 命令和 scswitch 命令。

如果将 GDS 和 SunPlex Agent Builder 结合使用,则可简化此过程,因为它会产生驱动脚本,而这些驱动脚本可发出 scrgadm 命令和 scswitch 命令。

何时不宜使用 GDS 机制

虽然使用 GDS 有很多优点,但还是存在不宜使用 GDS 机制的情况。 不宜 使用 GDS 机制的情况有:

所需的 GDS 特性

必须提供以下特性:

Start_command 扩展特性

Start_command 扩展特性中指定的 start 命令可启动应用程序。 它必须是一条具有完整变量的 UNIX 命令,可以直接传给某个 shell 来启动应用程序。

Port_list 特性

Port_list 特性可标识应用程序所侦听的端口列表。 Port_list 特性必须根据由 SunPlex Agent Builder 创建的启动脚本而指定,或是根据 scrgadm 命令而指定(如果您使用的是标准的 Sun Cluster 管理命令)。

可选的 GDS 特性

可选的 GDS 特性包括:

Network_resources_used 特性

此特性的缺省值为空。 如果应用程序需要绑定到一个或多个特定的地址,则必须指定此特性。 如果忽略此特性或者将其指定为 Null,则应用程序将会被认为是侦听所有地址。

在创建 GDS 资源之前,必须已经配置了一种 LogicalHostname 资源或 SharedAddress 资源。 有关如何配置 LogicalHostnameSharedAddress 资源的信息,请参阅Sun Cluster 数据服务规划和管理指南(适用于 Solaris OS)

要指定一个值,请指定一个或多个资源名称;每个资源名称可以包含一个或多个 LogicalHostname 或者包含一个或多个 SharedAddress。 有关详细信息,请参阅 r_properties (5)

Stop_command 特性

stop 命令必须停止应用程序并仅在应用程序完全停止后返回。 它必须是一条完整的 UNIX 命令,可以直接传给某个 shell 来停止应用程序。

如果提供了 Stop_command,则 GDS 的 stop 方法将使用 80% 的停止超时时间来启动 stop 命令。 不管发出该 stop 命令后的结果如何,GDS 的 stop 方法都将用 15% 的停止超时时间发送 SIGKILL。 剩余的 5% 的超时时间将用于内务处理开销。

如果忽略 stop 命令,GDS 将试图使用在 Stop_signal 中指定的信号来停止应用程序。

Probe_command 特性

probe 命令定期检查给定应用程序的运行状况。 它必须是一条具有完整变量的 UNIX 命令,可以直接传给某个 shell 来探测该应用程序。 如果应用程序运行成功,则 probe 命令返回 0 退出状态。

probe 命令的退出状态可用于确定应用程序故障的严重程度。 此退出状态(又称探测状态)必须是一个介于 0(表示成功)和 100(表示完全失败)之间的整数。 探测状态也可以是一个特殊值 201,它将导致应用程序立即进行故障切换,除非 Failover_enabled 被设置为 false。 GDS 探测算法中使用探测状态(请参阅scds_fm_action(3HA))来确定是在本地重新启动应用程序还是将其故障切换到另一个节点;如果退出状态是 201,立即对应用程序进行故障切换。

如果忽略 probe 命令,则 GDS 将提供其自身的简单 probe 命令。它将与从 Network_resources_used 特性或 scds_get_netaddr_list(3HA) 的输出结果中得到的 IP 地址集中的应用程序进行连接。 如果连接成功,它将立即断开连接。 如果能成功地进行连接和断开连接,则该应用程序即被认为运行状态完好。


注意:

随 GDS 一起提供 probe 命令的目的仅在于为正常运行的、特定于应用程序的 probe 命令提供简单的替代命令。


Start_timeout 特性

此特性用于指定 start 命令的启动超时(有关其它信息,请参阅Start_command 扩展特性)。 Start_timeout 的缺省值为 300 秒。

Stop_timeout 特性

此特性用于指定 stop 命令的停止超时(有关其它信息,请参阅Stop_command 特性)。 Stop_timeout 的缺省值为 300 秒。

Probe_timeout 特性

此特性用于指定 probe 命令的超时值(有关其它信息,请参阅Probe_command 特性)。 Probe_timeout 的缺省值为 30 秒。

Child_mon_level 特性

此特性提供进程通过 PMF 获得监视的控制。 它指定了一个级别,在该级别之内的所有派生子进程都将被监视。 这类似于 pmfadm(1M) 命令的 -C 变量。

忽略此特性,或将其设置为缺省值 -1,与忽略 pmfadm 命令中的 -C 选项具有相同的效果;即,所有子项(和它们的子孙)都将受到监视。


注意:

此选项只能用标准的 Sun Cluster 管理命令来指定。 如果您使用的是 SunPlex Agent Builder,则无法指定此选项。


Failover_enabled 特性

此布尔扩展特性用于控制资源的故障切换方式。 如果此扩展特性被设置为 true,则当应用程序在 retry_interval 秒内重新启动的次数超过 retry_count 时,该应用程序将进行故障切换。

如果将此扩展特性设置为 false,则只要应用程序在 retry_interval 秒内重启的次数超过 retry_count 次,该应用程序就不再重启或向另一个节点进行故障切换。

此扩展特性可用于阻止应用程序资源启动对其资源组的故障切换。 缺省值是 true

Stop_signal 特性

GDS 使用此整数扩展特性的值来确定通过 PMF 停止应用程序时所使用的信号。 有关可以指定的整数值的列表,请参阅 signal(3HEAD)。 缺省值为 15 (SIGTERM)。