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

Update 方法的工作方式

RGM 通过运行 Update 方法来通知正在运行的资源其属性已更改。群集管理员成功设置了资源或其组的属性后,RGM 将运行 Update。在资源联机所在的节点上调用该方法。

Update 方法的用途

Update 方法不更新属性。RGM 更新属性。Update 方法通知正在运行的进程已执行了更新。在数据服务样例中,受属性更新影响的唯一进程是故障监视器。因而,故障监视器进程是 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() 函数将更新操作的失败告知管理工具。