公有雲上應該怎麼做容災?

2021-10-06 12:10:53 字數 3191 閱讀 6196

接著上篇《做容災,雙活、多活、同城、異地、多雲,到底應該怎麼選?》,這篇聊聊公有雲上應該如何建容災,跟我們自建機房有什麼區別,沒看過的同學,建議先從上篇文章看一下。

做個簡單總結就是,要想起到容災效果,優先做到同城雙活,再考慮異地雙活或多活。從這個鋪墊往下,談談如果我們上了雲,高可用和容災策略應該怎麼選擇。

我從幾個方面來講:

第一,先理解幾個公有雲的通用概念。

為了便於理解,我盡量說的通俗點,大家別跟我摳字眼,如果要找準確定義,大家可以google,也可以去看幾大公有云實際的布局,比看我講的更清楚。

我們知道的公有雲一些專用名詞,如region-地域和az-可用區,通用的idc-機房園區,其中region和az理解起來,本質上都是邏輯概念,並不像機房一樣更多的是物理概念。

簡單理解,先說region,公有雲可能會有北京的region、上海的region、杭州的region等等。

對於az可用區,是包含在region內的,比如公有雲上海region,可能會有多個az,而單個az可能會有乙個或多個idc機房園區組成,比如上海一號可用區,可能包括了徐匯idc園區和靜安idc園區。

這裡的原則,就是同乙個az內的機房距離要相對較近,中間可以通過專線互通,保證較低的時延,從而將物理上分離的機房組合成邏輯上統一的可用區,這個是有建設標準的。

乙個az多個idc機房園區的目的,我認為跟多的是提供足夠大的資源容量,單個機房的容量有時是有限的,特別是有些通用的儲存類服務務,如資料庫、快取、訊息、分布式儲存等等也可以以az為單位來統一管理,提供足夠容量的同時,也可以方便統一管理。

目前了解到的一些資訊,貌似乙個az對應乙個idc園區的情況多一些,特別是新建的idc園區,規模足夠大,足夠匹配az的頭銜。

而乙個region多個az的目的,就是從底層的機房電力/網路等層面來保障乙個az出現故障的時候不會影響到另外乙個可用區。

上面僅僅是舉例,方便理解,但是實際場景下,這些概念的界限有時候是有些模糊的,據說(僅僅是據說)早期阿里雲上海和杭州就是同乙個region,因為兩個地方相對較近,專線頻寬、時延和成本相對可控(我想主要是因為阿里有錢吧),所以雖然地域是兩個,但是從管理的維度,他們仍然是同乙個region。

第二,在公有雲上的雙活、多活,應該怎麼選擇?

講到這裡,我們再聯絡下上篇文章提到的同城雙活、異地多活的概念,就不難理解,雲其實是在同城和異地這個概念之上的乙個新的維度。

不過,上面文章如果看明白了,在整清楚上面的幾個概念,答案不難得出。

掙大眼睛看,我要說結論了!

如果要是做同城,其實就是選擇同乙個公有雲同一region的不同az就好了。

因為前面提過,不同的az在電力設施和網路入口層面是做了隔離的,不會因為乙個az故障導致其它az同時故障。而且,不同az必然是不同的機房,如果考慮地域距離相對遠一些,可以選擇距離遠的az。

比如,業務執行在上海1可用區,再建乙個雙活站點,我就選擇到松江區或嘉定區這種距離較遠的az,但是az之間有專線,時延也不用擔心有太大問題。

如果是異地,把異地轉化成region這個維度來看就好了,就是選擇哪個region的問題。

像阿里雲前兩天的io hang的故障,看故障描述,應該就是單az內分布式儲存故障,也就是我們常說的ecs使用的網盤出現故障,很多ecs虛擬機器不可用了,這個沒招,除非有同城不同az的雙活,立馬把業務切走,否則,就只能等著。

第三,關於雲產品層面的高可用應該怎麼做?

上面我主要講的還是基礎設施層面的內容,不同的az完全可以滿足要求。

或者說的簡單點,很多產品都是az級別的,在乙個az不可用,但是可以跨az容災訪問。不過前面說的io hang的問題,就比較困難,現實情況下,跨az做虛擬機器熱遷移,這麼大批量同時做,頻寬滿足不了,在很多技術細節上也沒法做到,所以,還是具體問題具體看。

