Sun Cluster 概念指南 (適用於 Solaris 作業系統)

法定數目與法定裝置

本節包含下列主題︰


注意 –

如需 Sun Cluster 軟體支援作為法定裝置的特定裝置清單,請聯絡您的 Sun 服務供應商。


由於叢集節點共用資料與資源,因此叢集永遠不能分割為同時處於使用中的單個分割區,因為多個使用中的分割區可能導致資料毀損。叢集成員關係監視器 (CMM) 與法定數目演算法保證同一叢集在任何時候均最多有一個實例處於作業中,即使分割了叢集互連亦是如此。

如需關於 CMM 的更多資訊,請參閱Sun Cluster 簡介 (適用於 Solaris 作業系統)」中的「叢集成員關係」

叢集分割區會導致兩種問題:

當節點間的叢集互連遺失且該叢集被分割成子叢集時會出現 Split Brain。因為一個分割區中的節點無法與其他分割區中的節點通信,所以每個分割區會認為其自身是唯一的分割區。

關機後叢集重新啟動時 (其中叢集配置資料比關機時還舊) 會發生 Amnesia。當您在某節點 (該節點不在最後使用的叢集分割區內) 上啟動該叢集時,可能會發生此問題。

Sun Cluster 軟體透過以下方法避免 Split Brain 與 Amnesia:

具有多數投票的分割區獲得法定數目,可以進行運作。在一個叢集中配置兩個以上的節點時,該多數投票機制會防止 Split Brain 與 Amnesia。但是,在一個叢集中配置兩個以上的節點時,僅僅計數節點票數是不夠的。在兩個節點的叢集中,票數為兩票。如果此類包含兩個節點的叢集被分割,則其中一個分割區需要外部投票才能獲得法定數目。該外部投票由法定裝置提供。

關於法定票數

使用 scstat -q 指令來確定以下資訊:

如需有關該指令的更多資訊,請參閱 scstat(1M)

節點與法定裝置均會向叢集投票以形成法定數目。

節點依據節點的狀態投票:

法定裝置根據連線至該裝置的投票數目進行投票。當您配置法定裝置時,Sun Cluster 軟體會為法定裝置指定票數 N-1,其中 N 是與法定裝置連線的投票數目。例如,連線至兩個非零票數之節點的法定裝置擁有一票法定票數 (二減一)。

如果滿足以下兩個條件之,則法定裝置就會投票:

您可以在叢集安裝過程中配置法定裝置,也可在稍後利用Sun Cluster 系統管理指南 (適用於 Solaris 作業系統)」的「管理法定數目」中所述的程序來配置法定裝置。

關於故障隔離

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

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

磁碟裝置服務為利用多重主機裝置的服務提供防故障備用功能。當目前是磁碟裝置群組的主要 (所有者) 叢集成員故障或無法到達時,會選出新的主要成員,繼續提供磁碟裝置群組的存取,期間只出現輕微的中斷情形。在此處理程序期間,啟動新的主要成員之前,舊的主要成員會放棄存取裝置。然而,當成員退出叢集且接觸不到時,叢集就無法通知該主要節點釋放裝置。因此,您需要一個方法讓存活的成員可以從故障的成員接手控制和存取整體裝置。

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

SCSI‐2 磁碟保留支援一種保留形式,授與存取權給所有連接磁碟的節點 (沒有保留存在) 或限制單一節點的存取權 (握有保留的節點)。

當叢集成員偵測到另一個節點在叢集交互連接上已經不再進行通訊,即會起始隔離程序來防止其他節點存取共用磁碟。當發生此故障隔離時,一般會使隔離節點發生混亂,並在其主控台上出現「保留衝突」訊息。

偵測到有節點不再是叢集成員時,會放置 SCSI 保留在此節點與其他節點之間共用的所有磁碟上,所以就發生保留衝突的狀況。隔離節點可能不知道,自己已被隔離,而且如果它嘗試存取其中一個共用磁碟,就會偵測到保留和當機。

故障隔離的 Failfast 機制

叢集框架用來確保故障節點無法重新啟動與開始寫入共用儲存體的機制稱為 failfast

叢集成員的節點對於它們有存取權的磁碟,包括法定數目的磁碟,會連續啟用特定的 ioctl,也就是 MHIOCENFAILFAST。此 ioctl 為磁碟驅動式的指示詞,會讓節點在無法存取已被保留為其他節點之用的磁碟時,有能力自我混亂。

