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 |
通过使用 SunPlex Agent Builder 生成的源代码模型(请参阅 scdscreate( 1HA))或标准的 Sun Cluster 管理命令,GDS 具有以下优点:
GDS 易于使用。
GDS 及其方法是预编译的,因而无法进行更改。
使用 SunPlex Agent Builder 可为应用程序生成驱动脚本,而且这些脚本全部放在一个可在 Solaris 中安装的软件包中。该软件包可在多个群集中重复使用。
使用 SunPlex Agent Builder
使用标准的 Sun Cluster 管理命令
使用 SunPlex Agent Builder 并选择 GDS 作为生成的源代码的类型。 使用用户所输入的内容来生成一组驱动脚本,而这些脚本将为给定的应用程序配置资源。
此方法使用 SUNWscgds 中预编译的数据服务代码,但要求系统管理员使用标准的 Sun Cluster 管理命令(scrgadm(1M) 和 scswitch(1M))创建和配置资源。
正如如何使用 Sun Cluster 管理命令来创建使用 GDS 且具有高可用性的服务和标准的 Sun Cluster 管理命令(用于创建使用 GDS 的、可伸缩的服务)等过程所示,需要在键盘上输入大量的信息才能发出有关的 scrgadm 命令和 scswitch 命令。
如果将 GDS 和 SunPlex Agent Builder 结合使用,则可简化此过程,因为它会产生驱动脚本,而这些驱动脚本可发出 scrgadm 命令和 scswitch 命令。
虽然使用 GDS 有很多优点,但还是存在不宜使用 GDS 机制的情况。 不宜 使用 GDS 机制的情况有:
使用预编译的资源类型时所需的控制多于可用控制, 例如,需要增加扩展特性或更改缺省特性时。
需要修改源代码以增加特殊的功能。
您想要使用多个进程树时。
您想要使用不支持网络的应用程序时。
Start_command(扩展特性)
Port_list
Start_command 扩展特性中指定的 start 命令可启动应用程序。 它必须是一条具有完整变量的 UNIX 命令,可以直接传给某个 shell 来启动应用程序。
Port_list 特性可标识应用程序所侦听的端口列表。 Port_list 特性必须根据由 SunPlex Agent Builder 创建的启动脚本而指定,或是根据 scrgadm 命令而指定(如果您使用的是标准的 Sun Cluster 管理命令)。
Network_resources_used
Stop_command(扩展特性)
Probe_command(扩展特性)
Start_timeout
Stop_timeout
Probe_timeout(扩展特性)
Child_mon_level(扩展特性,只用于标准的管理命令)
Failover_enabled(扩展特性)
Stop_signal(扩展特性)
此特性的缺省值为空。 如果应用程序需要绑定到一个或多个特定的地址,则必须指定此特性。 如果忽略此特性或者将其指定为 Null,则应用程序将会被认为是侦听所有地址。
在创建 GDS 资源之前,必须已经配置了一种 LogicalHostname 资源或 SharedAddress 资源。 有关如何配置 LogicalHostname 或 SharedAddress 资源的信息,请参阅《Sun Cluster 数据服务规划和管理指南(适用于 Solaris OS)》。
要指定一个值,请指定一个或多个资源名称;每个资源名称可以包含一个或多个 LogicalHostname 或者包含一个或多个 SharedAddress。 有关详细信息,请参阅 r_properties (5)。
stop 命令必须停止应用程序并仅在应用程序完全停止后返回。 它必须是一条完整的 UNIX 命令,可以直接传给某个 shell 来停止应用程序。
如果提供了 Stop_command,则 GDS 的 stop 方法将使用 80% 的停止超时时间来启动 stop 命令。 不管发出该 stop 命令后的结果如何,GDS 的 stop 方法都将用 15% 的停止超时时间发送 SIGKILL。 剩余的 5% 的超时时间将用于内务处理开销。
如果忽略 stop 命令,GDS 将试图使用在 Stop_signal 中指定的信号来停止应用程序。
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 命令的启动超时(有关其它信息,请参阅Start_command 扩展特性)。 Start_timeout 的缺省值为 300 秒。
此特性用于指定 stop 命令的停止超时(有关其它信息,请参阅Stop_command 特性)。 Stop_timeout 的缺省值为 300 秒。
此特性用于指定 probe 命令的超时值(有关其它信息,请参阅Probe_command 特性)。 Probe_timeout 的缺省值为 30 秒。
此特性提供进程通过 PMF 获得监视的控制。 它指定了一个级别,在该级别之内的所有派生子进程都将被监视。 这类似于 pmfadm(1M) 命令的 -C 变量。
忽略此特性,或将其设置为缺省值 -1,与忽略 pmfadm 命令中的 -C 选项具有相同的效果;即,所有子项(和它们的子孙)都将受到监视。
此选项只能用标准的 Sun Cluster 管理命令来指定。 如果您使用的是 SunPlex Agent Builder,则无法指定此选项。
此布尔扩展特性用于控制资源的故障切换方式。 如果此扩展特性被设置为 true,则当应用程序在 retry_interval 秒内重新启动的次数超过 retry_count 时,该应用程序将进行故障切换。
如果将此扩展特性设置为 false,则只要应用程序在 retry_interval 秒内重启的次数超过 retry_count 次,该应用程序就不再重启或向另一个节点进行故障切换。
此扩展特性可用于阻止应用程序资源启动对其资源组的故障切换。 缺省值是 true。
GDS 使用此整数扩展特性的值来确定通过 PMF 停止应用程序时所使用的信号。 有关可以指定的整数值的列表,请参阅 signal(3HEAD)。 缺省值为 15 (SIGTERM)。