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

Update 方法

RGM 调用 Update 方法通知运行资源其特性已被更改。 在设置资源及其组的特性过程中成功地执行了管理操作后,RGM 将调用 Update。 在资源联机的节点上调用此方法。

Update 概述

Update 方法并不更新特性,此操作由 RGM 完成, 而该方法将通知运行进程已进行了更新。 数据服务样例中唯一受特性更新操作影响的进程是故障监视器,因此 Update 方法将停止和重启此进程。

Update 方法必须检验故障监视器是否正在运行,如果正在运行,将使用 pmfadm 终止该监视器。 该方法将获取实现故障监视器的探测程序的位置,然后再次使用 pmfadm 重启该程序。

使用 Update 停止监视器

Update 方法将使用 pmfadm -q 检验监视器是否正在运行,如果正在运行,它将使用 pmfadm -s TERM 终止该监视器。 成功终止监视器后,将向管理用户发送表明相应情况的消息。 如果无法停止监视器,Update 将在失败状态下退出并向管理用户发送一条错误消息。


if pmfadm -q $RESOURCE_NAME.monitor; then

# Kill the monitor that is running already
pmfadm -s $PMF_TAG TERM
    if [ $? -ne 0 ]; then
       logger -p ${SYSLOG_FACILITY}.err \
              -t [$SYSLOG_TAG] \
                 "${ARGV0} Could not stop the monitor"
       exit 1
    else
    # could successfully stop DNS. Log a message.
       logger -p ${SYSLOG_FACILITY}.err \
              -t [$RESOURCETYPE_NAME,$RESOURCEGROUP_NAME,$RESOURCE_NAME] \
                 "Monitor for HA-DNS successfully stopped"
    fi

重启监视器

要重新启动监视器,Update 方法必须定位实现探测程序的脚本。 该探测程序驻留在数据服务的基目录上,由 Rt_basedir 特性指向该目录。 Update 将检索 Rt_basedir 的值并将其存储在 RT_BASEDIR 变量中,如下所示。


RT_BASEDIR=`scha_resource_get -O RT_BASEDIR -R $RESOURCE_NAME -G \
$RESOURCEGROUP_NAME`

然后,Update 将通过 pmfadm 使用 RT_BASEDIR 的值来重启 dns_probe 程序。 如果成功,Update 将在成功状态下退出并向管理用户发送一条表明相应情况的消息。 如果 pmfadm 无法启动该探测程序,Update 将在失败状态下退出并记录一条错误消息。

Update 退出状态

Update 方法的失败将导致资源处于“更新失败”状态。 此状态对资源的 RGM 管理并无影响,但是它表明通过 syslog 工具更新管理工具的操作失败。