前面說到了 Fault Domain,我們可以把相同機櫃的 host 匡列成同個 Group,這樣 Object 下的 Component 就會被分散在不同機櫃裡。但如果擔心地震、火災等自然災害會讓整個 Datacenter 遭殃,不就會造成永久的 Data loss 嗎?
Stretched Cluster 是一種異地備援機制,可以建立兩個位於不同地區的 Datacenter 作為 Fault Domain。不過由於跨地區,Witness 必須是獨立於 Cluster 之外的 Host,可以是單個,也可以是多個。
由於是跨地區的 Datacenter 備份機制,規定了兩個 Datacenter 之間的互相 ping 時間必須在 5ms 以內,而且只能設定兩個 Fault Domain:Preferred 和 Secondary Domain。由於只有兩個 Domain,所以 FTT 只能設定為 FTT=1,RAID 只能設定為 RAID-1。
接下來說說在 Stretched Cluster 中,資料是如何進行 I/O 的。Preferred Domain 為主要進行 I/O 的對象,對於寫入,為了確保資料的一致性,只有當資料成功寫入兩邊的 SSD 時,才算是寫入完畢。
針對資料讀取的部分,vSAN Stretched Cluster 支援 Site Read Locality,會優先讀取離自己最近的資料。
而 Witness 作為一個節點或一個 Fault Domain,它的作用是在 Datacenter 發生故障時,作為 tiebreaker 仲裁,決定當 VM 的 I/O 過來時,要去哪個 Datacenter 存取,主要是在故障發生後保證整個系統的可用性。
當一個 Datacenter 出現異常時,例如掉電或失去與 Witness 的聯繫,Witness 會把路由導向健康的 Datacenter。
當兩個 Datacenter 出現網路問題,但各自都能連上 Witness,所以都覺得自己是健康的。這時需要 Witness 作為仲裁,投下關鍵的一票,指定誰是外部的存取對象。
如果只有 Witness node 故障,Datacenter 裡的 VM 還是可以照常運行,只是會在 vCenter 上的 vSAN Health 監控平台提醒恢復 Witness node。
當這種情況發生時,只能人工介入,在 vCenter 上的 vSAN Health 監控平台會對其進行報警。
更多vSAN相關的文章,歡迎參閱我的部落格: https://kaichiachen.github.io/2023/08/25/vsan/vsan_stretched_cluster/