[譯]GitHub應(yīng)對(duì)1.28宕機(jī)事故的前前后后

原文:January 28th Incident Report

譯者:杰微刊·張勝超

上周GitHub是不能使用了兩個(gè)小時(shí)6分鐘痹栖。我們理解你們有多么依賴(lài)GitHub惫撰,并且考慮到服務(wù)的可用性也是我們提供的核心功能之一。 在過(guò)去的八年里模软,我們已經(jīng)為了確保你和全世界開(kāi)發(fā)者依靠GitHub取得了相當(dāng)大的進(jìn)步, 但一周前我們未能維持您期待的正常運(yùn)行伟骨。 我們深感抱歉, 并且愿與你分享發(fā)生的事件,我們正在采取的措施以確保你能夠訪問(wèn)GitHub.

事件記錄

在周四00:23am UTC,2016年1月28日(1月27日星期三,4:23pm PST)(1月28日星期四,8:23am 北京時(shí)間)我們主要數(shù)據(jù)中心的系統(tǒng)服務(wù)器和設(shè)備歷經(jīng)了短暫供電中斷。我們有略超過(guò)25%的服務(wù)器和一些網(wǎng)絡(luò)設(shè)備進(jìn)行了重啟燃异。 這導(dǎo)致我們的基礎(chǔ)設(shè)施部分運(yùn)行狀態(tài)和生成警報(bào)發(fā)送給多個(gè)待命的工程師携狭。我們的負(fù)載均衡設(shè)備和大量的前端應(yīng)用程序服務(wù)器未受影響,但你們請(qǐng)求的依賴(lài)系統(tǒng)服務(wù)是不可用。我們的應(yīng)用程序開(kāi)始提供HTTP 503狀態(tài)代碼作為響應(yīng),把獨(dú)角獸的圖片放到你看到的錯(cuò)誤頁(yè)面回俐。

我們初期對(duì)這個(gè)事件響應(yīng)是混亂的,我們?cè)S多ChatOps系統(tǒng)在重啟服務(wù)器逛腿。 我們有內(nèi)置多余的ChatOps系統(tǒng),但這仍然失敗,在剛開(kāi)始的時(shí)候?qū)е挛覀兊捻憫?yīng)有一些混亂和延遲仅颇。這種延遲最大的面向客戶(hù)的影響之一是:直到00:32am UTC(1月28日星期四,8:32am 北京時(shí)間)单默,status.github.com(面向用戶(hù)的監(jiān)控github.com運(yùn)行狀態(tài)的網(wǎng)址)網(wǎng)站狀態(tài)不能修改紅色。8分鐘后,網(wǎng)站無(wú)法訪問(wèn)忘瓦。我們認(rèn)為這是一個(gè)不能接受的長(zhǎng)延遲,并且我將確保未來(lái)我們的用戶(hù)更快的訪問(wèn)搁廓。

無(wú)法訪問(wèn)服務(wù)器的初始通知和連接redis高峰相關(guān)的異常,使我們的調(diào)查隊(duì)把問(wèn)題定向于內(nèi)部網(wǎng)絡(luò)可能中斷耕皮。 我們也明白嘗試連接導(dǎo)致網(wǎng)絡(luò)問(wèn)題的增加境蜕。而后來(lái)的調(diào)查顯示,DDoS攻擊不是根本問(wèn)題凌停,我們?cè)缇突〞r(shí)間構(gòu)建的DDOS防御系統(tǒng)和網(wǎng)絡(luò)的健康調(diào)查汽摹。因?yàn)槲覀冇薪?jīng)驗(yàn)來(lái)減輕DDoS攻擊,這是我們的現(xiàn)在已經(jīng)習(xí)慣的反應(yīng)過(guò)程苦锨,我們很高興可以迅速行動(dòng)和一心一意地努力解決這一事件逼泣。

啟動(dòng)我們的DDoS攻擊的防御,反應(yīng)小組開(kāi)始有條不紊地檢查我們的基礎(chǔ)設(shè)施和那些已經(jīng)回到初始故障相關(guān)的警報(bào)舟舒。無(wú)法到達(dá)的幾個(gè)redis集群的所有成員帶領(lǐng)我們調(diào)查整個(gè)設(shè)施設(shè)備的正常運(yùn)行時(shí)間拉庶。我們發(fā)現(xiàn)一些服務(wù)器報(bào)告正常運(yùn)行時(shí)間是幾分鐘,但是我們的網(wǎng)絡(luò)設(shè)備無(wú)故障運(yùn)行時(shí)間報(bào)告,顯示他們沒(méi)有重啟。利用這一點(diǎn)秃励,我們認(rèn)為所有的離線服務(wù)器共享相同的硬件類(lèi)氏仗,和那些啟動(dòng)沒(méi)有問(wèn)題是一個(gè)不同的硬件類(lèi)。受影響的服務(wù)器有多架排在我們的數(shù)據(jù)中心,盡管集群成員被分布在不同的機(jī)架皆尔,還是導(dǎo)致一些集群經(jīng)歷了他們所有的成員服務(wù)器重啟呐舔。.

