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 機制的結果,無法定容量的節點將當機。