- 是不是開(kāi)放式架構呢?硬件是否有更廣泛的兼容性?用戶(hù)不愿被硬件鎖定;
- 是否能輕易的過(guò)度到雙活架構?并具備成熟的備份、容災方案?
- 是不是能和軟件定義存儲的控制平面無(wú)縫集成,為私有云奠定存儲自動(dòng)化的基礎;
- 是不是真正做到了計算、存儲和網(wǎng)絡(luò )三個(gè)關(guān)鍵組件的融合?基于 vSAN 的 VMware Cloud Foundation(VCF) 就能做到三者融合,使得用戶(hù)購買(mǎi)的 vSAN 成為未來(lái)就緒的超融合架構;
- 是不是更長(cháng)遠的延展性,形成私有云乃至混合云的基礎架構?不久后 VMware 和 AWS 基于 VCF 的方案將推出,使有狀態(tài)的業(yè)務(wù)負載在私有云和公有云之間在線(xiàn)漂移成為可能;
- 廠(chǎng)商是不是業(yè)內所認可的?技術(shù)是不是具有前瞻性?生態(tài)是不是成熟?這關(guān)系到數據能否長(cháng)期、安全地存放;也關(guān)系到萬(wàn)一出問(wèn)題是否有足夠的專(zhuān)業(yè)人員來(lái)解決?
言歸正傳,下面介紹 vSAN 雙活(也即 Virtual SAN Stretched Cluster)。自從 vSAN 雙活推出了,國內已經(jīng)陸陸續續不少用戶(hù)使用了,甚至有些用戶(hù)在上面運行 Oracle、ERP 等關(guān)鍵應用。
下面的介紹分成三個(gè)部分:
- 通過(guò)青島農業(yè)大學(xué)案例客觀(guān)地介紹 vSAN 雙活,乃至整個(gè) VMware SDDC(還包含了 NSX )的優(yōu)劣;
- vSAN 6.6 雙活新特性;
- vSAN 雙活的基本介紹,包含最小帶寬的計算公式;
青島農業(yè)大學(xué) vSAN 雙活案例視頻
這個(gè)存儲雙活的項目,其實(shí) VMware 介入的比較晚,此前已經(jīng)有存儲硬件雙活的方案推薦給用戶(hù)了。得益于當地的 VMware 同事的推薦,用戶(hù)從成本、管理等方面進(jìn)行綜合考慮,最終選擇了存儲軟件雙活也即 VMware vSAN 延伸集群。

青島農業(yè)大學(xué)的老師在 vFORUM 2016 中國大會(huì )上親自演講:
vSAN 6.6 雙活新特性
vSAN 6.6 新增的 23 個(gè)特性中,最亮眼的幾個(gè)之一,一定包含雙活新特性。在此之前,大家知道,VMware 只支持 FTT=1,兩副本分別存放在數據中心的兩個(gè)不同站點(diǎn)。這樣確實(shí)有不方便的地方,舉個(gè)例子,A 站點(diǎn)的 H11 出了故障,虛機就必須利用 vSphere HA 在 B 站點(diǎn)的 H21 上啟動(dòng)。如果在 A 站點(diǎn)本地還有冗余數據,就不用那么費神了。vSAN 6.6 在雙活上新的增強就解決了這個(gè)問(wèn)題,不僅如此,還有更出色的表現。
在 vSAN 6.6 支持 Failure Tolerance Method (縮寫(xiě)為 FTM ) 配置:
- 混合陣列和全閃存陣列都支持的是:跨站點(diǎn)做 RAID 1 , 每個(gè)站點(diǎn)內做 RAID 1;
- 僅全閃存支持:跨站點(diǎn)做 RAID 1 , 每個(gè)站點(diǎn)內做 RAID 5 或 RAID 6。
跨站點(diǎn)的冗余特性,對應的存儲策略是 Primary Failures to Tolerate (縮寫(xiě)為 PFTT) ,它的值可以設置為 1,或者為 0。設置為 1 時(shí),表示跨站點(diǎn)做鏡像;設置為 0 時(shí),表示只在一個(gè)站點(diǎn)上有副本,其使用場(chǎng)景后面會(huì )介紹。
站點(diǎn)內的冗余特性,對應的存儲策略是 Secondary Failures to Tolerate (縮寫(xiě)為 SFTT ),它的值可以設置為 0 到 3 。

vSAN 6.6 雙活 之 PFTT 和 SFTT