隨著時(shí)間的流逝,我們注意到我們的應(yīng)用程序進(jìn)程并沒(méi)有像預(yù)期的那樣啟動(dòng)。 工程師開(kāi)始在我們的應(yīng)用程序服務(wù)器上查看進(jìn)程表和日志慷蠕。這就是說(shuō)后端能力不足是由于我們的Redis集群離線導(dǎo)致進(jìn)程無(wú)法啟動(dòng)珊拼。我們無(wú)意地在應(yīng)用程序代碼的引導(dǎo)路徑中增加了一個(gè)強(qiáng)型依賴(lài)Redis群集。

通過(guò)這一點(diǎn)流炕,我們就有了一個(gè)很清楚恢復(fù)服務(wù)的思路澎现,并且朝著結(jié)束而工作。 我們需要修復(fù)沒(méi)有啟動(dòng)的服務(wù)器每辟,我們需要讓Redis集群來(lái)讓我們的應(yīng)用程序啟動(dòng)剑辫。 由于物理驅(qū)動(dòng)器已不認(rèn)可,遠(yuǎn)程訪問(wèn)控制臺(tái)截圖從失敗的硬件顯示啟動(dòng)故障渠欺。 一組工程師與現(xiàn)場(chǎng)設(shè)備技術(shù)人員分開(kāi)工作妹蔽,以使這些服務(wù)器通過(guò)漸進(jìn)的跳蚤電力,使他們從無(wú)狀態(tài)中喚醒挠将,這樣的磁盤(pán)就顯示了出來(lái)讹开。另一組工程師開(kāi)始重新構(gòu)建受影響的redis集群硬件改造。這些工作中最困難的關(guān)鍵是內(nèi)部系統(tǒng)在離線硬件上捐名。這使得配置新的服務(wù)器更困難旦万。

一旦Redis集群數(shù)據(jù)還原到備用設(shè)備上,我們就能夠把redis服務(wù)器進(jìn)程重新上線镶蹋。內(nèi)部檢查顯示應(yīng)用程序恢復(fù)成艘,并從應(yīng)用服務(wù)器正常的反應(yīng)使我們HAProxy負(fù)載均衡器返回這些服務(wù)器的后端服務(wù)器池。經(jīng)過(guò)驗(yàn)證的網(wǎng)站操作贺归,維護(hù)頁(yè)面被刪除淆两,我們移動(dòng)到狀態(tài)黃色。這發(fā)生在2小時(shí)6分鐘后拂酣,最初的電力中斷秋冰。

在接下來(lái)的幾個(gè)小時(shí)里,確認(rèn)所有系統(tǒng)都正常運(yùn)行婶熬,并驗(yàn)證了沒(méi)有數(shù)據(jù)丟失這一事件剑勾。我們非常感謝工程師們?cè)诒WC所有的代碼、issues赵颅、拉請(qǐng)求( pull requests)以及其他關(guān)鍵數(shù)據(jù)的安全和安全的地方虽另,我們的減輕災(zāi)難工作是成功的。

未來(lái)工作

復(fù)雜系統(tǒng)的定義是由許多分立組件的相互共同作用來(lái)實(shí)現(xiàn)的結(jié)果饺谬。理解一個(gè)復(fù)雜的系統(tǒng)中的每個(gè)組件的依賴(lài)關(guān)系是重要的捂刺,但除非這些依賴(lài)關(guān)系進(jìn)行嚴(yán)格的測(cè)試,可能的系統(tǒng)故障在獨(dú)特的和新穎的方式。在過(guò)去的一周里族展,我們已經(jīng)投入了大量的時(shí)間和精力去了解連鎖故障導(dǎo)致GitHub不可用兩個(gè)多小時(shí)的性質(zhì)森缠。我們不相信這是完全可以防止的事件,導(dǎo)致在我們的基礎(chǔ)設(shè)施的一個(gè)很大一部分失去能力仪缸,但我們可以采取措施贵涵,以確保恢復(fù)發(fā)生在一個(gè)快速和可靠的方式腹殿。我們還可以采取措施独悴,減輕這些事件對(duì)我們的用戶(hù)帶來(lái)的負(fù)面影響例书。

我們確定了硬件的問(wèn)題锣尉,導(dǎo)致服務(wù)器無(wú)法查看自己的驅(qū)動(dòng)器后,功率循環(huán)作為一個(gè)已知的固件問(wèn)題决采,我們正在更新我們的艦隊(duì)自沧。更新我們的工具自動(dòng)在新固件更新可用的團(tuán)隊(duì)開(kāi)放的問(wèn)題將迫使我們對(duì)我們環(huán)境的更新記錄。

我們將更新我們的應(yīng)用程序的測(cè)試套件树瞭,即使某些外部系統(tǒng)是不可用的拇厢,也要明確確保我們的應(yīng)用程序啟動(dòng),我們正在改善我們的電路斷路器晒喷,這樣我們就可以?xún)?yōu)雅地降低功能孝偎,當(dāng)這些后端服務(wù)。顯然凉敲,這種方法有限制衣盾,存在一個(gè)最小的需要服務(wù)請(qǐng)求的要求,但我們可以積極地減少這些依賴(lài)關(guān)系的列表爷抓。

