細說 Azure Storage 的冗餘策略

2021-08-07 13:20:52 字數 2957 閱讀 6064

當我們想要把應用搬到雲端的時候,首先要關注的便是資料的安全性。當然所有的雲服務廠商都會對使用者資料承諾乙個非常高的安全性,但萬一出現意外呢?我們是不是還要有適當的應對方案?比如今年的3月8日晚間,azure 某個區域中的儲存幾乎全部不能訪問,持續達兩個多小時。當時最擔心的是:使用者的資料萬一丟掉怎麼辦?同時,我們是不是可以根據雲服務提供的資料服務的特點來優化程式的效能呢?基於如此種種的原因,我們需要了解雲端資料服務的一些特性的詳情,這將對我們很有幫助。本文將和大家一起** azure storage 的冗餘策略。

微軟針對不同的應用場景提供了不同的儲存冗餘策略。比如對可靠性要求很高的資料可以選擇多個異地的備份,而對訪問速度要求高的資料則可以使用高速的儲存裝置。當然,不同的方案成本也是不一樣的。我們可以針對應用的特點使用不同的儲存策略,這樣可以節省成本。還可以指定對應的容災備份以及災難恢復方案。

需要注意的是,azure storage 儲存的冗餘策略是繫結在 azure storage account 上的。azure storage 當前一共有四種資料的冗餘策略,分別是:

locally redundant storage(lrs)

zone redundant storage(zrs)

geo redundant storage(grs)

read-access geo redundant storage(ra-grs)

當我們建立 storage account 的時候就需要指定其對應的儲存的相關型別和策略:

performance 選項目前有兩種選擇,分別是 "standard" 和 "premium"。準確的說,下面的 replication 選項才是 storage account 的冗餘策略。可是,冗餘策略和效能選項是有關聯性的。比如,當 performance 為 "standard" 時,replication 可以選擇 zrs, lrs, grs, ra-grs:

而 performance 為 "premium" 時,replication 則只能選擇 lrs:

下面我們將詳細的介紹這四種冗餘策略及常見用例。

本地冗餘儲存(lrs),在單個資料中心裡有多個同步的資料拷貝。資料在彈性儲存單元中被複製三次,該彈性儲存單元託管在建立儲存帳戶的區域中的資料中心內。 僅在寫入所有三個副本後,才成功返回寫入請求。 這三個副本駐留在同一彈性儲存單元中的不同容錯域和公升級域中。

彈性儲存單元是儲存節點的機架的集合。 容錯域 (fd) 是一組代表出錯的物理單元的節點,可將其視為屬於同一物理機架的節點。 公升級域 (ud) 是一組在服務公升級(推出)過程中一起公升級的節點。 三個副本將分布在同一彈性儲存單元中的 ud 和 fd 上,以確保即使在硬體故障影響單個機架時,或在推出期間公升級節點時,資料也可用。

當看到這裡時,相信你已經感受到了,即便是 azure storage 中最基礎的 lrs 資料冗餘策略也遠高於我們自己維護的系統了!

lrs 的優點是成本最低,這裡說的低是和其它型別的冗餘策略相比。並且可以提高訪問的效能,比如選擇performance 為 「premium」 時只能使用 lrs 策略。

但是它的缺點也很明顯,就是無法應對整個資料中心都 crash 的情況(火災、洪災、**、技術故障等)。

區域冗餘儲存(zrs),除了儲存類似於 lrs 的三個副本外,還在乙個或兩個區域內的資料中心之間非同步複製資料,從而提供比 lrs 更高的安全性。 在這種情況下,即使主資料中心不可用或不可恢復,儲存在 zrs 中的資料也安全的。

需要注意的是,zrs 僅能應用於 blob 型別的儲存。

異地冗餘儲存(grs),將資料複製到距主區域數百英里以外的輔助區域。如果 storage account 啟用了 grs,即使在遇到區域完全停電或導致主要區域不可恢復的災難時,使用者的資料也是安全的。

對於啟用了 grs 的 storage account,更新將首先提交到主要區域,並在其中複製三份。

然後,更新將非同步複製到次要區域(也是在其中複製三份)。

使用 grs 時,主要和次要區域在乙個彈性儲存單元內管理跨單獨容錯域和公升級域的副本。

次區域是系統自動設定的,不支援使用者自由選擇。其實我們都沒有必要知道它的存在,只需要知道資料是安全的就可以了。

除了 grs 所提供的在兩個區域之間進行複製外,讀取訪問異地冗餘儲存 (ra-grs) 還提供對輔助位置中的資料的唯讀訪問許可權,從而最大限度地提高了 storage account 的可用性。

當設定為 ra-grs 時,除了 storage account 的主終結點外,還可以通過訪問輔助終結點獲取資料。輔助終結點與主終結點類似,但會在帳戶名稱後面追加字尾 –secondary。例如,如果 blob 服務的主終結點是 myaccount.blob.core.windows.net,輔助終結點則是 myaccount-secondary.blob.core.windows.net。 storage account 的訪問金鑰對於主終結點和輔助終結點是相同的。

對於 ra-grs, 看起來可能很高大上,但是我們卻很難把這種能力加以應用。按照 azure文件所說,這種策略主要的目的是高可用性。但是使用者又不能自由的指定次區域的位置,所以十分懷疑是否可以達到真正的目的。

資料的安全永遠都是相對的,片面的追求資料安全肯定會為我們帶來不可承受的成本壓力。我們能做的就是針對不同型別的資料,尋找**上可以接受的冗餘方案。而 azure storage 提供的豐富選項,則給我們的選擇帶來了很大的靈活性。

如何搭建本地Azure Storage環境

開啟emulator,在控制台視窗中,鍵入以下命令,其中 是 sql server 例項的名稱。若要使用 localdb,請指定 localdb mssqllocaldb 作為 sql server 例項。a.azurestorageemulator.exe init server 也可以使用以下命...

關於Azure Storage 的一點研究

關於azure storage 的介紹和用c 去使用blob storage,可以參考下面這個官方資料 運維給了乙個uri https blob.core.chinacloudapi.cn 乙個account name和乙個account key.在嘗試往uri上傳檔案時,發現報錯,提示找不到對應位...

細說禪的故事

很多時候我都會有一種想深入到禪定的境界,能夠達到空無一物,物我兩忘的衝動。特別是現實的世界,都讓我覺得自己應該 一下自己到底有沒有佛性,能不能進入到一種超脫的人生中去。只可惜我的功力實在太淺,很多時候會被一些瑣事羈跘。被物質所 我深以為錯。佛無常相,無心無佛,即心即佛。人的名字 穿著 住房和飲食這些...