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

Start 方法

資源類型實作的 Start 回呼方法由 RGM 在選擇的叢集節點上呼叫以啟動資源。資源群組名稱、資源名稱以及資源類型名稱將在指令行上進行傳送。Start 方法預期將執行在叢集節點上啟動資料服務資源所需的動作。通常包括擷取資源特性、尋找應用程式特定的可執行檔和/或配置檔、以及用適當的指令行引數啟動應用程式。

使用 DSDL,資源配置已經由 scds_initialize() 公用程式擷取。應用程式的啟動動作可以包含在函式 svc_start() 中。可以呼叫另一個函式 svc_wait() 來驗證應用程式確實啟動。用於 Start 方法的簡化程式碼變為:


int
main(int argc, char *argv[])
{
   scds_handle_t handle;

   if (scds_initialize(&handle, argc, argv)!= SCHA_ERR_NOERR) {
   return (1);   /* Initialization Error */
   }
   if (svc_validate(handle) != 0) {
   return (1);   /* Invalid settings */
   }
   if (svc_start(handle) != 0) {
   return (1);   /* Start failed */
   }
   return (svc_wait(handle));
}

此啟動方法實現將呼叫 svc_validate(),以驗證資源配置。如果失敗,則資源配置和應用程式配置不符合,或目前在叢集節點上出現關於系統的問題。例如,資源所需的全域檔案系統目前可能在此叢集節點上不可用。在此情況下,即使嘗試在此叢集節點上啟動資源也是無效的。最好讓 RGM 嘗試在其他節點上啟動資源。但是,請注意以上假定 svc_validate() 應足夠地保守 (以便於它只檢查應用程式絕對需要的叢集節點上的資源),否則資源可能無法在所有的叢集節點上啟動,因而處於 START_FAILED 狀態。請參閱 scswitch( 1M)Sun Cluster Data Services Planning and Administration Guide for Solaris OS,以取得此狀態的說明。

svc_start() 函式必須傳回 0 才表示成功啟動節點上的資源。如果啟動函式遇到問題,則必定傳回非零值。此函式失敗時,RGM 將嘗試在其他叢集節點上啟動資源。

若要盡可能利用 DSDL,svc_start() 函式可以使用 scds_pmf_start() 公用程式在程序管理設備 (PMF) 下啟動應用程式。此公用程式還利用 PMF 的故障回呼動作功能 (請參閱 pmfadm( 1M) 中的 -a 動作旗號),以實施程序故障偵測。