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

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 透過 pmfadm 使用 RT_BASEDIR 的值來重新啟動 > to restart the dns_probe 程式。如果成功,Update 將以成功狀態結束,並將成功的訊息傳送給叢集管理員。如果 pmfadm 無法啟動探測程式,Update 將以失敗狀態結束並記錄錯誤訊息。

Update 退出狀態

Update 方法失敗將導致資源被置於「更新失敗」狀態。這種狀態對資源的 RGM 管理沒有影響,而是表示透過 syslog() 函數對管理工具所採取的更新動作失敗。