普通数据服务 (GDS) 是一种机制,它将简单的、能支持网络的应用程序插入"Sun Cluster 资源组管理"(Sun Cluster Resource Group Management) 框架中,从而使它们具有高可用性和高可缩放性。此机制不需要为代理编写代码,而这是使应用程序具有高可用性和高缩放性的通常做法。
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。如果应用程序需要绑定到一个或多个特定的地址,则必须指定此特性。如果忽略此特性或者将其指定为 Null,则应用程序将会被认为是侦听所有地址。
在创建 GDS 资源之前,必须已经配置了一种 LogicalHostname 资源或 SharedAddress 资源。有关配置 LogicalHostname 或者 SharedAddress 资源的信息,请参阅《Sun Cluster 3.0 12/01 Data Services Installation and Configuration Guide》。
若要指定一个值,请指定一个或多个资源名称;每个资源名称都可包含一个或多个逻辑主机名称,或者一个或多个共享地址。有关详细信息,请参阅 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 命令。它将与从 Newtork_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 选项相同。也即:所有子进程(以及它们的子进程)都将被监视。有关详细信息,请参阅 pmfadm(1M) 手册页。
此选项只能用标准的 Sun Cluster 管理命令来指定。如果您使用的是 SunPlex Agent Builder,则无法指定此选项。
此布尔型扩展特性控制着资源的故障转移行为。如果将该扩展特性设置为 true,则只要应用程序在 retry_interval 秒内重启的次数超过 retry_count 次,该应用程序就将进行故障转移。
如果将此扩展特性设置为 false,则只要应用程序在 retry_interval 秒内重启的次数超过 retry_count 次,该应用程序就不再重启或向另一个节点进行故障转移。
此扩展特性可用于阻止应用程序资源启动对其资源组的故障转移。缺省值是 true。
GDS 借助此整数型扩展特性的值来决定通过 PMF 停止应用程序时所使用的信号。有关可以指定的整数值的列表,请参阅 signal(3head)。缺省值为 15 (SIGTERM)。