ONTAP Select HA 增強了資料保護
高可用性(HA)磁碟活動訊號、HA 信箱、HA 活動訊號、HA 容錯移轉和恢復可共同增強資料保護。
磁碟活動訊號
儘管 ONTAP Select HA 架構利用了傳統 FAS 陣列的許多程式碼路徑,但仍存在一些例外。其中一個例外是磁碟心跳機制的實作。磁碟心跳機制是一種非網路通訊方法,叢集節點使用它來防止網路隔離導致腦裂行為。腦裂是叢集分區的結果,通常由網路故障引起,在這種情況下,叢集中的一方會誤認為另一方已當機,並試圖接管叢集資源。
企業級 HA 實作必須能夠妥善處理此類場景。ONTAP 透過一種客製化的、基於磁碟的心跳機制來實現這一點。這是 HA 信箱的工作,它是實體儲存上的一個位置,叢集節點使用該位置來傳遞心跳訊息。這有助於叢集確定連線狀態,從而在發生容錯移轉時定義仲裁。
對於採用共享儲存高可用性架構的 FAS 陣列,ONTAP 透過以下方式解決腦裂問題:
-
SCSI 持續保留
-
持續性 HA 中繼資料
-
HA 狀態透過 HA 互連傳送
然而,在 ONTAP Select 叢集的無共用架構中,節點只能存取自身的本機儲存,而無法存取高可用性(HA)夥伴的本機儲存。因此,當網路分區將 HA 對的兩端隔離時,先前用於確定叢集仲裁和故障轉移行為的方法將不再適用。
儘管現有的腦裂檢測和規避方法無法使用,但仍需要一種調解方法,該方法必須符合無共享環境的限制。ONTAP Select 進一步擴展了現有的郵箱基礎架構,使其能夠在網路分區時充當調解機制。由於共用儲存不可用,調解是透過 NAS 存取郵箱磁碟來實現的。這些磁碟分佈在整個叢集中,包括雙節點叢集中的調解節點,並使用 iSCSI 協定。因此,叢集節點可以根據對這些磁碟的存取做出智慧故障轉移決策。如果一個節點可以存取其高可用性夥伴之外的其他節點的郵箱磁碟,則該節點很可能處於正常運作狀態。
|
|
ONTAP Select 之所以需要四個獨立的節點或一個用於雙節點叢集的中介器,是因為其採用了郵箱架構和基於磁碟的活動訊號機制來解決叢集仲裁和腦裂問題。 |
HA 信箱張貼
HA 郵箱架構使用訊息張貼模型。叢集節點會定期向叢集中所有其他郵箱磁碟(包括中介器)張貼訊息,表示該節點已啟動並正在執行。在健全叢集的任何時間點,叢集節點上的單一郵箱磁碟都會收到來自所有其他叢集節點張貼的訊息。
每個 Select 叢集節點都連接著一個專門用於共用信箱存取的虛擬磁碟。該磁碟被稱為中介信箱磁碟,因為它的主要功能是在節點故障或網路分割時充當叢集的中介機制。此信箱磁碟包含每個叢集節點的分割區,並透過 iSCSI 網路由其他 Select 叢集節點掛載。這些節點會定期將健全狀況發佈到信箱磁碟的適當分割區。透過使用分佈在整個叢集中的網路可存取信箱磁碟,您可以透過可連線性矩陣推斷節點健全狀況。例如,叢集節點 A 和 B 可以發佈到叢集節點 D 的信箱,但無法發佈到節點 C 的信箱。此外,叢集節點 D 也無法發佈到節點 C 的信箱,因此節點 C 很可能已當機或網路隔離,應予以接管。
HA 心跳
與 NetApp FAS 平台類似,ONTAP Select 會定期透過 HA 互連發送 HA 心跳訊息。在 ONTAP Select 叢集內部,此程序透過 HA 夥伴之間的 TCP/IP 網路連線完成。此外,基於磁碟的心跳訊息也會傳送到所有 HA 郵箱磁碟,包括中介郵箱磁碟。這些訊息每隔幾秒鐘發送一次,並定期被讀取。這種頻繁的發送和接收使得 ONTAP Select 叢集能夠在大約 15 秒內偵測到 HA 故障事件,與 FAS 平台的偵測視窗相同。當不再讀取心跳訊息時,將觸發故障轉移事件。
下圖顯示從單一 ONTAP Select 叢集節點(節點 C)的角度,透過 HA 互連和中介磁碟傳送和接收活動訊號訊息的程序。
|
|
網路活動訊號會透過 HA 互連傳送至 HA 合作夥伴節點 D,而磁碟活動訊號則會使用所有叢集節點 A、B、C 和 D 的信箱磁碟。 |
四節點叢集中的 HA 心跳:穩定狀態 
HA 容錯移轉與還原
在故障轉移操作期間,倖存節點會使用其高可用性 (HA) 夥伴節點資料的本機副本,承擔對等節點的資料服務職責。客戶端 I/O 可以不間斷地繼續運行,但必須先將資料變更複製回對等節點,才能進行復原操作。請注意,ONTAP Select 不支援強制恢復,因為這會導致倖存節點上儲存的變更遺失。
當重新開機的節點重新加入叢集時,會自動觸發同步回復作業。同步回復所需的時間取決於多種因素。這些因素包括必須複寫的變更數量、節點之間的網路延遲、以及每個節點上磁碟子系統的速度。同步回復所需的時間可能會超過 10 分鐘的自動回復時間範圍。在這種情況下,需要在同步回復之後手動回復。可以使用下列命令來監控同步回復的進度:
storage aggregate status -r -aggregate <aggregate name>