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

啟動與停止資源

資源類型實現至少需要 Start 方法和 Stop 方法。 RGM 在適當節點、適當時機呼叫資源類型的方法程式,以使資源群組離線與上線運作。 例如,叢集節點當機之後,RGM 會將該節點主控的所有資源群組移至新節點。 您必須實施 Start 方法,為 RGM 提供重新啟動存活主機節點上每個資源的方法。

Start 方法必須在資源已啟動且在本機節點上可用之後才傳回。 請確保為初始化時間長的資源類型在其 Start 方法上設定足夠長的逾時 (在資源類型註冊檔案中設定 Start_timeout 屬性的預設值和最小值)。

您必須為 RGM 使資源群組離線的情形實施 Stop 方法。 例如,假定某資源群組在 Node1 上離線又在 Node2 上恢復線上狀態。在使該資源群組離線時,RGM 在該群組的資源上呼叫 Stop 方法來停止 Node1 上的所有作業。在 Node1 上對所有資源執行完 Stop 方法後,RGM 將使該資源群組在 Node2 上恢復線上狀態。

Stop 方法必須在資源已完全停止其在本機節點上的所有活動且完全關閉後才返回。 Stop 方法最安全的實作會終止本機節點上與資源相關的所有程序。 應該為需要長時間才能關閉的資源類型在其 Stop 方法上設定足夠長的逾時。 在資源類型註冊檔案中設定 Stop_timeout 屬性。

Stop 方法的失敗或逾時會導致資源群組進入一個需要操作者介入的錯誤狀態。 為了避免此種狀態,StopMonitor_stop 方法實作應該嘗試從所有可能的錯誤情況回復。 理想情況是,這些方法以 0 (成功) 錯誤狀態退出,即已成功停止本機節點上的資源及其監視器的所有活動。

決定要使用的 StartStop 方法

本節提供有關何時使用 StartStop 方法與何時使用 Prenet_start Postnet_stop 方法的一些提示。 您必須全面瞭解用戶端和資料服務的主從式網路協定,才能決定要使用的正確方法。

使用網路位址資源的服務可能要求以特定順序 (相對於邏輯主機名稱位址配置) 完成啟動或停止步驟。 可選用的回呼方法 Prenet_startPostnet_stop 允許資源類型實現在將同一資源群組中的網路位址配置或取消配置前後,執行特殊的啟動和關閉動作。

在呼叫資料服務的 Prenet_start 方法之前,RGM 將呼叫探索網路位址 (但不配置網路位址) 的方法。 在呼叫資料服務的 Postnet_stop 方法之後,RGM 將呼叫不探索網路位址的方法。 當 RGM 使資源群組上線運作時,其序列如下所示。

  1. 探索網路位址。

  2. 呼叫資料服務的 Prenet_start 方法 (如果有的話)。

  3. 配置網路位址。

  4. 呼叫資料服務的 Start 方法 (如果有的話)。

當 RGM 使資源群組離線時會發生反向:

  1. 呼叫資料服務的 Stop 方法 (如果有的話)。

  2. 取消配置網路位址。

  3. 呼叫資料服務的 Postnet_stop 方法 (如果有的話)。

  4. 不探索網路位址。

當決定是否使用 StartStopPrenet_startPostnet_stop 方法時,請先考量伺服器端。 當使包含資料服務應用程式資源和網路位址資源的資源群組上線運作時,RGM 會在呼叫資料服務資源 Start 方法前,呼叫這些方法來配置網路位址。 因此,如果資料服務需要在啟動時配置網路位址,請使用 Start 方法啟動資料服務。

同樣,當使包含資料服務應用程式資源和網路位址資源的資源群組離線時,RGM 會在呼叫資料服務資源 Stop 方法後,呼叫這些方法來取消配置網路位址。 因此,如果資料服務需要在停止時配置網路位址,請使用 Stop 方法停止資料服務。

例如,為了啟動或停止資料服務,您可能必須呼叫資料服務的管理公用程式或程式庫。 有時,資料服務具有使用主從式網路介面執行管理的管理公用程式或程式庫。 即管理公用程式呼叫伺服器常駐程式,從而網路位址可能需要出現,以便使用管理公用程式或程式庫。 在此情形下,請使用 Start 方法與 Stop 方法。

如果資料服務需要在其啟動與停止時取消配置網路位址,請使用 Prenet_start 方法或 Postnet_stop 方法啟動與停止該資料服務。 考量用戶端軟體是否將依據網路位址或資料服務在叢集重新配置 (透過具有 SCHA_GIVEOVER 引數的 scha_control() 或透過 scswitch 的進行切換保護移轉) 之後是否首先上線而做出不同回應。 例如,用戶端實作可能進行最低限度的重試,並在確定資料服務通訊埠不可用之後不久放棄。

如果資料服務在其啟動時不需要配置網路位址,請在配置網路介面之前啟動該資料服務。 這樣可確保資料服務能夠在完成網路位址配置之後立即回應用戶端的要求,而且這些用戶端不太可能停止重試。 在此情形下,請使用 Prenet_start 方法而不是 Start 方法來啟動資料服務。

如果您使用 Postnet_stop 方法,則資料服務資源在取消配置網路位址時仍會出現。 僅在取消配置網路位址後才呼叫 Postnet_stop 方法。 結果,只要網路位址做出回應,資料服務的 TCP 或 UDP 服務通訊埠,或者其 RPC 程式編號總是會出現,供網路上的用戶端使用。

決定使用 StartStop 方法還是使用 Prenet_startPostnet_stop 方法,或者兩者都使用,均必須考慮伺服器與用戶端的需求與行為。