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