B站崩了上熱搜,說(shuō)好的高可用呢?
圖片來(lái)自包圖網(wǎng)
崩了!勞累了一天的年輕人們,正準(zhǔn)備躺平拿出手機(jī),打開(kāi)那熟悉的小破站 App,一鍵三連自己最喜愛(ài)的 up 主的最新視頻。突然發(fā)現(xiàn):
瞬間,“B 站崩了”的消息登上熱搜,微博運(yùn)維心頭一緊。
部分網(wǎng)友表示:A 站、豆瓣等網(wǎng)站也出現(xiàn)訪(fǎng)問(wèn)故障,重連 Wi-Fi 也沒(méi)有用。
今日凌晨,B 站發(fā)布公告稱(chēng),昨晚,B 站的部分服務(wù)器機(jī)房發(fā)生故障,造成無(wú)法訪(fǎng)問(wèn)。技術(shù)團(tuán)隊(duì)隨即進(jìn)行了問(wèn)題排查和修復(fù),現(xiàn)在服務(wù)已經(jīng)陸續(xù)恢復(fù)正常。
“小破站”發(fā)生什么事了?
這份模棱兩可的聲明顯然無(wú)法阻擋住吃瓜群眾的熱情。
短短幾分鐘,關(guān)于 B 站的各種揣測(cè)消息就變成了百家講壇:
有火災(zāi)說(shuō)、刪庫(kù)跑路說(shuō)、刑事案件說(shuō)、服務(wù)器供應(yīng)商說(shuō)、黑客攻擊說(shuō)、大樓坍塌說(shuō)、外星人說(shuō)……
還有人煞有介事地 Po 出了 B 站運(yùn)營(yíng)小妹的朋友圈,說(shuō) B 站停電了……
隨后立刻有專(zhuān)業(yè)人士指出:B 站作為一個(gè)上市的互聯(lián)網(wǎng)公司,服務(wù)器多地備份是最最起碼的事,樓里停電這個(gè)解釋?zhuān)烙?jì)只能騙騙沒(méi)有學(xué)過(guò)數(shù)據(jù)庫(kù)的高中生。
至于 A 站和晉江文學(xué)網(wǎng)為什么會(huì)掛,很可能是因?yàn)?B 站掛了,大批用戶(hù)無(wú)片可看,就涌入 A 站和豆瓣,造成網(wǎng)站的流量激增,哪怕 A 站和 B 站不共用云服務(wù),也可能被壓垮。
B 站 7000 多萬(wàn)日活網(wǎng)友的威力可見(jiàn)一斑。
下面我們看看幾個(gè)相對(duì)靠譜的猜測(cè):
①知乎作者 @黃玨珅 盲猜了一下,應(yīng)該是 etcd 掛了。
通常來(lái)說(shuō),能造成幾乎所有請(qǐng)求都 502 的,要不就是前端和后端之間的網(wǎng)絡(luò)通路全掛了,要不就是后端的服務(wù)全都掛了。
那么現(xiàn)在的大型互聯(lián)網(wǎng)公司的基礎(chǔ)設(shè)施是怎樣的呢,大多數(shù)使用了 Kubernetes,實(shí)現(xiàn)全國(guó)各地的數(shù)據(jù)中心的容器編排、網(wǎng)絡(luò)虛擬化等。
而 Kubernetes 的設(shè)計(jì)上,網(wǎng)絡(luò)插件和 pod 編排又是相對(duì)獨(dú)立的。
如果只是網(wǎng)絡(luò)插件出問(wèn)題了,那么部分服務(wù)器上的網(wǎng)絡(luò)插件的緩存還在,一定有部分用戶(hù)還能正常使用。
現(xiàn)在所有的都掛了,那只能是 etcd 掛掉,導(dǎo)致反向代理無(wú)法通過(guò) etcd 找到對(duì)應(yīng)的 pod 的虛擬 ip,又無(wú)法通過(guò)網(wǎng)絡(luò)插件與對(duì)應(yīng)的 pod 通信。
②知乎作者 @k8seasy 則認(rèn)為這個(gè)基本屬于站點(diǎn)本身故障。從恢復(fù)時(shí)間看 30 分鐘左右,并且?guī)缀?100% 恢復(fù),說(shuō)明應(yīng)該是某個(gè)核心組件崩潰了,導(dǎo)致核心服務(wù)不可用。
出現(xiàn)這種可能的不少,最有可能的原因是上線(xiàn)新版本,開(kāi)始沒(méi)問(wèn)題,升級(jí)了部分集群,結(jié)果新版本有 Bug,到了某個(gè)時(shí)刻直接掛了,老版本的壓力一大也沒(méi)扛住。然后緊急定位,回滾解決。
也有網(wǎng)友提出,此次事件與云服務(wù)商離不開(kāi)干系:
云服務(wù)提供商提供的 CDN 出現(xiàn)意外之后,大量請(qǐng)求繞過(guò) CDN 直接打到網(wǎng)關(guān),網(wǎng)關(guān)收到大量請(qǐng)求,自動(dòng)啟動(dòng)了容災(zāi)策略。
容災(zāi)策略啟動(dòng)服務(wù)降級(jí)。服務(wù)降級(jí)了但沒(méi)完全降,CDN 掛了,網(wǎng)關(guān)也跟著掛了,服務(wù)雪崩,一直崩到整個(gè)環(huán)境。
盤(pán)點(diǎn)史上嚴(yán)重的服務(wù)宕機(jī)事件:最高損失上億美元
在互聯(lián)網(wǎng)歷史上,“小破站”這樣的宕機(jī)事件只能算是“灑灑水”,不信?我們來(lái)看看其他互聯(lián)網(wǎng)大咖們是如何玩轉(zhuǎn)宕機(jī)的。
7 小時(shí)不能上微信:2013 年 7 月 22 日,微信服務(wù)宕機(jī),造成了將近 7 個(gè)小時(shí)的網(wǎng)絡(luò)中斷。據(jù)微信官方公布信息,由于上海一支施工隊(duì)挖斷了通信光纜,導(dǎo)致騰訊華東數(shù)據(jù)處理中心的業(yè)務(wù)請(qǐng)求紛紛轉(zhuǎn)向華南和華北,進(jìn)而導(dǎo)致了業(yè)務(wù)的全面癱瘓。
用支付寶“剁手”失敗:2015 年 5 月 27 日下午,部分用戶(hù)反映其支付寶出現(xiàn)網(wǎng)絡(luò)故障,賬號(hào)無(wú)法登錄或支付。支付寶官方表示,故障是由于杭州市蕭山區(qū)某地光纖被挖斷導(dǎo)致,該事件造成部分用戶(hù)無(wú)法使用支付寶。隨后支付寶工程師緊急將用戶(hù)請(qǐng)求切換至其他機(jī)房,受影響的用戶(hù)開(kāi)始逐步恢復(fù)。到了晚上 7 點(diǎn) 20 分,支付寶方面宣布用戶(hù)服務(wù)已經(jīng)完全恢復(fù)正常。
而在國(guó)外,網(wǎng)絡(luò)宕機(jī)的事件更是屢見(jiàn)不鮮。
亞馬遜云服務(wù)罷工:2015 年 9 月,亞馬遜的云服務(wù)器因收到來(lái)自新上線(xiàn)的 DynamoDB 功能帶來(lái)的大量數(shù)據(jù)請(qǐng)求,導(dǎo)致其因過(guò)載而宕機(jī)。于是,包括 Reddit、Tinder、Netflix 和 IMDB 在內(nèi)的眾多流行應(yīng)用和網(wǎng)址直接罷工了數(shù)小時(shí)。
除了 Netflix,絕大多數(shù)亞馬遜云服務(wù)的客戶(hù)在此次“突擊檢查”中,都被發(fā)現(xiàn)毫無(wú)準(zhǔn)備。而 Netflix 此前已經(jīng)使用過(guò)一種名為“混沌工程”的技術(shù)來(lái)模擬類(lèi)似服務(wù)中斷事件的發(fā)生,使得這起事故對(duì)其影響降到了最小。
納斯達(dá)克停擺:2013 年 8 月 22 日,由于納斯達(dá)克交易所的備用服務(wù)器中出現(xiàn)了一個(gè)嚴(yán)重的 Bug,直接導(dǎo)致納斯達(dá)克停擺了 3 個(gè)多小時(shí)。當(dāng)其恢復(fù)運(yùn)作時(shí),已經(jīng)引起了市場(chǎng)恐慌,大量交易員涌向交易窗口,出售交易所運(yùn)營(yíng)商納斯達(dá)克 OMX 集團(tuán)的股票,導(dǎo)致 OMX 集團(tuán)的股價(jià)當(dāng)日一度大跌逾 5%。
事后有人評(píng)估,由于納斯達(dá)克停擺造成的經(jīng)濟(jì)損失可能達(dá)數(shù)億美元。
全美大宕機(jī):2016 年 10 月 21 日早晨,許多美國(guó)用戶(hù)突然發(fā)現(xiàn)包括 Twitter、CNN、Spotify 等大型網(wǎng)站均無(wú)法登陸。這場(chǎng)網(wǎng)絡(luò)癱瘓從美國(guó)東部開(kāi)始,一路蔓延至全美區(qū)域。事后發(fā)現(xiàn)查明,原因是服務(wù)器遭受了黑客的 DDoS 攻擊。
關(guān)于 B 站宕機(jī)事故,開(kāi)源基礎(chǔ)軟件公司 Zilliz 的質(zhì)量保障團(tuán)隊(duì)負(fù)責(zé)人喬燕良做了較為專(zhuān)業(yè)客觀的分析:
現(xiàn)在的網(wǎng)站故障造成的原因主要可分為軟件服務(wù)引起的故障和硬件服務(wù)引起的故障。
軟件服務(wù)故障一般可理解為代碼邏輯缺陷,常見(jiàn)的是新增或更新某個(gè)功能而引入缺陷導(dǎo)致整個(gè)服務(wù)中斷,硬件服務(wù)故障一般是由于某些服務(wù)設(shè)備的損壞造成的服務(wù)中斷,比如光纖被挖斷了。
如果要降低宕機(jī)風(fēng)險(xiǎn),就需要提高服務(wù)的高可用性。首先從架構(gòu)上,建議采用云原生架構(gòu),實(shí)現(xiàn)自動(dòng)容錯(cuò)機(jī)制和故障隔離,從而能夠在服務(wù)出現(xiàn)故障時(shí)快速遷移或回滾。
其次為防止硬件故障類(lèi)風(fēng)險(xiǎn),需要有完善的災(zāi)備方案,同城雙活或異地災(zāi)備目前都已經(jīng)有比較成熟的方案,國(guó)內(nèi)企業(yè)在這塊投入相對(duì)比較“節(jié)約”。
關(guān)于 B 站的高可用架構(gòu)可查看文章:《月均活躍用戶(hù)達(dá)1.3億,B站高可用架構(gòu)實(shí)踐》
Bilibili,下次一定!
來(lái)源:轉(zhuǎn)載自公眾號(hào)新智元(ID:AI_era)
參考資料:http://www.zhihu.com/question/472065470