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 作業系統)」中的第 5 章「管理法定數目」中說明的程序進行配置。

關於故障隔離

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

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

磁碟裝置服務為使用多重主機裝置的服務提供容錯移轉功能。當目前作為磁碟裝置群組的主要節點 (所有者) 的叢集成員發生故障或無法連線時,將會選擇新的主要節點。新的主要節點可以讓對磁碟裝置的存取繼續,而只發生短暫中斷。在此過程中,舊的主要節點必須喪失對裝置的存取權才能啟動新的主要節點。然而,當成員退出叢集且接觸不到時,叢集就無法通知該主要節點釋放裝置。因此,您需要一個方法讓存活的成員可以從故障的成員接手控制和存取整體裝置。

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

SCSI-2 磁碟保留支援一種形式的保留,它會授予對所有連接到該磁碟的節點的存取權 (當不存在保留時)。或者,存取權被限制為某一單一節點 (存放該保留的節點)。

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

如果發現節點不再是叢集成員,則在此節點和其他節點間共用的所有磁碟上觸發 SCSI 保留。隔離的節點可能不「發覺」其已被隔離,並且如果其嘗試存取共用磁碟,則會偵測到保留和當機。

用於故障隔離之 Failfast 機制

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

叢集成員的節點對於它們有存取權的磁碟,包括法定數目的磁碟,會連續啟用特定的 ioctl,也就是 MHIOCENFAILFAST。Ioctl 是用於磁碟機的指令。Ioctl 使節點可以在因磁碟被其他節點保留而無法存取時將自己當機。

MHIOCENFAILFAST ioctl 會讓磁碟機檢查從每次讀取和寫入節點發送給磁碟的 Reservation_Conflict 錯誤代碼時傳回的錯誤。Ioctl 會在背景中定期地對磁碟發出測試作業,以檢查 Reservation_Conflict。如果傳回 Reservation_Conflict,則前景與背景的控制流程路徑都會發生錯誤。

對於 SCSI-2 磁碟而言,保留並不是永久性的 — 它們並不能在節點重新啟動時存活。對於具有 Persistent Group Reservation (PGR) 的 SCSI-3 磁碟而言,保留資訊是儲存在磁碟上,並且在節點重新啟動後仍會保留。Failfast 機制工作方式相同,無論您使用的是 SCSI-2 磁碟還是 SCSI-3 磁碟。

如果節點在叢集中失去與其他節點的連接,並且也不是可達法定容量的分割區,它會被其他節點強制從叢集中移除。另一可達法定容量之分割區部分的節點,將共用磁碟保留。如果節點嘗試存取共用磁碟次數不是法定數目,則 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 假定在您正在 Node ANode B 上執行關鍵作業應用程式 (如 Oracle database)。如果節點 A節點 B 不可用,且無法存取共用資料,則您可能想要使整個叢集當機。否則,該配置為次佳配置,因為它沒有提供高度可用性。

如需有關與異常相關的最佳方法的資訊,請參閱遵照法定裝置最佳方法

圖 3–3 非典型的配置

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

不正確的法定數目配置

本節提供了應避免的法定數目配置之範例。如果要瞭解建議使用的法定數目配置之範例,請參閱建議使用的法定數目配置

圖例:配置 1:NodeA-B. A/B connect to -> QD1/2. Config2:NodeA-D. A/B -> QD1/2. Config3:NodeA-C. A/B-> QD1/2 & C -> QD2.