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