Sun Cluster 系統使使用者和資料之間的「路徑」上所有元件 (包括網路介面、應用程式本身、檔案系統和多重主機裝置) 都具有高度可用性。一般而言,如果叢集元件在系統內有任何單一(軟體或硬體) 故障之後仍然存在,就具有高度可用性。
下表顯示了各種 Sun Cluster 元件故障 (硬體和軟體均包括) 和內建於高度可用性框架中的各種回復。
表 3–1 Sun Cluster 故障偵測和回復的層級
故障的叢集元件 |
軟體復原 |
硬體恢復 |
---|---|---|
資料服務 |
HA API、HA 框架 |
不適用 |
公用網路配接卡 |
Internet Protocol (IP) 網路多重路徑 |
多重公用網路配接卡 |
叢集檔案系統 |
主要與次要複製 |
多重主機裝置 |
鏡像的多重主機裝置 |
容體管理 (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 |
發生當機之後,節點可能會重新啟動並嘗試重新加入叢集。或者,如果叢集由基於 SPARC 的系統組成,則節點可能會保持在 OpenBootTM PROM (OBP) 提示符號狀態。節點的下一個動作由 auto-boot? 參數的設定決定。您可以在 OpenBoot PROM ok 提示符號中使用 eeprom(1M) 設定 auto-boot?。
CCR 使用兩階段確定演算法作為更新之用:更新必須在所有叢集成員上都成功完成,否則該更新將會回復。CCR 使用叢集交互連接來套用分散式更新。
雖然 CCR 是由文字檔所組成,請絕對不要手動編輯 CCR 檔案。每一個檔案均含有總和檢查記錄,以確保節點之間的一致性。手動更新 CCR 檔案會導致節點或整個叢集停止運作。
CCR 依賴 CMM 來保證叢集只有在到達法定數目時才能執行。CCR 負責驗證整個叢集的資料一致性,必要時執行復原,以及促使資料的更新。