Sun Cluster 簡介 (適用於 Solaris 作業系統)

法定裝置

法定裝置是由兩個或多個節點共用的磁碟,這些節點所投票數用於建立執行叢集的法定數目。只有具有可用的法定票數, 叢集方能運作。法定裝置的使用時機,是在叢集劃分為個別的節點集,以便建立由哪一個節點集投票給新的叢集時。

叢集節點與法定裝置會投票以形成法定數目。依預設,當叢集節點啟動和成為叢集成員時,叢集節點會獲得一票的法定票數。當安裝節點或管理員將節點置於維護狀態時,節點可能會有零票。

法定裝置根據節點與裝置的連線數來獲得法定票數。當設定法定裝置時,它會獲得最大票數 N-1,其中 N 是由法定裝置連線確定的票數。例如,與兩個有非零票數節點連線的法定裝置,擁有一票法定票數 (二減一)。

資料完整性

Sun Cluster 系統嘗試防止資料毀壞並確保資料完整性。由於叢集節點共用資料與資源,叢集嚴禁分割為同時處於作用中的獨立分割區。CMM 保證任何時候均只有一個叢集可以作業。

叢集分割區可能會導致兩種問題:Split Brain 與 Amnesia。Split Brain 發生於節點間的叢集互連遺失以及叢集分割為子叢集時,每個子叢集均相信自己是唯一的分割區。不知道有其他子叢集的子叢集可能導致共用資源衝突,例如網路位址重複和資料毀壞。

如果所有節點都認為叢集處於不穩定的狀態,就會發生 Amnesia。例如,有一個具有節點 A 和節點 B 的雙節點叢集。如果節點 A 失敗,將僅在節點 B 上更新 CCR 中的配置資料,而不在節點 A 上更新。如果稍後節點 B 失敗並且節點 A 重新啟動,則節點 A 將使用舊的 CCR 內容執行。這種狀態稱為 Amnesia,並可能導致使用舊的配置資訊執行叢集。

藉由投每個節點一票,並強制給予作業中的叢集多數票,便得以避免 Split Brain 與 Amnesia 的狀況發生。具有多數票的分割區有法定數目,並可以作業。如果叢集中有兩個以上的節點,則這種多數票機制會運作得極好。在兩個節點的叢集中,票數為兩票。如果這樣的叢集被分割,外部投票可以使分割區取得法定數目。此外部投票由法定裝置提供。法定裝置可以是兩個節點間共用的任何磁碟。

表 2–1 描述 Sun Cluster 軟體如何使用法定數目來避免 Split Brain 與 Amnesia。

表 2–1 叢集法定數目以及 Split-Brain 與 Amnesia 問題

分割區類型 

法定數目解決方案 

Split Brain 

只允許具有多數票的分割區 (子叢集) 作為叢集來執行 (僅可存在一個這樣具有多數票的分割區)。某個節點在法定數目的競爭中失敗後便會當機。 

Amnesia 

保證在啟動叢集時,該叢集至少有一個節點是最新叢集成員關係中的成員之一 (因此具有最新的配置資料)。 

故障隔離

叢集的主要問題是導致叢集被分割的故障 (稱為 Split Brain)。發生此情形時,不是所有的節點均可通訊,所以個別節點或節點子集可能會嘗試形成個別或子集叢集。每個子集或分割區可能「相信」自己擁有對多重主機磁碟的唯一存取權和所有權。多個節點嘗試寫入磁碟可能導致毀壞資料。

故障隔離藉由防止存取磁碟,來限制節點存取多重主機磁碟。當節點離開叢集時 (故障或被分割),故障隔離可確保節點不會再存取碟。僅目前的成員可以存取磁碟,因此確保了資料完整性。

Sun Cluster 系統使用 SCSI 磁碟保留來實現故障隔離。使用 SCSI 保留,便可以將故障節點與多重主機磁碟相「隔離」,防止它們存取這些磁碟。

當叢集成員偵測到另一個節點已經不再經由叢集互連進行通訊,即會啟動故障隔離程序來防止故障節點存取共用磁碟。發生故障隔離時,隔離的節點便會當機,並且其主控台上會顯示「保留衝突」訊息。

用於故障隔離之 Failfast 機制

Failfast 機制會使故障節點當機,但它不阻止故障節點重新啟動。發生當機之後,該節點可能會重新啟動並嘗試重新加入叢集。

如果節點在叢集中失去與其他節點的連接,並且也不是可達法定容量的分割區,它會被其他節點強制從叢集中移除。另一可達法定容量之分割區部分的節點,將共用磁碟保留。作為 Failfast 機制的結果,無法定容量的節點將當機。