就算雲廠商水逆了,服務也不能倒
8 人贊了文章
這陣子接連發生極小概率事件:先是幾條光纜同時被挖斷導致一個服務區失聯、然後又是一個硬碟出現罕見的靜默錯誤(寫入數據和讀取出來的不一致)後居然被選中為主數據源導致故障意外放大以至於導致客戶數據丟失。用星座小王子的話講,這是騰訊雲水逆了吧?
俗話說了,皮之不存毛將焉附,雲廠商出問題了是不是在雲上的服務就都要跟著嗝屁了呢?但是俗話也不是說了,不要弔死在一顆樹上?這幾次的事情讓我想起2016年的雲+未來峰會上,我在下午的開發者專場的圓桌論壇中回答觀眾問題的時候,現場有一個觀眾站起來問:
我們都知道今天早上XX雲的北京機房光纜挖斷導致北京區域無法服務,我想請問騰訊雲的黃先生,你們雲廠商一天到晚講的服務冗餘、異地多活是不是都是停留在PPT上的?
當時我是這樣回答的:
服務冗餘、異地容災是我們互聯網公司在建設海量服務的時候培養出來的高可用架構能力,當然不是停留在PPT上的。但是我們雲廠商對外提供的服務不管有多少個9的可用性,都不可能是100%可用的,友商會遇到的問題我們也不能確保一定不會發生在我們身上。所以我們雲廠商提供給用戶的真正有價值的服務並不是一個一定不會出問題的服務,而是讓我們可以低成本快速的搭建一個服務冗餘、異地容災的架構的能力。所以我們使用雲服務的時候一定要正確的架構好自己的系統,讓他有冗餘、有彈性、遇到問題能夠自我恢復。
前幾天聽邏輯思維講到孫子兵法,有一句話我覺得從另個一角度很好的詮釋了這個意思:不可勝在己,可勝在敵。一個系統真正的健壯性在於使用者正確的使用雲提供的能力做出健壯的架構。。
具體到這幾次「水逆」的問題,我們在系統架構之初能夠做出什麼好的設計來規避呢?簡單來講,架構系統的時候要秉承「面向失敗做設計」的理念,盡量不假設有哪個服務是永遠不會出問題的。
- 假如我們擔心一個服務區的光纜被挖斷了影響服務,我們可以在一個地區的兩個以上的服務區裡面部署我們的伺服器,比如在廣州二區廣州三區各放一批伺服器。對外通過負載均衡來提供服務的時候,負載均衡是可以把服務分配到一個地區的不同服務區裡面的,跨域增加的時延通常也只有幾個毫秒,通常對服務沒有什麼影響。
這樣假如廣州三區服務中斷了,負載均衡可以即刻識別出來伺服器離線並且吧流量全部分配給廣州二區,同時廣州二區的伺服器壓力增加也可以通過彈性伸縮服務自動觸發伺服器擴容,這樣在管理員還沒來得及反應過來的時候故障就已經自動處理完了。
因為們不能提前知道負載均衡是否也在出問題的區域,所以還要在每個可用區裡面部署相互冗餘的負載均衡。如果服務依賴了雲資料庫,那就需要在兩個區做主從設計和主從切換邏輯。
(這樣做用戶的體驗其實會受到部分影響的,因為域名被解析到兩個負載均衡以後,有一半的用戶會被指向已經不能訪問的負載均衡,過了一小段時間客戶端發現當前IP不能連接的時候才自動切換到備用的IP上恢復服務。如果能夠自己做一點兒開發,用撥測觸發dns解析自動變更的話就更好)
- 假如我們擔心整個廣州所有可用區都被核彈團滅了(嗯我們不能排除突然打核戰可能性,所以雲廠商就算未來也沒辦法承諾100%的可用性),那就要把服務分布到兩個以上的城市,比如北京和上海。因為跨城市的訪問要通過公網,服務區之間就不能像一個區域網一樣的通信了,CAP問題變得突出。這個時候架構上有更多的文章可以做了,是一個主服務區一個備用服務區,有問題再切換,還是每個地區都提供服務,然後放棄短時間的數據一致性,只達成最終數據一致性,不同的架構師對不同的系統會有自己的選擇。
- 假如我們擔心硬碟數據突然壞掉了(像這次的極低概率事件)、系統有bug數據被寫壞了 、系統有安全漏洞被黑客清空了數據。那我們就需要做好一個數據備份回滾的機制。比如在騰訊雲上,我更加推薦使用雲硬碟而不是本地硬碟來做系統盤和數據盤,除了可靠性更高之外和容許系統在未來調整配置之外,很重要的一點是,雲硬碟支持定期的自動快照(https://cloud.tencent.com/document/product/362/8191 目前7個以內的快照是免費服務,業界唯一)這樣出問題的時候回滾系統恢複數據就非常輕鬆了。
有可能政治不正確的感慨幾句,個人感覺現在國內的雲廠商迫於競爭局勢,大家都不怎麼主動給中小用戶講面向雲的容災架構的重要性,而是反覆的給用戶強調自己的服務的可靠性,好像一教用戶容災就是對自己的服務一點兒信心都沒有似的,而用戶因此對於安全的理解也就都誤解為雲廠商會提供100%的可用性。所以每次出問題都是,雲不能確保完全的可用性,而用戶又不能對自己放在雲上的服務做好充分的自我保護,其實大家都有問題。不過「100%可用性「對於雲是不可能達成的目標,而在雲時代,架構師在雲上對自己的系統做一個健壯的設計,其實是更加容易和便宜的事情。
碼了這麼多字,最後刷臉夾帶一點兒正能量的私貨,Stone雖然沒有接受過打賞,但是萬一你看完想賞兩個銀子,我有一個正能量的好朋友現在正需要幫助,她是stone所負責的扶貧項目的一個志願者,我覺得一個一直在幫助別的人,應該比起其他很多人更加值得我們去幫助。請點擊下方鏈接支持(籌款2天後結束)。
http://ssl.gongyi.qq.com/m/weixin/ws_detail.html?from=groupmessage&isappinstalled=0#pid=F1151DF210B6E9C4E5581B3180B9083E&share=yes
(本文授權無償完整轉載)
推薦閱讀:
※公有雲按秒計費的難度是什麼?
※軟體包管家之---yum 2
※OpenStack學習之Horizon中管理網路(十七)
※人腦「接」電腦?六個大蒜?三喪S8又跪了?[上周發生了神馬]
※任正非督戰:華為強攻公有雲業務 競爭殘酷|任正非|徐直軍|雲計算