SunPlex 系統使得使用者和資料間的「路徑」上所有元件具有高度可用性,包括網路介面、應用程式本身、檔案系統和多重主機磁碟。 一般而言,如果系統內有任何單一 (軟體或硬體) 故障,叢集元件就具有高度可用性。
下表顯示了 SunPlex 元件故障 (硬體故障與軟體故障) 的種類,以及建立在高可用性框架中的恢復種類。
表 3–1 SunPlex 故障偵測與恢復的層次
故障的叢集元件 |
軟體恢復 |
硬體恢復 |
---|---|---|
資料服務 |
HA API、HA 框架 |
N/A |
公用網路配接卡 |
IP Network Multipathing |
多重公用網路配接卡 |
叢集檔案系統 |
主要與次要複製 |
多重主機磁碟 |
鏡像的多重主機磁碟 |
容體管理 (Solaris Volume Manager 與 VERITAS Volume Manager,後者僅可在基於 SPARC 的叢集中使用) |
硬體 RAID-5 (例如,Sun StorEdgeTM A3x00) |
整體裝置 |
主要與次要複製 |
至裝置的多重路徑,叢集傳輸接點 |
私有網路 |
HA 傳輸軟體 |
多重私有硬體獨立網路 |
節點 |
CMM,failfast 驅動程式 |
多重節點 |
Sun Cluster 軟體的高可用性框架可以快速地偵測到某個節點故障,並且為叢集中剩餘節點上的框架資源建立一個新的相等伺服器。 框架資源隨時皆可使用。 未受故障節點影響的框架資源,在恢復時完全可加以使用。 此外,已故障節點的框架資源一經恢復之後,便會成為可使用。 已恢復的框架資源不必等待所有其他的框架資源完成恢復。
大多數高度可用的框架資源都透明地恢復為使用此資源的應用程式 (資料服務)。 框架資源存取的語意會在各項節點故障時被完整地保留。 應用程式無法辨識出框架資源伺服器已移到另一個節點。 只要從另一節點到磁碟存在著另一個替代的硬體路徑,對於在使用檔案、裝置以及連接到此節點的磁碟容體上的程式而言,單一節點的故障便是完全透明。 其中的一項範例便是使用具有連到多重節點的通訊埠的多重主機磁碟。
為了讓資料免於毀損,所有的節點必須對叢集成員身份達成一致的協議。 必要時,CMM 會為了回應故障而協調叢集服務 (應用程式) 的叢集重新配置。
CMM 從叢集傳輸層接收有關連接到其他節點的資訊。 在重新配置期間,CMM 使用叢集交互連接來交換狀態資訊。
在偵測到叢集成員身份變更之後,CMM 會執行叢集的同步化配置,此時可能會根據新的叢集成員身份而重新分配叢集資源。
與舊版次 Sun Cluster 軟體不同,CMM 完全在核心程式中執行。
請參閱法定數目與法定裝置,以取得有關叢集如何保護自身不被分割為多個獨立叢集的詳細資訊。
如果 CMM 偵測到某節點發生緊急問題,則它會呼叫叢集框架以強制關閉 (當機) 節點,然後從叢集成員身份中移除該節點。 發生此情況的機制稱為 failfast。 Failfast 會導致節點以兩種方式關閉。
如果一個節點離開叢集,然後在沒有法定數目的情況下嘗試啟動一個新叢集,則它將被「隔離」,無法存取共用磁碟。 請參閱故障隔離,以取得有關 failfast 此種用法的詳細資訊。
如果一或多個叢集特定的常駐程式中止 (clexecd、rpc.pmfd、rgmd 或 rpc.ed),則此故障可由 CMM 偵測出來,而節點也跟著當機。
panic[cpu0]/thread=40e60: Failfast: Aborting because "pmfd" died 35 seconds ago. 409b8 cl_runtime:__0FZsc_syslog_msg_log_no_argsPviTCPCcTB+48 (70f900, 30, 70df54, 407acc, 0) %l0-7: 1006c80 000000a 000000a 10093bc 406d3c80 7110340 0000000 4001 fbf0 |
在當機之後,該節點可能重新啟動並嘗試重新連結叢集,或者停留在 OpenBootTM PROM (OBP) 提示符號處 (如果叢集由基於 SPARC 的系統組成)。 採用的動作由 auto-boot? 參數的設定所決定。 您可以在 OpenBoot PROM ok 提示符號處,使用 eeprom(1M) 來設定 auto-boot?。
CCR 使用兩階段確定演算法作為更新之用: 更新必須在所有叢集成員上成功完成,否則更新會轉返。 CCR 使用叢集交互連接來套用分散式更新。
雖然 CCR 是由文字檔所組成,請絕對不要手動編輯 CCR 檔案。 每一個檔案均含有總和檢查記錄,以確保一致性。 手動更新 CCR 檔案會導致節點或整個叢集停止運作。
CCR 依賴 CMM 來保證叢集只有在到達法定數目時才能執行。 CCR 負責驗證整個叢集的資料一致性,必要時執行恢復,以及促使資料的更新。