我們正在復(fù)查我們的內(nèi)部系統(tǒng)可用性的必要條件势决,負(fù)責(zé)關(guān)鍵業(yè)務(wù)的任務(wù)。如配置新的服務(wù)器蓝撇,使他們與我們的用戶(hù)面臨的系統(tǒng)果复。最終,如果這些系統(tǒng)需要從一個(gè)意外中斷的情況中恢復(fù)渤昌,他們必須是可靠的系統(tǒng)被回收侯谁。

一些小的技術(shù)改進(jìn)也正在實(shí)施轩褐。改善跨部門(mén)溝通會(huì)縮短恢復(fù)時(shí)間。預(yù)定的升級(jí)方案在所有需要的人手準(zhǔn)備齊全的情況下使我們的事件協(xié)調(diào)員要花更多的時(shí)間管理恢復(fù)工作和更少的時(shí)間瀏覽文檔。在這個(gè)事件中报腔,提高我們的信息傳遞給你有助于你更好地了解發(fā)生了什么,期待未來(lái)的更新扑庞。

總結(jié)

我們了解GitHub在您的項(xiàng)目和企業(yè)成功的工作流程中是多么的重要氏淑。我們都希望GitHub為該中斷的影響道歉。我們將繼續(xù)分析導(dǎo)致這一事件的事件和我們采取的措施,以恢復(fù)服務(wù)骇径。這項(xiàng)工作將引導(dǎo)我們完善GitHub的系統(tǒng)和過(guò)程躯肌。

更多精彩內(nèi)容~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市破衔,隨后出現(xiàn)的幾起案子清女,更是在濱河造成了極大的恐慌,老刑警劉巖晰筛,帶你破解...
    沈念sama閱讀 217,084評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嫡丙,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡读第,警方通過(guò)查閱死者的電腦和手機(jī)曙博,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)怜瞒,“玉大人父泳,你說(shuō)我怎么就攤上這事∥馔簦” “怎么了惠窄?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,450評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)漾橙。 經(jīng)常有香客問(wèn)我杆融,道長(zhǎng),這世上最難降的妖魔是什么霜运? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,322評(píng)論 1 293
  • 正文 為了忘掉前任脾歇,我火速辦了婚禮,結(jié)果婚禮上觉渴,老公的妹妹穿的比我還像新娘介劫。我一直安慰自己,他們只是感情好案淋,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,370評(píng)論 6 390
  • 文/花漫 我一把揭開(kāi)白布座韵。 她就那樣靜靜地躺著,像睡著了一般踢京。 火紅的嫁衣襯著肌膚如雪誉碴。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,274評(píng)論 1 300
  • 那天瓣距,我揣著相機(jī)與錄音黔帕,去河邊找鬼。 笑死蹈丸,一個(gè)胖子當(dāng)著我的面吹牛成黄,可吹牛的內(nèi)容都是我干的呐芥。 我是一名探鬼主播,決...
    沈念sama閱讀 40,126評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼奋岁,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼思瘟!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起闻伶,我...
    開(kāi)封第一講書(shū)人閱讀 38,980評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤滨攻,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后蓝翰,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體光绕,經(jīng)...
    沈念sama閱讀 45,414評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,599評(píng)論 3 334
  • 正文 我和宋清朗相戀三年畜份,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了诞帐。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,773評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡漂坏,死狀恐怖景埃,靈堂內(nèi)的尸體忽然破棺而出媒至,到底是詐尸還是另有隱情顶别,我是刑警寧澤,帶...
    沈念sama閱讀 35,470評(píng)論 5 344
  • 正文 年R本政府宣布拒啰,位于F島的核電站驯绎,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏谋旦。R本人自食惡果不足惜剩失,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,080評(píng)論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望册着。 院中可真熱鬧拴孤,春花似錦、人聲如沸甲捏。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,713評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)司顿。三九已至芒粹,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間大溜,已是汗流浹背化漆。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,852評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留钦奋,地道東北人座云。 一個(gè)月前我還...
    沈念sama閱讀 47,865評(píng)論 2 370
  • 正文 我出身青樓疙赠,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親朦拖。 傳聞我的和親對(duì)象是個(gè)殘疾皇子棺聊,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,689評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)贞谓,斷路器限佩,智...
    卡卡羅2017閱讀 134,654評(píng)論 18 139
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,095評(píng)論 25 707
  • 轉(zhuǎn)載地址:http://gnucto.blog.51cto.com/3391516/998509 Redis與Me...
    Ddaidai閱讀 21,450評(píng)論 0 82
  • 以下小片段來(lái)自四歲的添添小朋友。:) 1《提醒》 終于耐不住添的死纏硬磨裸弦,滿(mǎn)足了一個(gè)冰淇淋給他祟同。 添添小小口...
    黑色的小白馬閱讀 707評(píng)論 6 8
  • 通過(guò)看源碼我們能夠發(fā)現(xiàn)xiaocms的入口都是index.php 不通過(guò)index.php進(jìn)入的頁(yè)面是不會(huì)執(zhí)行模板...
    Swerve閱讀 969評(píng)論 0 0