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

Update 退出状态

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