《為故障而設(shè)計(jì):AWS S3云存儲(chǔ)故障給我們的啟示》要點(diǎn):
本文介紹了為故障而設(shè)計(jì):AWS S3云存儲(chǔ)故障給我們的啟示,希望對(duì)您有用。如果有疑問(wèn),可以聯(lián)系我們。
導(dǎo)讀:AWS S3 故障已經(jīng)過(guò)去一周多了,我們可以從中得到哪些啟示?本文由魏佳翻譯,轉(zhuǎn)載請(qǐng)注明來(lái)自高可用架構(gòu) (ID: ArchNotes) 公眾號(hào).
如今 2017 年,云是重要業(yè)務(wù)技術(shù)選型的最好選擇.使用云也為管理基礎(chǔ)設(shè)施帶來(lái)了很多益處,包括提升靈活性、可擴(kuò)展性,同時(shí)降低了 IT 成本.但是上周我們目睹了 AWS S3 停機(jī)故障 [1],看來(lái)即使是最可靠的服務(wù)提供商也可能遇到倒霉的一天. 服務(wù)不可用直接導(dǎo)致了數(shù)百萬(wàn)的收入損失,以及難以估量的公司品牌負(fù)面影響.盡管如此,你依然可以采取一些預(yù)防措施來(lái)減少這種事件的負(fù)面影響.
事故報(bào)告
亞馬遜 Web 服務(wù)(AWS)是當(dāng)今被廣泛使用的的云基礎(chǔ)設(shè)施服務(wù),占據(jù)全球40%以上的市場(chǎng)份額.一直以來(lái) AWS 的服務(wù)質(zhì)量都高于其服務(wù)質(zhì)量協(xié)議(SLA) ,達(dá)到99.9%的正常運(yùn)行時(shí)間.但是上周發(fā)生的 AWS 簡(jiǎn)單對(duì)象存儲(chǔ)服務(wù)(S3)故障說(shuō)明沒(méi)有什么服務(wù)是完美無(wú)懈可擊的.
在星期二上午 11:30 左右,AWS 美國(guó)東一區(qū)(US-EAST-1)的 S3 存儲(chǔ)服務(wù)宕機(jī),并且迅速產(chǎn)生了巨大的影響. 服務(wù)恢復(fù)后,AWS 發(fā)布了一個(gè)聲明,有意思的是,我們從官方聲明中發(fā)現(xiàn),這次故障既不是人為破壞的,也是不是系統(tǒng)損壞的原因,而僅僅是由簡(jiǎn)單的錯(cuò)誤輸入命令導(dǎo)致. 難以置信吧?但確實(shí)是,一個(gè)完全無(wú)意的命令輸入錯(cuò)誤 [1],這導(dǎo)致像 Adobe,Slack,Expedia,甚至是美國(guó)證券交易委員會(huì),都遭受了嚴(yán)重的性能影響,據(jù)悉還有小的在線電商網(wǎng)站因此被拖垮.
目前很難準(zhǔn)確估量在這將近 5 個(gè)小時(shí)的宕機(jī)過(guò)程中造成的財(cái)產(chǎn)損失,但據(jù)不完全統(tǒng)計(jì),已經(jīng)造成了數(shù)千萬(wàn)的財(cái)產(chǎn)損失,數(shù)十萬(wàn)的用戶(hù)受到影響.
事故真相
整個(gè)事故過(guò)程中,雖然許多依賴(lài)美國(guó)東一區(qū) S3 服務(wù)的公司在宕機(jī)期間受到嚴(yán)重影響,但仍然有一些公司部分或全部業(yè)務(wù)毫不受影響. 這是為什么? 有幾個(gè)因素發(fā)揮作用.
隱藏的依賴(lài)
S3 服務(wù)已經(jīng)成為大多數(shù)基于云的分布式系統(tǒng)中至關(guān)重要的組件.正因?yàn)槠浔粡V泛使用,同時(shí)大量復(fù)雜的服務(wù)或系統(tǒng)構(gòu)建在它之上,所以當(dāng) S3 服務(wù)不可用時(shí)加劇了事故影響范圍和深度.對(duì)于那些直接或間接依賴(lài)(S3 服務(wù)) 的系統(tǒng),S3 服務(wù)都會(huì)成為潛在的影響因素.
網(wǎng)絡(luò)性能監(jiān)控公司 Thousand Eyes 歸納了 3 種可能被所依賴(lài)的 S3 服務(wù)影響的表現(xiàn)形式:
滑稽的是,事故剛開(kāi)始發(fā)生時(shí),AWS 無(wú)法將 S3 服務(wù)狀態(tài)更新到儀表板上,因?yàn)樗惨蕾?lài)于 S3 來(lái)存儲(chǔ).這意味著出現(xiàn)故障的服務(wù)在宕機(jī)期間顯示為正常?!這就是我們說(shuō)的隱藏的依賴(lài)!
這里我們強(qiáng)調(diào)的是要知道風(fēng)險(xiǎn)在哪里,并做有針對(duì)性得規(guī)劃. 將每個(gè)遠(yuǎn)程依賴(lài)關(guān)系都看作是潛在的故障點(diǎn)這會(huì)有所幫助,特別是以這次 AWS 事故為例,對(duì)遠(yuǎn)程依賴(lài)關(guān)系的分析首先將會(huì)幫你反思是否真的有依賴(lài)的必要.
裝滿雞蛋的籃子
AWS 的數(shù)據(jù)中心(zone)遍布全球 16 個(gè)不同的國(guó)家地區(qū).在美國(guó),有四個(gè)地區(qū):北弗吉尼亞州、俄亥俄州、俄勒岡州和北加利福尼亞州,剩下的則分布在歐洲、亞洲、南美洲和澳大利亞.
在 AWS 上部署/使用服務(wù)時(shí),可以選擇要部署到哪個(gè)獨(dú)立區(qū)域.顯而易見(jiàn),通過(guò)跨地區(qū)、或者跨云服務(wù)提供商來(lái)創(chuàng)造冗余,將提供最健壯的業(yè)務(wù)連續(xù)性.在這次事故中,只有一個(gè)區(qū)(美國(guó)東一區(qū))受到影響,但對(duì)那些資源/服務(wù)/依賴(lài)集中在這個(gè)區(qū)的公司來(lái)說(shuō),這便成他們的噩夢(mèng).
為故障而設(shè)計(jì)
前面提到,一些公司在這次事故中損失較小.這是因?yàn)樗麄儾渴鸱?wù)時(shí),帶著某一天某些事會(huì)出錯(cuò)的預(yù)期,從而更有針對(duì)性得做準(zhǔn)備.
雖然 AWS 正在處理此次事故的后續(xù)事宜,但是亞馬遜的零售部門(mén)(amazon.com),盡管依賴(lài) S3,但在事故期間并沒(méi)有受多大影響.誠(chéng)然,亞馬遜在任何時(shí)候都會(huì)采取所有必要和建議的預(yù)防措施,以確保其旗艦產(chǎn)品的健壯.
如何為故障做規(guī)劃和預(yù)防,我們可以參考 Netflix.他們內(nèi)部使用一套被稱(chēng)為猴子軍團(tuán)(Simian Army)的云測(cè)試工具,這些工具專(zhuān)門(mén)用于模擬系統(tǒng)上的破壞,以便捕獲可能導(dǎo)致服務(wù)中斷或性能問(wèn)題的任何潛在故障點(diǎn).通過(guò)規(guī)劃一系列可能遇到的小問(wèn)題和大問(wèn)題,Netflix 能夠預(yù)測(cè)他們系統(tǒng)面對(duì)問(wèn)題時(shí)反應(yīng),并依此建立各種保護(hù)措施,以確保系統(tǒng)在故障期間依然可以提供服務(wù).
應(yīng)對(duì)故障的準(zhǔn)備措施不應(yīng)采取”一刀切“的方法.亞馬遜和 Netflix 都擁有海量的數(shù)據(jù)、數(shù)億用戶(hù),他們的預(yù)防措施和解決方案可能有很大不同.在決定如何防止第三方故障時(shí),應(yīng)考慮諸如數(shù)據(jù)容量,針對(duì)不同情況進(jìn)行防護(hù)的性?xún)r(jià)比,以及計(jì)算損失風(fēng)險(xiǎn)等因素.
對(duì)于較小的規(guī)模,解決方案可能不是完全預(yù)防,而是如何優(yōu)雅的降級(jí).這意味著需要對(duì)應(yīng)用中各個(gè)功能進(jìn)行不同優(yōu)先級(jí)的容錯(cuò).例如網(wǎng)絡(luò)故障時(shí),對(duì)于需要遠(yuǎn)程訪問(wèn)的資源降級(jí)成從本地文件/緩存中獲取.
S3 事故也暴露了網(wǎng)絡(luò)架構(gòu)設(shè)計(jì)的缺陷,AWS 官方提出了未來(lái)防止這類(lèi)事故的舉措,也表態(tài)采取更多的預(yù)防措施來(lái)保護(hù)客戶(hù)們的業(yè)務(wù)不受損失是十分重要且明智的.
好了,上星期我們學(xué)到了“一個(gè)錯(cuò)誤輸入可以使得一部分互聯(lián)網(wǎng)不可用”,現(xiàn)在我們學(xué)到了更好更充分的準(zhǔn)備和預(yù)防,可以最大程度減少故障再次發(fā)生時(shí)的損害和影響.
本文鏈接:
轉(zhuǎn)載請(qǐng)注明本頁(yè)網(wǎng)址:
http://www.snjht.com/jiaocheng/4338.html