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

Start 方法

RGM 在選擇的叢集節點上呼叫資源類型實作的 Start 回呼方法以啟動資源。資源群組名稱、資源名稱以及資源類型名稱將在指令行上進行傳送。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 才表示成功啟動節點上的資源。如果啟動函數出現問題,必將傳回非 0 值。此函數失敗時,RGM 將嘗試在其他叢集節點上啟動資源。

為了更好地使用 DSDL,svc_start() 函數可呼叫 scds_pmf_start() 公用程式以啟動程序監視工具 (PMF) 下的應用程式。此公用程式還使用 PMF 的失敗回呼動作功能以偵測程序失敗。請參閱 pmfadm(1M) 線上手冊中的 -a 動作引數的說明,以取得更多資訊。