本節包含下列主題︰
如需 Sun Cluster 軟體支援作為法定裝置的特定裝置清單,請聯絡您的 Sun 服務供應商。
由於叢集節點共用資料與資源,因此叢集永遠不能分割為同時處於使用中的單個分割區,因為多個使用中的分割區可能導致資料毀損。叢集成員關係監視器 (CMM) 與法定數目演算法保證同一叢集在任何時候均最多有一個實例處於作業中,即使分割了叢集互連亦是如此。
如需有關法定數目和 CMM 的說明,請參閱「Sun Cluster 簡介 (適用於 Solaris 作業系統)」中的「叢集成員關係」。
當節點間的叢集互連遺失且該叢集被分割成子叢集時會出現 Split Brain。每個分割區都「認為」自己是唯一的分割區,因為一個分割區中的節點無法與其他分割區中的節點進行通訊。
關機後叢集重新啟動時 (其中叢集配置資料比關機時還舊) 會發生 Amnesia。當您不是在上一次起作用的節點上啟動叢集時可能會發生此問題。
Sun Cluster 軟體透過以下方法避免 Split Brain 與 Amnesia:
為每個節點指定一票
託管作業中叢集的多數投票
具有多數投票的分割區獲得法定數目,可以進行運作。在一個叢集中配置兩個以上的節點時,該多數投票機制會防止 Split Brain 與 Amnesia。但是,在一個叢集中配置兩個以上的節點時,僅僅計數節點票數是不夠的。在兩個節點的叢集中,票數為兩票。如果此類包含兩個節點的叢集被分割,則其中一個分割區需要外部投票才能獲得法定數目。該外部投票由法定裝置提供。
使用 scstat -q 指令來確定以下資訊:
配置的投票總數
目前票數
法定要求票數
如需有關此指令的更多資訊,請參閱 scstat(1M)。
節點與法定裝置均會向叢集投票以形成法定數目。
節點根據節點狀態進行投票︰
當節點啟動並成為叢集成員時,其票數為 1。
安裝節點時,其票數為 0。
當系統管理?將節點置於維護狀態時,節點的票數為 0。
法定裝置根據與該裝置連接的票數進行投票。當您配置法定裝置時,Sun Cluster 軟體為法定裝置指定票數 N-1,其中 N 是連接至此法定裝置的票數。例如,與兩個有非零票數節點連線的法定裝置,擁有一票法定票數 (二減一)。
如果滿足以下兩個條件之一,則法定裝置就會投票:
至少有一個目前與法定裝置連接的節點是叢集成員。
至少有一個目前與法定裝置連接的節點正在啟動,且該節點為最後一個叢集分割區的成員才能擁有該法定裝置。
您在安裝叢集的過程中配置法定裝置,或者稍後使用「Sun Cluster 系統管理指南(適用於 Solaris 作業系統)」中的第 5 章「管理法定數目」中說明的程序進行配置。
叢集的主要問題是導致叢集被分割的故障 (稱為 Split Brain)。發 split brain 時,不是所有節點均可通訊,所以個別節點或節點子集可能會嘗試形成個別的叢集或子集叢集。每個子集或分割區都可能會「認為」自己對多重主機裝置擁有唯一的存取權和所有權。當多個節點嘗試寫入磁碟時會發生資料毀損。
故障隔離藉由實際防止磁碟存取來限制節點存取多重主機裝置。當節點離開叢集時 (故障或被分割),故障隔離可確保節點不會再存取碟。只有目前的成員可以存取磁碟,因此維持了資料的完整性。
磁碟裝置服務為使用多重主機裝置的服務提供容錯移轉功能。當目前作為磁碟裝置群組的主要節點 (所有者) 的叢集成員發生故障或無法連線時,將會選擇新的主要節點。新的主要節點可以讓對磁碟裝置的存取繼續,而只發生短暫中斷。在此過程中,舊的主要節點必須喪失對裝置的存取權才能啟動新的主要節點。然而,當成員退出叢集且接觸不到時,叢集就無法通知該主要節點釋放裝置。因此,您需要一個方法讓存活的成員可以從故障的成員接手控制和存取整體裝置。
Sun Cluster 系統使用 SCSI 磁碟保留來實現故障隔離。使用 SCSI 保留,便可以將發生故障的節點與多重主機裝置「隔離」,防止它們存取這些磁碟。
SCSI-2 磁碟保留支援一種形式的保留,它會授予對所有連接到該磁碟的節點的存取權 (當不存在保留時)。或者,存取權被限制為某一單一節點 (存放該保留的節點)。
當叢集成員偵測到另一個節點在叢集交互連接上已經不再進行通訊,即會起始隔離程序來防止其他節點存取共用磁碟。發生此故障隔離時,隔離的節點將會當機,並在其主控台上顯示「保留衝突」訊息。
如果發現節點不再是叢集成員,則在此節點和其他節點間共用的所有磁碟上觸發 SCSI 保留。隔離的節點可能不「發覺」其已被隔離,並且如果其嘗試存取共用磁碟,則會偵測到保留和當機。
叢集框架用於確保故障的節點無法重新啟動和開始寫入共用儲存體的機制稱為 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 公用程式設定此參數。
以下清單包含關於法定數目配置的事實:
法定裝置可包含使用者資料。
在 N 法定裝置中的每一個都連接到 1 到 N 個節點和 N+1 節點的 N+1 配置中,1 到 N 的全部節點或任何 N/2 節點當機的情況下叢集仍可運作。此可用性假定法定裝置運作正常。
在單一法定裝置連接到所有節點的 N 節點配置中,N-1 節點中任何節點當機的情況下叢集任可正常運作。此可用性假定法定裝置運作正常。
在 N 個節點的配置 (其中,單一法定裝置連線至所有節點) 中,如果所有叢集節點均可用,則該法定裝置發生故障時,叢集可免於當機。
如果要瞭解需要避免的法定配置之範例,請參閱不正確的法定數目配置。如果要瞭解建議使用的法定配置之範例,請參閱建議使用的法定數目配置。
您必須遵守以下需求。如果忽略了這些需求,則您可能會降低叢集的可用性。
請確保 Sun Cluster 軟體支援您的特定裝置作為法定裝置。
如需 Sun Cluster 軟體支援作為法定裝置的特定裝置清單,請聯絡您的 Sun 服務供應商。
Sun Cluster 軟體支援兩種類型的法定裝置:
支援 SCSI-3 PGR 保留的多重主機共用磁碟
支援 SCSI-2 保留的雙重主機共用磁碟
在雙節點配置中,您必須配置至少一個法定裝置以確保其他節點發生故障後單一節點可以繼續運作。請參閱圖 3–2。
如果要瞭解有關需要避免的法定數目配置之範例,請參閱不正確的法定數目配置。如果要瞭解建議使用的法定數目配置之範例,請參閱建議使用的法定數目配置。
請使用以下資訊來為您的拓樸評估最佳法定配置:
您是否具有可連線至叢集所有節點的裝置?
如果有,請將該裝置配置為唯一的法定裝置。您無需配置其他法定裝置,因為您的配置已是最佳配置。
如果您忽略此需求又新增另一個法定裝置,額外的法定裝置會降低叢集的可用性。
如果沒有,請配置您的雙埠裝置。
請確保由法定裝置投票的總票數嚴格少於由節點投票的總票數。否則,如果所有磁碟均不可用,則節點無法形成叢集 (即使所有節點都在正常運作)。
在特定環境下,您可能需要降低叢集總體可用性以滿足您的需要。在這些情形下,可以忽略此最佳方式。然而,不遵守此最佳方式會降低整體可用性。例如,在非典型的法定數目配置中簡述的配置中,叢集的可用性較低︰法定票數超出了節點票數。叢集具有以下特性,即如果失去對 Nodes A 和 Node B 之間共用儲存體的存取權,則整個叢集發生故障。
請參閱非典型的法定數目配置,以瞭解有關此最佳方法的例外情況。
請指定共用儲存裝置存取權之每個節點對之間的法定裝置。此法定數目配置會加速故障隔離程序。請參閱多於兩個節點的配置中的法定數目。
加入節點或節點當機後,法定裝置會稍微減慢重新配置的速度。因此,除非必要,否則請不要增加更多的法定裝置。
如果要瞭解需要避免的法定數目配置之範例,請參閱不正確的法定數目配置。如果要瞭解建議使用的法定數目配置之範例,請參閱建議使用的法定數目配置。
本節提供了建議使用的法定數目配置之範例。如果要瞭解應避免的法定數目配置之範例,請參閱不正確的法定數目配置。
需要有兩票法定票數才能形成包含兩個節點的叢集。這兩票可以從兩個叢集節點獲得,或者從一個節點和一個法定裝置獲得。
您可以配置多於兩個節點而不包含法定裝置的叢集。然而,如果這樣,則必須使用叢集中的大多數節點才能啟動叢集。
圖 3–3 假定在您正在 Node A 和 Node B 上執行關鍵作業應用程式 (如 Oracle database)。如果節點 A 與節點 B 不可用,且無法存取共用資料,則您可能想要使整個叢集當機。否則,該配置為次佳配置,因為它沒有提供高度可用性。
如需有關與異常相關的最佳方法的資訊,請參閱遵照法定裝置最佳方法。
本節提供了應避免的法定數目配置之範例。如果要瞭解建議使用的法定數目配置之範例,請參閱建議使用的法定數目配置。