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 资源。 有关如何配置 LogicalHostname 或 SharedAddress 资源的信息,请参阅《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)。