這裡帶來的問題就是,資料或檔案儲存在region內就乙份,比如很多、css、js、hdsf檔案存在上面。

如果掛了,就是整個region不可用,這時切同城az其實也沒用了,業務自身有雙活、有多活,這個時候都是沒效果的。

那咋辦呢?

就是在使用這類region級別的產品,必須要要求在另乙個region有對應的容災集群,出問題能切過去。

當然,有備份,必然帶來成本,但是有時候總比故障造成的損失要小的多,這個還是看roi。

對於公有雲廠商來說,應該要提供這種region級別的資料同步機制,客戶可以自己選擇是否需要備份,當故障時,雲產品做的完善點可以自己切走,但是廠商一般不會這麼做,因為有時候影響並不是全域性的,所以這個時候客戶自身就要做好切換手段,通過切網域名稱或ip的方式,將服務依賴指向可用region的備份集群

但是,是不是所有產品都適合這種模式呢?答案是,不一定,還是要看場景,看具體情況。

比如,對於檔案儲存,業務對其時延的要求可能沒有這麼高,特別是用在cdn場景下,時延長一點也沒問題。

對於資料庫或快取這樣的雲產品來說,跨region就沒有任何意義了,時延太大,業務根本無法容忍。如果是跨az,資料庫可能還好,但是快取有時候也無法接受。

從aws的標準來說,像資料庫或快取是要保證同region跨az高可用的,但是實際能不能滿足真實的業務要求,這個還要看具體情況,有些系統對時延敏感度極高,可能容忍度就更弱一些。

好在絕大多數的產品都是az級別,region的相對較少,但是一定要注意識別,如果有使用region級別的產品,那我們的雙活、甚至多活方案,就要考慮這個因素,而不能僅僅考慮我們自身的技術架構。

單就這一點,客戶不提,一般雲廠商也沒人提,有時候為了跟憂傷對比,反而更喜歡強調自己有多少個9的穩定性,這個從客戶引導上是有問題的。其實真誠一點,承認自己無法做到100%,建議客戶做更可靠的方案,產品在基礎能力層面更完善一些,反而會收到更多的利益,客戶也會更滿意。

所以,我前面一直在講,雲計算行業,需要有更多的解決方案架構師真正站在客戶角度考慮問題,當真正能解決使用者的痛點問題時,才會帶來更廣闊的合作空間,最終帶來的收益,一定會這些地方呈現出來。

最後,總結一下:

到了公有雲上,面對的場景,使用的產品型別不同,這時候要做高可用,要做容災,要考慮的因素就更多,其實比自建機房時考慮的因素還要多,因為業務不僅僅是對基礎設施依賴,可能還跟很多雲產品發生了緊耦合,場景必然更複雜

幾個結論:

我們應該怎麼做?

工資低不是他們在國外混日子沒有學到東西,而且中國這個社會現狀決定了你不可能實現自己的期望價值。低期望值。這句話其實挺熟悉的,當年專家們建議國內本科大學生降低期望值,去基層發展,所以現在的大學生攻陷 了工地和豬圈,不知道這是不是專家們所期望的,現在海歸們開始向國內大學生們的陣地發起了衝鋒,國內的英雄 ...

你應該怎麼做

1.別人光鮮的背後往往有鮮為人知的的苦楚 意識是說,乙個人看起來成功,這不是理所當然的,這個人背後肯定是付出了很多 吃過了很多苦才能有今日的成就 2.你必須非常努力,才能看起來毫不費力 意思是說,你想要在別人目前毫不費力地去解決乙個問題,那麼你私下必須非常努力地去學習 3.馬太效應 凡是有的,還要給...

測試應該怎麼做?

測試應該怎麼做?一 首先測試需求分析要全面 測試需求分析具體分兩步 1 測試需求的獲取在測試方法方面,可做如下注意 其一,分析出口入口。從入口分析,將可能出現的環境,條件,操作等內容分類組合,然後根據各位測試達人的方法進行整合,逐一驗證。從出口分析,將可能出現的結果進行統計,根據結果的不同追根溯源,...