Sun Cluster 資料服務開發者指南 (適用於 Solaris 作業系統)

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 工具指示對管理工具的更新動作失敗。