vSAN 6.6 雙活 雙重數據保護
這樣,即使發(fā)生站點(diǎn)級故障時(shí),剩余站點(diǎn)仍具本地的數據冗余,提高了可用性。以跨站點(diǎn)的 RAID 1+本地的 RAID 1,也即 SFTT=1 且 PFTT=1 為例,雖然一份數據共有 4 份副本,存儲利用率只有 25%。但針對關(guān)鍵業(yè)務(wù)應用,犧牲一些存儲利用率,換取更高的可用性是非常值得的。而且,這個(gè)冗余特性是可以在 vmdk 這個(gè)級別來(lái)設置的,也就是說(shuō),一個(gè)虛機里,可以根據不同的業(yè)務(wù)特性,為不同的 vmdk 設置不同的冗余度。有不少其他 HCI 產(chǎn)品,副本個(gè)數必須在整個(gè)集群設置,就過(guò)于粗糙了,這樣它只適用于單一的業(yè)務(wù)場(chǎng)景。
前面提到,PFTT 還可以設置為 0 時(shí),表示只在一個(gè)站點(diǎn)上有副本。它的使用場(chǎng)景包括,例如開(kāi)發(fā)測試數據可能不需要在兩個(gè)站點(diǎn)上都有副本;或者,已經(jīng)使用應用冗余(Exchange DAG、SQL AlwaysOn 等)的解決方案。需要注意的是,Oracle RAC 不太一樣,RAC 使用的是共享存儲,如果要全部層級高可用則需要在存儲這一級做雙活,vSAN 做為分布式的共享存儲,其雙活技術(shù)是可以支持 Oracle RAC。白皮書(shū)《Oracle Real Application Clusters on VMware Virtual SAN - REFERENCE ARCHITECTURE》上有更多細節。
微軟 Exchange DAG 和 SQL AlwaysOn,更像是服務(wù)器 +JBOD 存儲,在虛擬化環(huán)境里也即虛機+vmdk 的方式,兩個(gè) JBOD 存儲之間做鏡像。也就是說(shuō),在應用層,就實(shí)現了兩份副本,這樣就不需要存儲層來(lái)跨站點(diǎn)做兩份副本了。所以,針對這種場(chǎng)景,需將PFTT設置為 0。SFTT 設置為多少,看用戶(hù)希望在本地站點(diǎn)得到怎樣的冗余度。
在 vSAN 雙活上部署 DAG 或 AlwaysOn 的時(shí)候,還需要注意 Affinity 的設置。有兩個(gè)不同層次的 Affinity,計算資源池對應的是 vSphere DRS Affinity,而存儲資源池對應的是由 SPBM 設置的,決定存儲組件存放位置的,與 vSAN 雙活特性相關(guān)的 Affinity。
白皮書(shū)《Microsoft Exchange Server on VMware vSphere》,里面清楚地提到,為了防止兩個(gè) DAG 的虛機運行在同一個(gè) ESXi Host,也即防止單點(diǎn)故障,建議設置為 DRS anti-affinity 或者 guest-to-host affinity。原文如下:
Allowing two nodes from the same DAG to run on the same ESXi host for an extended period is not recommended when using symmetrical mailbox database distribution. This condition will create a single-point-of-failure scenario if the two nodes have the only copies of one or more mailbox data bases. DRS anti-affinity or guest-to-host affinity rules should be used to mitigate the risk of running active and passive mailbox databases on the same ESXi host.
在 vSAN 6.6 雙活的配置過(guò)程中,是在配置 SPBM,也即存儲策略時(shí)進(jìn)行選擇的。Affinity 可選擇的值有三個(gè):None,Preferred Fault Domain(首選故障域),Secondary Fault Domain ,如下圖。

vSAN site Affinity
其實(shí),Preferred 和 Secondary Fault Domain 在 vSAN 6.1(也即首次推出雙活技術(shù)的 vSAN 版本)時(shí)出現過(guò)。