MHIOCENFAILFAST ioctl 會使驅動程式檢查由節點發佈給磁碟的每次讀取與寫入的錯誤傳回,以取得 Reservation_Conflict 錯誤碼。ioctl 會在背景中定期地對磁碟發出測試作業,以檢查 Reservation_Conflict。如果傳回 Reservation_Conflict,前景與背景的控制流路徑都會混亂。

對於 SCSI-2 磁碟而言,保留並不是永久性的 — 它們並不能在節點重新啟動時存活。對於具有 Persistent Group Reservation (PGR) 的 SCSI-3 磁碟而言,保留資訊是儲存在磁碟上,並且在節點重新啟動後仍會保留。不管您是否有 SCSI-2 磁碟或 SCSI-3 磁碟,failfast 機制的運作都一樣。

如果節點在叢集中失去與其他節點的連接,並且也不是可達法定容量的分割區,它會被其他節點強制從叢集中移除。另一可達法定容量之分割區部分的節點,在共用磁碟上放置了保留,且當沒有法定容量的節點嘗試存取共用磁碟時,它會收到保留衝突並且由於 failfast 機制而混亂。

在當機之後,該節點可能重新啟動並嘗試重新連結叢集,或者停留在 OpenBootTM PROM (OBP) 提示符號處 (如果叢集由基於 SPARC 的系統組成)。採用的動作由 auto-boot? 參數的設定所決定。您可以在基於 SPARC 的叢集中,於 OpenBoot PROM ok 提示符號處,使用 eeprom(1M) 來設定 auto-boot?,或者在基於 x86 的叢集中,於 BIOS 啟動後使用您所選擇執行的 SCSI 公用程式來設定。

關於法定數目配置

以下清單包含關於法定數目配置的事實:

如需要避免使用的法定數目配置範例,請參閱不正確的法定數目配置。如需建議使用的法定數目配置範例,請參閱建議使用的法定數目配置

遵守法定裝置需求

您必須遵守以下需求。若不遵守,可能會危及叢集的可用性。

如需要避免使用的法定數目配置範例,請參閱不正確的法定數目配置。如需建議使用的法定數目配置範例,請參閱建議使用的法定數目配置

遵守法定裝置最佳方式

請使用以下資訊來為您的拓樸評估最佳法定配置:

如需要避免使用的法定數目配置範例,請參閱不正確的法定數目配置。如需建議使用的法定數目配置範例,請參閱建議使用的法定數目配置

建議使用的法定數目配置

如需要避免使用的法定數目配置範例,請參閱不正確的法定數目配置

兩個節點配置中的法定數目

需要有兩票法定票數才能形成包含兩個節點的叢集。這兩票可以來自兩個叢集節點,或一個節點和一個法定裝置。

圖 3–2 兩個節點的配置

圖例:顯示使用連線至兩個節點的一個法定裝置的節點 A 與節點 B。

多於兩個節點的配置中的法定數目

可以在無法定裝置的情況下配置多於兩個節點的叢集。但是,這樣做將無法在叢集中不具備多數節點的情況下啟動叢集。

圖例:配置 1:節點 A 至 D。A/B 連線至 (->) 法定裝置 1。C/D -> 法定裝置 2。配置 2:節點 A 至 C。A/C -> 法定裝置 1。B/C -> 法定裝置 2。配置 3:節點 A 至 C -> 一個法定裝置。

非典型的法定數目配置

圖 3–3 假定您正在節點 A節點 B 上運行對任務至關重要的應用程式 (例如,Oracle 資料庫)。如果節點 A節點 B 不可用,且無法存取共用資料,則您可能想要使整個叢集當機。否則,該配置為次佳配置,因為它沒有提供高度可用性。

如需關於與此例外相關的最佳方式之資訊,請參閱遵守法定裝置最佳方式

圖 3–3 非典型的配置

圖例:節點 A 至 D。節點 A/B 連線至法定裝置 1-4。節點 C 連線至法定裝置 4。節點 D 連線至法定裝置 4。總票數 = 10。法定要求票數 = 6。

不正確的法定數目配置

如需建議使用的法定數目配置範例,請參閱建議使用的法定數目配置

圖例:配置 1:節點 A/B 連線至法定裝置 1/2。配置 2:節點 A 至 D。A/B 連線至法定裝置 1/2。配置 3:節點 A 至 C。A/B 連線至法定裝置 1/2。C 連線至法定裝置 2。