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