vSAN 雙活 首選故障域
設計的原則是,Exchange VM #1 的 DRS affinity 規則和 vSAN 雙活站點(diǎn)的 affinity 規則設置成,讓虛機和存儲(也即 vmdk 對象)都在同一站點(diǎn),如站點(diǎn) A 上;Exchange VM #2 的 DRS affinity 規則和 vSAN 雙活站點(diǎn)的 affinity 規則設置成,讓虛機和存儲(也即 vmdk 對象)都在另外的同一站點(diǎn)上,如站點(diǎn) B。這兩個(gè)虛機屬于一個(gè) DAG,兩個(gè) vmdk 對象是同步的。
vSAN 延伸集群(Stretched Cluster)基礎知識
以下描述圍繞著(zhù) vSAN 6.1 版來(lái)展開(kāi)。
在業(yè)界為數不多的存儲雙活方案中,VMware 在原有成本較高的存儲硬件廠(chǎng)商提供的雙活方案之外,提供了具有高可靠、低成本、更細顆粒度、操作更簡(jiǎn)單的軟件雙活方案– vSAN 延伸集群。
vSAN 延伸集群相當于一個(gè) vSAN 集群橫跨兩個(gè)不同的站點(diǎn),每個(gè)站點(diǎn)是一個(gè)故障域。和其他存儲硬件的雙活方案類(lèi)似,兩個(gè)數據站點(diǎn)之間的往返延時(shí)少于 5 毫秒(距離一般在 100 公里以?xún)龋硗膺需要一個(gè)充當仲裁的見(jiàn)證(Witness)存放在不同于兩個(gè)數據站點(diǎn)之外的第三個(gè)站點(diǎn)上。Witness 不一定是物理服務(wù)器的 ESXi 主機上,也可以運行在第三個(gè)站點(diǎn)的虛機上,或者可以運行在公有云上,如國內的天翼混合云,或者 AWS、Azure、阿里云等。如下圖所示,Witness 所在站點(diǎn)與數據站點(diǎn)之間的網(wǎng)絡(luò )要求較為寬松,往返延時(shí)在 200 毫秒以?xún)龋瑤挸^(guò) 100Mb/s 即可。

vSAN 6.1 支持軟件雙活,也即延伸集群 (Stretched Cluster)
用 X+Y+Z 的形式表示延伸集群的主機情況,XYZ 分別代表 ABC 站點(diǎn)的主機數,A 和 B 都是數據站點(diǎn),C 站點(diǎn)放置見(jiàn)證主機。當前情況下,vSAN 延伸集群可支持最小 1+1+1 個(gè)主機,最大 15+15+1 個(gè)主機。
而兩個(gè)數據中心站點(diǎn)之間的帶寬,在 VMware 網(wǎng)站和博客里建議的是 10Gb/s,但實(shí)際上,只需要滿(mǎn)足業(yè)務(wù)需求即可,這個(gè)需求就是:
- Bandwidth(B) > Write bandwidth(Wb) * Data Multiplier(md)*Resynchronization Multiplier(mr)
其中,Data mutiplier 指數據倍數,包含了 VSAN 傳輸及其他相關(guān)操作的元數據開(kāi)銷(xiāo)。VMware 建議設為 1.4。Resynchronization 指重同步倍數,將可能的重同步的事件考慮在內。VMware 建議規劃帶寬的時(shí)候,在最大帶寬基礎之上,額外預留 25%,用于偶爾可能發(fā)生的重同步需求。也即,這個(gè)值建議為 1.25。舉例來(lái)說(shuō):
假設 VSAN 上工作負載為每秒 10000 個(gè)寫(xiě)操作,寫(xiě) IO 大小為 4KB,這就意味著(zhù)寫(xiě)帶寬為 40MB/s,或者 320Mb/s。這樣網(wǎng)絡(luò )帶寬要求為:
- B = 40MB/s * 1.4 * 1.25 = 70MB/s 或者 560 Mb/s
VSAN 延伸集群結合 vSphereReplication(VR)、SRM 可以實(shí)現自動(dòng)化更高、成本較低的兩地三中心的高級容災。同城之間,利用VSAN延伸集群提供數據的同步復制,異地之間,利用 VR 提供數據的異步復制。

vSAN 延伸集群結合 VR、SRM 實(shí)現兩地三中心高級容災
VMware 建議 vSAN 延伸集群在二層上部署組播,這樣比較簡(jiǎn)單。如果部署在三層,有 NSX(VMware 的軟件定義網(wǎng)絡(luò ))的支持,會(huì )如虎添翼,通過(guò) NSX 實(shí)現跨站點(diǎn)的網(wǎng)絡(luò )虛擬化,包括跨三層的二層網(wǎng)絡(luò )延伸,全分布式網(wǎng)關(guān),以及安全策略延伸,無(wú)需昂貴的私有的硬件交換機,即可實(shí)現 L2 Extension,如 OTV,VPLS,EVI 等。
不過(guò)需要注意的是,vSAN 與 NSX 本身是相互獨立的,沒(méi)有相互依賴(lài)的關(guān)系。

vSAN 延伸集群結合 NSX