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

RMAPI 回呼方法

回呼方法是由 API 提供用於實現資源類型的關鍵元素。如果叢集成員資格中發生變更 (如節點開機或當機),則回呼方法啟用 RGM 來控制叢集中的資源。


注意 –

因為用戶端程式控制叢集系統上的 HA 服務,所以回呼方法將由具有根許可權的 RGM 來執行。安裝與管理這些具有限制性檔案所有權與許可權的方法。具體來說,給予它們一個具有特權的所有者,如 binroot,且使它們不可寫入。


本節說明回呼方法引數以及退出碼與退出清單,並說明以下種類的回呼方法:


注意 –

儘管本節提供回呼方法的簡要說明,其中包含在其上呼叫方法的點以及資源上預期發生的效果,但 rt_callbacks(1HA) 線上援助頁仍將是回呼方法的決定性參考。


方法引數

RGM 將呼叫回呼方法,如下所示:


method -R resource-name -T type-name -G group-name

方法是註冊為 StartStop 或其他回呼的程式之路徑名稱。資源類型的回呼方法將在其註冊檔案中宣告。

所有回呼方法引數都將作為標定值傳送,其中 -R 指示資源實例的名稱、-T 指示資源的類型,而 -G 指示將資源配置於其中的群組。配合使用引數與存取函式來擷取有關資源的資訊。

使用其他引數 (資源與在其上呼叫資源的資源群組之特性值) 呼叫 Validate 方法。

請參閱 scha_calls(3HA),以取得詳細資訊。

退出碼

所有回呼方法均定義了相同的退出碼,以指定呼叫該方法對資源狀態產生的效果。scha_calls(3HA) 線上援助頁將說明所有這些退出碼。這些退出碼為:

RGM 也將處理回呼方法執行的非正常故障,如逾時與核心傾印。

方法實作必須使用每個節點上的 syslog 輸出故障資訊。不能保證寫入 stdoutstderr 的輸出發送至使用者 (儘管輸出目前顯示在本機節點的主控台上)。

控制與初始化回呼方法

主要控制與初始化回呼方法將啟動與停止資源。其他方法執行資源上的初始化程式碼與終止程式碼。

Start

當包含資源的資源群組在某個叢集節點上線運作時,將在該節點上呼叫此必需方法。這個方法將啟動該節點上的資源。

Start 方法啟動的資源已啟動並在本機節點上可用時,該方法才應結束。因此,在 Start 方法結束之前,應輪詢資源以確定資源已啟動。此外,您應為此方法設定足夠長的逾時值。例如,某些資源 (如資料庫常駐程式) 的啟動時間很長,因此需要該方法具有較長的逾時值。

RGM 回應 Start 方法故障的方式取決於 Failover_mode 特性的設定。

資源類型註冊檔案中的 START_TIMEOUT 特性設定資源的 Start 方法之逾時值。

Stop

當包含資源的資源群組在某個叢集節點上離線時,將在該節點上呼叫此必需方法。如果資源處於使用中狀態,則該方法將取消啟動資源。

Stop 方法應該在其控制的資源已完全停止了在本機節點上的所有活動並已關閉了所有檔案描述元後才結束。否則,由於 RGM 假定資源已停止,而實際上資源仍在作用中,可能導致資料毀壞。避免資料毀壞的最安全方法是終止與資源相關的本機節點上的所有程序。

Start 方法結束之前,應輪詢資源以決定資源已停止。此外,您應為此方法設定足夠長的逾時值。例如,某些資源 (如資料庫常駐程式) 的停止時間很長,因此需要該方法具有較長的逾時值。

RGM 回應 Stop 方法失敗的方式取決於 Failover_mode 特性的設定 (請參閱資源特性)。

資源類型註冊檔案中的 STOP_TIMEOUT 特性設定資源的 Stop 方法之逾時值。

Init

當資源處於受管理狀態時 (即資源所在的資源群組從未受管理狀態切換至受管理狀態時;或在已經受管理的資源群組中建立資源時),將呼叫此選用方法,以執行資源的一次性初始化。在 Init_nodes 資源特性決定的節點上呼叫該方法。

Fini

當資源成為不受管理狀態時,當資源所在的資源群組切換到未受管理狀態時,或當從受管理資源群組中刪除資源時,將呼叫此選擇性方法,以執行清除資源作業。在 Init_nodes 資源特性決定的節點上呼叫該方法。

Boot

將呼叫這個與 Init 相似的方法以初始化節點上的資源,這些節點在包含資源的資源群組已置於 RGM 的管理之下後加入叢集。在 Init_nodes 資源特性決定的節點上呼叫該方法。當節點由於啟動或重新啟動而連結或重新連結叢集時,將呼叫 Boot 方法。


注意 –

InitFiniBoot 方法的失敗將導致 syslog() 函式產生一條錯誤訊息,但不會另外影響資源的 RGM 管理。


管理支援方法

資源上的管理動作包含設定與變更資源特性。ValidateUpdate 回呼方法可使資源類型實作掛上這些管理動作。

Validate

當建立資源和管理動作更新資源或其所在資源群組的特性時,將呼叫此選擇性方法。在資源類型的 Init_nodes 特性指示的叢集節點集上呼叫該方法。在套用建立或更新之前呼叫 Validate,而任意節點上的方法之故障退出碼都會導致取消建立或更新。

僅當透過管理動作變更資源或資源群組特性時,才會呼叫 Validate,而在 RGM 設定特性或監視器設定資源特性 StatusStatus_msg 時,不呼叫該方法。

Update

呼叫這個可選用的方法,以通知正在執行的資源特性已經變更。在管理動作成功地設定了資源或資源所在群組的特性之後,將呼叫 Update。將在資源線上運作的節點上呼叫該方法。該方法使用 API 存取函式,以讀取可能影響使用中資源的特性值,並相應地調整正在執行的資源。

Update 方法的失敗將導致 syslog() 函式產生一條錯誤訊息,但不會另外影響資源的 RGM 管理。

網路相關的回呼方法

使用網路位址資源的服務可能要求依照與網路位址配置相關的特定次序執行啟動或停止步驟。以下可選用的回呼方法 Prenet_startPostnet_stop 可使資源類型實作在配置或取消配置相關網路位址前後執行特殊的啟動動作與關閉動作。

Prenet_start

在配置相同資源群組中的網路位址之前,將呼叫這個可選用的方法來執行特殊的啟動動作。

Postnet_stop

在配置完相同資源群組中的網路位址之後,將呼叫這個可選用的方法來執行特殊的關閉動作。

監視器控制回呼方法

資源類型實作可選擇性地包含一個用於監視資源性能、報告資源狀況或在發生資源故障時採取動作的程式。Monitor_startMonitor_stop 以及 Monitor_check 方法支援資源類型實作中資源監視器的實作。

Monitor_start

在啟動資源之後,將呼叫這個可選用的方法來啟動資源的監視器。

Monitor_stop

在停止資源之前,將呼叫這個可選用的方法來停止資源的監視器。

Monitor_check

在對節點重新配置資源群組之前,將呼叫這個可選用的方法來存取該節點的可靠性。Monitor_check 方法必須被實施,以便該方法不與目前正在執行的其他方法衝突。