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

控制應用程式

每當節點處於連結或斷開連結叢集程序中時,回呼方法會啟用 RGM 來控制基本資源 (即應用程式)。

啟動與停止資源

資源類型實作至少需要 Start 方法和 Stop 方法。RGM 在正確的時間和正確的節點上呼叫資源類型的方法程式,以將資源群組置於離線或線上狀態。例如,當叢集節點當機後,RGM 會將由該節點主控的任何資源群組移至新的節點。您必須實施 Start 方法,為 RGM 提供重新啟動存活主機節點上每個資源的方法。

Start 方法必須在資源已啟動且在本機節點上可用之後才傳回。請確定需要很長初始化期間的資源類型在 Start 方法上具有足夠長的逾時設定。若要確保有足夠的逾時時間,請在 RTR 檔案中設定 Start_timeout 特性的預設值和最小值。

您必須為 RGM 使資源群組離線的情形實施 Stop 方法。例如,假設在節點 1 上將資源群組置於離線並在節點 2 上重新置於線上。在將資源群組置於離線時,RGM 會在群組中的資源上呼叫 Stop 方法以停止節點 1 上的所有作業。當在節點 1 上完成所有資源的 Stop 方法後,RGM 會將資源群組在節點 2 上重新置於線上。

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

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

決定使用哪些 StartStop 方法

本小節提供有關何時使用 StartStop 方法 (相對於使用 Prenet_startPostnet_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 方法停止資料服務。

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

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

如果資料服務在其啟動時不需要將網路位址配置為線上,請在配置網路介面之前啟動該資料服務。以此種方式啟動資料服務,確保資料服務能在將網路位址配置為線上時立即回應用戶端請求。因此,用戶端不太可能停止重試。在此情形下,請使用 Prenet_start 方法 (而非 Start 方法) 來啟動資料服務。

如果您使用 Postnet_stop 方法,則資料服務資源在取消配置網路位址時仍會出現。僅在將網路位址配置為離線後才能執行 Postnet_stop 方法。因此,資料服務的 TCP 或 UDP 服務連接埠或其 RPC 程式編號始終顯示為對網路上的用戶端可用 (當網路位址也不回應時除外)。


備註 –

如果您在叢集中安裝 RPC 服務,該服務不得使用以下程式編號︰100141、100142 與 100248。這些編號是分別為 Sun Cluster 常駐程式 rgmd_receptionistfedpmfd 保留的。如果您安裝的 RPC 服務使用以上任一程式編號,請變更該 RPC 服務的程式編號。


決定使用 StartStop 方法 (相對於 Prenet_startPostnet_stop 方法) 或使用二者,必須考量伺服器和用戶端的需求和運作方式。

InitFiniBoot 方法

三種可選用的方法,InitFini 以及 Boot,啟用 RGM 在資源上執行初始化和終止程式碼。

當資源由於以下情況而被管理時,RGM 將執行 Init 方法以執行資源的一次初始化︰

當資源由於以下情況而未被管理時,RGM 將執行 Fini 方法以清除資源︰

清除必須是等冪的。也就是說,如果清除已完成,Fini 將成功結束。

RGM 將在新近連結至叢集的節點上執行 Boot 方法,即該節點已經啟動或重新啟動。

Boot 方法通常執行與 Init 相同的初始化。此初始化必須是等冪的,即如果資源在本機節點上已經初始化,BootInit 將成功結束。