由一次失誤引發(fā)的連鎖反應(yīng)導(dǎo)致了很多S3服務(wù)器宕機(jī),其中包括兩個(gè)影響S3運(yùn)行的關(guān)鍵子系統(tǒng)。由此導(dǎo)致了S3的故障,影響到了不僅S3本身還有其他一些依賴S3的服務(wù)。四個(gè)小時(shí)后S3才重新恢復(fù)正常。
Amazon AWS故障十分罕見,一旦發(fā)生整個(gè)因特網(wǎng)都能感受得到,不少服務(wù)會(huì)直接受到影響。近期這次故障于2月28日發(fā)生在北弗吉尼亞地區(qū)(US-EAST-1)。不僅S3運(yùn)行癱瘓了,而且波及一系列依賴S3的AWS服務(wù),包括EC2、EFS、API Gateway、Athena、Cloudsearch、MapReduce等。這些服務(wù)要么是在功能上出現(xiàn)大量錯(cuò)誤,要么是完全無法工作。
在四個(gè)小時(shí)的癱瘓期間,據(jù)報(bào)告有不少企業(yè)服務(wù)下線或是受到嚴(yán)重干擾,包括Expedia、GitLab、GitHub、GroupMe、IFTTT、Medium、Nest、Quora、Slack、The Verge、Trello、Twitch、Wix等。就連Amazon自身的Alexa也出現(xiàn)故障了,導(dǎo)致AWS狀態(tài)儀表盤有兩個(gè)小時(shí)未實(shí)時(shí)更新。Amazon借助Twitter發(fā)布錯(cuò)誤報(bào)告,期間他們只得為狀態(tài)頁面臨時(shí)添加一個(gè)手工編輯的橫幅。
Amazon事后給出了對(duì)該次事件分析的診斷報(bào)告。當(dāng)時(shí)有一個(gè)Amazon團(tuán)隊(duì)正在調(diào)試S3的計(jì)費(fèi)問題,有人想要輸入一條命令,從S3的一個(gè)計(jì)費(fèi)子系統(tǒng)中刪除一小部分服務(wù)器。但是這個(gè)工程師輸入了錯(cuò)誤的命令,導(dǎo)致了大量的S3服務(wù)器關(guān)閉,包括兩臺(tái)在另外兩個(gè)子系統(tǒng)中起關(guān)鍵作用的S3服務(wù)器。其中一個(gè)子系統(tǒng)是為整個(gè)區(qū)域的S3提供索引服務(wù)的,影響到GET、PUT、LIST和DELETE命令;另一個(gè)子系統(tǒng)用于S3部署,涉及新對(duì)象的空間分配。因?yàn)檫@兩個(gè)子系統(tǒng)停止工作,S3的功能產(chǎn)生了大量錯(cuò)誤,影響到很多用戶。
雖然AWS具備快速恢復(fù)單個(gè)子系統(tǒng)故障的操作規(guī)程,但是由于索引子系統(tǒng)已經(jīng)有數(shù)年從未重啟過,索引已增長得十分龐大,因此還是需要相當(dāng)長的重啟事件。雖然功能最終得以恢復(fù),但是比預(yù)想的要慢。Amazon已經(jīng)計(jì)劃今年稍后會(huì)對(duì)索引子系統(tǒng)進(jìn)行分區(qū),將索引分區(qū)為更小的塊,使得重啟更加快速。現(xiàn)在他們已經(jīng)立刻著手進(jìn)行分區(qū),為將來可能發(fā)生的癱瘓情況做好準(zhǔn)備。他們對(duì)工具做了修改,限制了每條命令可以關(guān)閉的服務(wù)器數(shù)量,還限制使用單個(gè)命令關(guān)閉整個(gè)子系統(tǒng)。他們還將在多個(gè)區(qū)域?qū)崿F(xiàn)分布式的S3儀表盤,以確保在一個(gè)區(qū)域停止服務(wù)時(shí)儀表盤依然保持工作。
Amazon在2011年曾經(jīng)歷過一次癱瘓,也是發(fā)生在US東部區(qū)域,那一次癱瘓了4天時(shí)間。從兩次故障中學(xué)習(xí)到的并得以應(yīng)用的基本經(jīng)驗(yàn)教訓(xùn)是,系統(tǒng)創(chuàng)建不應(yīng)僅依賴在單一區(qū)域上,如果當(dāng)前區(qū)域發(fā)生故障,可以切換到其他區(qū)域。Netflix已經(jīng)這樣部署了,其他系統(tǒng)同樣也可以。但是這會(huì)增加網(wǎng)絡(luò)主機(jī)服務(wù)費(fèi),企業(yè)總是傾向于盡量地降低費(fèi)用。總體來說,Amazon AWS是可靠的,但是服務(wù)總不可避免會(huì)有癱瘓情況。所有云服務(wù)提供商皆是如此。
查看英文原文: A Human Error Took Down AWS S3 US-EAST-1
本文永久更新鏈接地址:http://www.linuxidc.com/Linux/2017-03/141532.htm