具有區域冗餘存儲 (ZRS) 的 Azure 共享磁盤的性能
2021 年 9 月 9 日,微軟宣布的普遍可用性Azure 磁盤存儲的區域冗餘存儲 (ZRS) ,包括 Azure 共享磁盤。
有趣的是,您現在可以構建跨可用區 (AZ) 的基於共享存儲的故障轉移集群實例。由於集群節點位於不同的 AZ,用戶現在可以獲得 99.99% 的可用性 SLA。 在支持區域冗餘存儲之前,Azure 共享磁盤僅支持本地冗餘存儲 (LRS),將集群部署限制在單個 AZ,如果 AZ 脫機,用戶很容易受到中斷的影響。
但是,在使用 ZRS 部署 Azure 共享磁盤時需要注意一些限制。
- 僅支持高級固態驅動器 (SSD) 和標準 SSD。 不支持 Azure 超級磁盤。
- 帶有 ZRS 的 Azure 共享磁盤目前僅在美國西部 2、西歐、北歐和法國中部區域可用
- 高級 SSD Azure 共享磁盤不支持讀取和寫入磁盤緩存
- 磁盤突發不適用於高級 SSD
- Azure Site Recovery 支持尚不可用。
- Azure 備份僅可通過 Azure 磁盤備份獲得。
- 僅支持服務器端加密,目前不支持 Azure 磁盤加密。
我還發現了一個有趣的註釋文件.
“除了更多的寫入延遲之外,使用 ZRS 的磁盤與使用 LRS 的磁盤相同,它們具有相同的擴展目標。 對磁盤進行基準測試以模擬應用程序的工作負載並比較 LRS 和 ZRS 磁盤之間的延遲。”雖然文檔表明 ZRS 會產生一些額外的寫入延遲,但由用戶決定他們可以預期多少額外的延遲。 一個鏈接磁盤基準提供文檔以幫助指導您進行性能測試。
按照文檔中的指導,我使用 DiskSpd 來測量您可能遇到的額外寫入延遲。 當然,結果會因工作負載、磁盤類型、實例大小等而異,但這是我的結果。
本地冗餘存儲 (LRS) | 區域冗餘存儲 (ZRS) | |
寫 IOPS | 5099.82 | 4994.63 |
平均延遲 | 7.830 | 7.998 |
我運行的 DiskSpd 測試使用了以下參數。
diskspd -c200G -w100 -b8K -F8 -r -o5 -W30 -d10 -Sh -L testfile.dat 我寫到一個帶有 ZRS 的 P30 磁盤和一個帶有 LRS 的 P30 連接到標準 DS3 v2(4 vcpus,14 GiB 內存) 實例類型。 共享 ZRS P30 還附加到不同 AZ 中的相同實例,並作為共享存儲添加到空集群應用程序。
2% 的開銷似乎是讓您的數據在兩個 AZ 上同步分佈的合理價格。 但是,我確實想知道如果您將集群應用程序移動到遠程節點會發生什麼,有效地將您的磁盤放在一個 AZ 中,而將您的實例放在另一個 AZ 中。
這是結果。
本地冗餘存儲 (LRS) | 區域冗餘存儲 (ZRS) | 從遠程 AZ 寫入時的 ZRS | |
寫 IOPS | 5099.82 | 4994.63 | 4079.72 |
平均延遲 | 7.830 | 7.998 | 9.800 |
在那種情況下,我測量了 25% 的寫入延遲增加。 如果您遇到 AZ 完全故障,存儲和實例都將故障轉移到輔助 AZ,您根本不應該遇到這種延遲增加。 但是,其他不屬於 AZ 範圍的故障場景很可能讓您的集群應用程序在一個 AZ 中運行,而您的 Azure 共享磁盤在另一個 AZ 中運行。 在這些情況下,您需要盡快將集群工作負載移回與存儲位於同一可用區的節點,以避免額外的開銷。
微軟文檔如何啟動存儲帳戶故障轉移使用 GRS 時到不同的區域,但在使用區域冗餘存儲時無法手動啟動存儲帳戶到不同 AZ 的故障轉移。 您應該監控您的故障轉移集群實例,以確保在集群工作負載移動到其他服務器時收到警報,併計劃在安全的情況下盡快將其移回。
您可能會意外地發現自己處於這種情況,但在您執行滾動更新時,在集群應用程序服務器的計劃維護期間肯定也會發生這種情況。 意識是幫助您最大限度地減少存儲在降級狀態下執行的時間的關鍵。
我希望將來微軟允許用戶像使用 GRS 一樣啟動 ZRS 磁盤的手動故障轉移。 他們向 GRS 添加該功能的原因是將權力交到用戶手中,以防自動故障轉移沒有按預期發生。 在區域冗餘存儲的情況下,我可以看到人們希望嘗試將存儲和應用程序捆綁在一起,確保它們始終在同一個 AZ 中運行,類似於 SIOS DataKeeper 等基於主機的複制解決方案的做法。