RGM 通过运行 Update 方法来通知正在运行的资源其属性已更改。群集管理员成功设置了资源或其组的属性后,RGM 将运行 Update。在资源联机所在的节点上调用该方法。
Update 方法不更新属性。RGM 更新属性。Update 方法通知正在运行的进程已执行了更新。在数据服务样例中,受属性更新影响的唯一进程是故障监视器。因而,故障监视器进程是 Update 方法停止并重新启动的进程。
Update 方法必须验证故障监视器是否正在运行,然后使用 pmfadm 命令中止它。该方法获取执行故障监视的探测程序的位置,并使用 pmfadm 命令将其重新启动。
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 方法的失败将导致资源处于“更新失败”状态。该状态对资源的 RGM 管理没有影响,但是会通过 syslog() 函数将更新操作的失败告知管理工具。