通用数据服务 (Generic Data Service, GDS) 版本 2 这一机制允许您通过将简单的网络感知和非网络感知应用程序插入到 Oracle Solaris Cluster 资源组管理器 (Resource Group Manager, RGM) 框架中,使这些应用程序具有高可用性或可伸缩性。
GDSv2 包含一个全功能的 Oracle Solaris Cluster 资源类型,通过回调方法 (rt_callbacks(1HA)) 和资源类型注册 (Resource Type Registration, RTR) 文件 (rt_reg(4)) 完成。
指定 boot 命令的超时值(秒)。
可选
60 秒
300 秒
随时
修改资源无法成功启动或停止时或者资源监视器发现运行状态不佳的资源并进而请求重新启动或故障转移时 RGM 执行的恢复操作。
有关 failover_mode 属性的更多信息,请参见 r_properties(5) 手册页。
可选
SOFT
随时
指定 fini 命令的超时值(秒)。
可选
60 秒
300 秒
随时
指定 init 命令的超时值(秒)。
可选
60 秒
300 秒
随时
指定 monitor_start 命令的超时值(秒)。
可选
60 秒
300 秒
随时
指定 monitor_stop 命令的超时值(秒)。
可选
60 秒
300 秒
随时
监视器在启动资源失败时尝试重新启动该资源的次数。
有关 retry_count 属性的更多信息,请参见 r_properties(5) 手册页。
有条件的
10
2
随时
对尝试重新启动失败的资源进行计数的秒数。
有关 retry_interval 属性的更多信息,请参见 r_properties(5) 手册页。
有条件的
3600
370 秒
随时
指示资源是否可伸缩,即,资源是否使用 Oracle Solaris Cluster 软件的网络负载平衡功能。
如果 scalable 属性设置为 TRUE,将使用其他属性(例如 load_balancing_policy 和 load_balancing_weights)来配置负载平衡行为。
有关 scalable、load_balancing_policy 和 load_balancing_weights 属性的更多信息,请参见 r_properties(5) 手册页。
可选
FALSE
创建时
指定 start 命令的超时值(秒)。
可选
60 秒
300 秒
随时
指定 stop 命令的超时值(秒)。
可选
60 秒
300 秒
随时
指定两次调用资源的故障探测之间的秒数。
有关 thorough_probe_interval 的更多信息,请参见 r_properties(5) 手册页。
有条件的
3600 秒
60 秒
300 秒
随时
指定 update 命令的超时值(秒)。
可选
60 秒
300 秒
随时
指定 validate 命令的超时值(秒)。
可选
60 秒
300 秒
随时
指定当节点或区域引导或重新引导时运行的命令。该命令必须是可以直接传递给 Shell 的完整命令行。该命令通常执行与 init_command 相同的初始化。您必须确保该命令是幂等的-即使该命令在上一次执行中已初始化了资源,对该命令的后续调用也必须成功退出。
可选
Null
禁用时
提供对通过进程监视工具 (Process Monitor Facility, PMF) 监视的进程的控制。该属性表示分支子进程受监视的级别。省略此属性或将该属性设置为默认值与省略 pmfadm(1M) 的 –C 选项的结果相同:监视所有子进程(及其后代)。
可选
-1
创建时
Debug_gds 通常由 Oracle Solaris Cluster 部署和支持使用。不过,它对于了解在 GDSv2 内发生的各种调用和序列可能非常有用。
如果设置了 debug_gds=FALSE,则不会将 GDSv2 内部调试消息发送到系统日志。
如果设置了 debug_gds=TRUE,则会将所有 GDSv2 内部调试消息发送到系统日志。
可选
TRUE
禁用时
指定用于设置跟踪和调试消息的命令。提高 debug_level 允许将更多的消息写入到系统日志中。您可以通过为一个节点设置 debug_level 或者为每个节点设置不同的值,将其设置为一个每节点扩展属性。
可选
True
整数
0
3
0
随时
允许资源故障转移。如果将该属性设置为 False,将禁止资源进行故障转移。可以使用该属性阻止应用程序资源启动资源组的故障转移。
可选
True
禁用时
指定当资源不再由 RGM 管理时运行的命令。该命令必须是可以直接传递给 Shell 的完整命令行。该命令通常执行一些清理工作或者撤消由 init_command 执行的任何初始化。发生以下情况时,此命令在资源变得不受管理的节点或区域上运行:
包含资源的资源组切换为不受管理状态。在这种情况下,RGM 执行 GDSv2 fini 方法,该方法在节点列表中的所有节点和区域上执行 fini_command。
资源被从受管理资源组中删除。在这种情况下,RGM 执行 GDSv2 fini 方法,该方法在节点列表中的所有节点和区域上执行 fini_command。
节点或区域被从包含资源的资源组的节点列表中删除。在这种情况下,RGM 执行 GDSv2 fini 方法,该方法在节点列表中的所有节点和区域上执行 fini_command。
可选
Null
禁用时
指定因为发生下列情况之一而导致资源变得受 RGM 管理时运行的命令。该命令必须是可以直接传递给 Shell 的完整命令行。
资源所在的资源组从不受管理状态切换为受管理状态。
在已受管理的资源组中创建了资源。
可选
Null
禁用时
指定每当执行系统调用来检索主机名时要插入的逻辑主机名。只要执行了以下操作,就会插入逻辑主机名:
clreslogicalhostname(1CL) 命令为逻辑主机名创建了一个资源。
如果逻辑主机与您的资源位于不同的资源组中,则您的资源对逻辑主机资源具有依赖关系。
/usr/lib/secure/libschost.so.1 必须以符号链接方式链接到 /usr/cluster/lib/libschost.so.1。
/usr/lib/secure/64/libschost.so.1 必须以符号链接方式链接到 /usr/cluster/lib/[amd64|sparcv9]/libschost.so.1。
可选
TRUE
Null
禁用时
进程监视工具 (process monitor facility, PMF) 在 monitor_retry_interval 属性指定的时间窗口内重新启动故障监视器的次数。该属性表示重新启动故障监视器本身而非资源。系统定义的属性 retry_interval 和 retry_count 控制资源的重新启动。
可选
整数
4
0 - 2147483647
-1 表示无限的重试尝试次数。
随时
指定在声明完全故障之前可以发生的探测超时的次数。
如果系统的负载沉重并且探测无法在 probe_timeout 值内完成,则可能会发生探测超时。另外,如果被检查的应用程序已变得无响应,也可能会发生探测超时。
如果确实发生了探测超时,GDSv2 将不知道应用程序是否正在运行,并会延迟声明 num_probe_timeouts 的完全故障。因此,如果 num_probe_timeouts=2,则需要发生两次连续的探测超时,GDSv2 才会声明完全故障。如果声明了完全故障,则 RGM 会检查 failover_mode 属性来确定要采取什么操作。
可选
1
2
随时
确保应用程序在进程监视工具 (Process Monitor Facility, PMF) 的控制下启动,如 child_mon_level 扩展属性部分中所述。如果所有受监视的进程都退出,它们将根据 retry_count 和 retry_interval 资源属性的设置重新启动。如果超出了重试计数,则 RGM 会检查 failover _mode 属性来确定要采取什么操作。
可选
TRUE
禁用时
指定定期检查网络感知或非网络感知应用程序运行状况的命令。该命令必须是完整的命令行,以便可以直接传递给 Shell 来探测应用程序。如果应用程序运行正确,该探测命令将以退出状态 0 返回。
探测命令的退出状态用于确定应用程序故障的严重程度。该退出状态称为探测状态,是一个介于 0(表示成功)与 100(表示完全失败)的整数值。探测状态还可以是 201,该状态会使应用程序进行故障转移,除非 Failover_enabled 设置为 FALSE。
如果未设置 probe_command 但设置了 PMF_managed=TRUE,则会使用内部探测器。如果所有应用程序进程都失败,则该探测器将检查应用程序 PMF 标记以使用 PMF 提供更快的应用程序重新启动。如果设置了 PMF_managed=FALSE,则 probe_command 条目是必需的。
可选
" "
禁用时
指定启动应用程序的命令。该命令必须是完整的命令行,以便可以直接传递给 Shell 来启动应用程序。
如果设置了 PMF_managed=TRUE,则 start 命令(或其派生子进程之一)应当是一个长时运行的程序或守护进程,用于实际向客户机提供服务。start_command 进程树由 PMF 监视,如 child_mon_level 扩展属性部分中所述。
必需
1
无默认值
禁用时
指定如果应用程序第一次尝试启动时启动失败,是否应当声明 start_failed。
如果设置了 start_exit_on_error=FALSE,则应用程序在 start_timeout 期间会尽可能频繁地启动,直到应用程序成功启动。
如果设置了 start_exit_on_error=TRUE,并且应用程序在首次尝试启动时启动失败,则会声明 start_failed 状态。
可选
FALSE
禁用时
指定停止应用程序的命令。该命令必须是可以直接传递给 Shell 的完整命令行。
如果设置了 PMF_managed=TRUE,则可以省略 stop_command。如果省略了 stop_command,则会向在 PMF 标记下运行的应用程序进程发送 stop_signal 扩展属性值。如果设置了 PMF_managed=FALSE,则 stop_command 是必需的。
可选
Null
禁用时
指定当应用程序无法停止时是否应当声明 stop_failed。
如果设置了 stop_exit_on_error=TRUE 并且应用程序无法停止,则会声明 stop_failed。
如果设置了 stop_exit_on_error=FALSE 并且应用程序无法停止,则会检查 PMF_managed 扩展属性。如果设置了 PMF_managed=TRUE,则会向在 PMF 标记下运行的应用程序进程发送 stop_signal 扩展属性值。如果设置了 PMF_managed=FALSE 并且应用程序无法停止,则会声明 stop_failed。
可选
FALSE
禁用时
指定当应用程序无法使用 stop_command 停止并且设置了 PMF_managed=TRUE 时用于停止应用程序的信号。该属性的值与 signal(3HEAD) 手册页中定义的那些值相同。
可选
1
37
15
禁用时
GDSv2 探测在超时时钟下执行 probe_command,并且使用 fork(2) 和 exec(2) 调用将 probe_command 作为新进程来执行。在负载沉重的系统上,从子进程派生到子进程执行 probe_command,这之间可能有几秒的延迟。
如果设置了 timeout_delay=FALSE,则在子进程派生后会立即启动超时时钟。
如果设置了 timeout_delay=TRUE,则只有在子进程已开始执行时才会启动超时时钟。
两种设置都有优点,并且您应当考虑设置 timeout_delay 的影响。
如果系统的负载沉重,您可能希望发生探测超时,以便 RGM 可以通过查询 failover_mode 属性尝试应用程序恢复。在这种情况下,在负载沉重的系统上,设置 timeout_delay=FALSE 将比较合适并且这是默认设置。
如果系统的负载沉重,并且您希望保证超时时钟仅在 Probe_command 已开始执行时才启动,则设置 timeout_delay=TRUE 将比较合适。不过,这无法保证探测超时也不能发生。相反,超时时钟仅延迟到 probe_command 已开始执行时。如果 probe_command 仍然难以完成,则在超时时钟已启动后,仍然可能会发生探测超时。
如果发生探测超时,则会向 GDSv2 返回故障。默认情况下会设置 num_probe_timeouts=2,这意味着两次连续的探测超时将导致完全故障。当 GDSv2 返回了完全故障时,RGM 会查询 failover_mode 属性来确定要采取什么操作。
可选
FALSE
随时
指定用于验证应用程序的命令的绝对路径。如果未提供绝对路径,则不会验证应用程序。
validate 命令的退出状态用于确定是否应当允许创建或更新 GDSv2 资源。在创建或更新资源之前,指定的 validate 命令将在该资源所属资源组的节点列表中的每个节点上执行。如果 validate 命令以非零状态退出,则不允许创建或更新请求的资源。validate 命令写入到 stdout 或 stderr 的任何输出将传递回发出管理命令以创建或更新该资源的用户。可根据这些输出解释资源验证失败的原因。
在执行 scha_control 命令的 GIVEOVER 选项来将资源组重定位到新节点之前也会执行验证命令。如果该命令以非零状态退出,则会阻止 GIVEOVER,该资源组在其当前节点上仍受管理。
可选
Null
禁用时
如果设置了 wait_for_online=TRUE,则在尝试 start_command 时会发出 probe_command 命令。如果 probe_command 返回了退出状态零,则应用程序将被断定为可用并且资源将进入联机状态。
如果设置了 wait_for_online=FALSE,则在尝试 start_command 时不会发出 probe_command 命令。如果 start_command 退出并且退出状态为零,则资源将进入联机状态。否则,资源将进入 start_failed 状态。
如果未设置 probe_command 但设置了 PMF_managed=TRUE,则会为 probe_command 使用伪探测器。该伪探测器只会简单检查是否存在关联的 PMF 标记。
可选
TRUE
禁用时
只有设置了 wait_for_online=TRUE 时才会使用此扩展属性。
如果设置了 wait_for_online=TRUE,则会在 start_timeout 持续期间尝试 start_command 时或者在 probe_command 返回零退出状态之前,执行 probe_command。否则,每两秒将尝试一次 probe_command。默认情况下会设置 start_timeout=300,因此可能会许多次尝试 probe_command,直到它成功。
Wait_probe_limit 提供了对在 start_timeout 内执行多少次 probe_command 进行限制的能力。
如果设置了 wait_probe_limit=0,则会在 start_timeout 持续时间内尝试 probe_command,直到 probe_command 返回退出状态零。否则,probe_command 尝试将继续,直到 RGM 声明 START 超时。
如果设置了 wait_probe_limit=1,则在 start_timeout 持续时间内将仅尝试一次 probe_command。如果 probe_command 返回零退出状态,资源将进入联机状态。否则,资源将进入 start_failed 状态。同样,如果设置了 wait_probe_limit=8,则在 start_timeout 持续时间内最多会尝试八次 probe_command。如果 probe_command 返回零退出状态,资源将进入联机状态。否则,资源将进入 start_failed 状态。
可选
0
0
禁用时
以下示例使用了所提供的名为 "sleep 1800 &" 的演示应用程序。有关 GDSv2 演示应用程序的更多信息,请参见Oracle Solaris Cluster Generic Data Service (GDS) Guide 。
# clresourcegroup create -p pathprefix=/opt/ORCLscgds/demo myrg # clresource create -g myrg -t ORCL.gds \ # -p Start_command="%RG_PATHPREFIX/demo_start -R %RS_NAME -G %RG_NAME -T %RT_NAME" \ # -p Stop_command="%RG_PATHPREFIX/demo_stop -R %RS_NAME -G %RG_NAME -T %RT_NAME" \ # -p Probe_command="%RG_PATHPREFIX/demo_probe -R %RS_NAME -G %RG_NAME -T %RT_NAME" \ # -p Validate_command="%RG_PATHPREFIX/demo_validate -R %RS_NAME -G %RG_NAME \ # -T %RT_NAME" -d myrs # clresourcegroup online -eM myrg # clresource status myrs
有关下列属性的说明,请参见 attributes(5):
|
ORCL.gds_proxy(5)、clreslogicalhostname(1CL )、clresource(1CL)、clresourcegroup(1CL)、clresourcetype(1CL)、clressharedaddress(1CL)、rt_callbacks(1HA)、scdsbuilder(1HA)、scha_control(1HA)、scha_resource_get(1HA)、hatimerun(1M)、pmfadm(1M)、signal(3HEAD)、rt_reg(4)、attributes(5)、r_properties(5)、scalable_service(5)