Netflix基于云的“防故障”系統怎樣頂住了AWS故障
盡管在線流媒體巨頭Netflix運作的業務完全依賴亞馬遜網絡服務(AWS)的云平臺,不過它聲稱,AWS周日爆出服務停運事件后,自己的服務很快恢復了正常――這表明了其構建基于云的“防故障”系統這種做法的重要性。
AWS在周日遇到重大故障后,構建可以抵御故障的云服務具有的重要性體現了出來。
AWS平臺上的20多種服務開始出現故障后,互聯網上的一些最大網站和應用系統隨之間歇性地無法使用。
這起停運事件影響了弗吉尼亞州北部數據中心(亞馬遜稱之為US-EAST-1地區)負責運行的AWS服務。
Netflix、Tinder、Airbnb和IMDb等知名在線網站及服務的客戶聲稱,服務受到影響的六到八個小時這段期間,訪問出現了問題。這些問題還影響了亞馬遜的產品,比如Echo,亞馬遜的這個智能語音助理使用了名叫Alexa的基于云的語音識別系統。
問題似乎最早出現在周日太平洋夏令時凌晨3點,當時用戶就開始遇到了AWS的NoSQL數據庫DynamoDB出錯率增加的現象。
然而,出錯率增加和網絡延遲這些問題隨后開始擴大到另外大約22個服務:包括亞馬遜的幾大知名服務,比如AWS彈性計算云(EC2)、虛擬桌面服務AWS WorkSpaces以及AWS事件驅動計算服務AWS Lambda。
在短短幾小時內,AWS就查明了DynamoDB遇到的問題的“根源”,指出這歸咎于“管理表和分區信息的內部子服務出了故障”。
等到上午9點剛過,AWS就解決了DynamoDB的問題,聲稱服務運行恢復正常。到這個時候,大多數服務已正常運行,不過另外幾項服務(比如AWS Auto Scaling服務)仍受到了影響,直到上午11:30才排除故障。
Netflix如何以亂治亂?
據亞馬遜發言人聲稱,有一個AWS客戶設法避免了這次停運引起的任何“重大影響”,那就是視頻流服務網站Netflix。
據這位發言人稱,這個在線媒體巨頭依賴亞馬遜網絡服務,以媒體流的形式將電影和電視節目傳輸給全球5000多萬戶家庭,能夠“迅速”將服務恢復到完全正常的水平。
幫助這家服務商經受住這次服務故障事件考驗的,正是它竭力頌揚的“混沌工程技術”(chaos engineering)。
Netflix采用的混沌工程技術運用了Simian Army,這款軟件有意對其系統造成嚴重破壞。Simian Army從多個方面攻擊Netflix的基礎設施:Chaos Monkey隨機地禁用生產環境下的實例,Latency Monkey給客戶機/服務器通信造成延遲,而主要法寶Chaos Gorilla模擬了整個亞馬遜可用性區域出現停運。
通過不斷給系統帶來故障,這家公司得以增強防范問題的能力,比如周日影響AWS的問題。
在這種情況下,Netflix得以迅速將流量從受到影響的AWS地區,重定向到未受到影響的地區的數據中心。
Netflix之所以能做到這一點,就是因為它實施了所謂的多地區主動/主動復制。按照這種復制技術,其服務需要的所有數據都在不同的AWS地區之間加以復制,以便遇到故障后能迅速恢復。
Netflix在概述這種做法的一篇博文中表示:“地區性基礎設施全面停運的可能性微乎其微,但是我們的變化速度有時太快了,會擾亂某個地區的關鍵服務,我們想讓Netflix能適應任何復雜的底層依賴關系。”
Netflix負責高性能技術計算的前首席架構師Adrian Cockcroft在推特上表示,主動/主動復制技術增加了大約“25%”的成本,聲稱這種方法如同“保險單”。
他補充說:“額外成本主要是由于始終在兩頭對存儲層進行100%的重復數據刪除所致。”
Netflix使用了Apache Cassandra,這是一種開源NoSQL分布式數據庫。Cockcroft表示,為了保持可用性,這家服務商必須在“所有地區”維護“幾千個”Cassandra節點。
【本文來源:云頭條】