談一談線上事故的故事

背景

背景

做過不少公司的咨詢畸悬,發(fā)現(xiàn)有些公司對于線上事故沒有規(guī)范化的認(rèn)知,沒有預(yù)防措施奋姿,發(fā)生之后也沒有一個規(guī)范的流程去響應(yīng)锄开。甚至有的公司發(fā)生線上事故之后素标,沒有監(jiān)控沒有預(yù)警称诗,只有開發(fā)或運維知道,然后他們就悄悄的把線上事故修復(fù)了头遭,神不知鬼不覺寓免。

那么接下來我就從下面這幾個方面來談一談線上事故的故事。


線上事故預(yù)防

線上事故預(yù)防分為3個方面

  • 預(yù)發(fā)環(huán)境
  • 上線checklist
  • 日志與運維監(jiān)控

預(yù)發(fā)環(huán)境

預(yù)發(fā)環(huán)境也叫UAT環(huán)境计维,或者預(yù)生產(chǎn)環(huán)境等袜香。

非生產(chǎn)環(huán)境中應(yīng)該有一個預(yù)發(fā)環(huán)境,此環(huán)境理論上應(yīng)該和生產(chǎn)環(huán)境一模一樣鲫惶,包括一樣的配置來保證性能一致蜈首,一樣的數(shù)據(jù)來保證行為一致。

這樣才能最大限度的模擬生產(chǎn)環(huán)境欠母,并提前發(fā)現(xiàn)問題解決問題欢策,起到沙盤演練的作用。

預(yù)發(fā)環(huán)境的位置如下圖:

預(yù)發(fā)環(huán)境

預(yù)發(fā)環(huán)境搭建好了之后赏淌,應(yīng)該定期的同步生產(chǎn)環(huán)境的數(shù)據(jù)到預(yù)發(fā)環(huán)境做測試踩寇。

注意:同步數(shù)據(jù)時得有一定的脫敏策略,不然會有安全風(fēng)險六水。

影子流量

由于預(yù)發(fā)環(huán)境畢竟不是生產(chǎn)環(huán)境俺孙,所有的請求都是由測試人員模擬的,并不是真實的情況掷贾。

而影子流量(shadow traffic)就是將發(fā)給生產(chǎn)環(huán)境的請求復(fù)制一份轉(zhuǎn)發(fā)到類生產(chǎn)環(huán)境上去睛榄,以此來達到壓力測試和正確性測試的目的。

影子流量的實現(xiàn)有多種方式想帅,常見的比如在統(tǒng)一的入口處API Gateway等地方復(fù)制一份流量轉(zhuǎn)發(fā)到預(yù)發(fā)環(huán)境场靴,由此來監(jiān)測預(yù)發(fā)環(huán)境有沒有異常情況發(fā)生。

影子流量的過程如下圖所示博脑。

影子流量

由于影子流量來自真實的生產(chǎn)環(huán)境憎乙,過程中一定要注意安全防范票罐,以及流量轉(zhuǎn)發(fā)給生產(chǎn)環(huán)境性能帶來的性能影響。

影子庫

同理影子流量泞边,理論上預(yù)發(fā)環(huán)境應(yīng)該有一份和生產(chǎn)環(huán)境一模一樣的數(shù)據(jù)庫该押,才能更真實的模擬生產(chǎn)環(huán)境的情況。影子庫就是把生產(chǎn)環(huán)境的數(shù)據(jù)庫復(fù)制了一份阵谚,有相同的數(shù)據(jù)量和相同的數(shù)據(jù)庫配置蚕礼。

當(dāng)然,理論上梢什,影子庫的數(shù)據(jù)應(yīng)該是經(jīng)過脫敏處理之后的奠蹬。

上線checklist

checklist

上線前應(yīng)該有一份不斷累計不斷更新的checklist,用于上線前的檢查嗡午,每項檢查都通過之后囤躁,方能上線。

有任何一項檢查不通過荔睹,則不能上線狸演。直到問題解決之后,才能上線僻他。另外宵距,應(yīng)該避免在業(yè)務(wù)高峰期進行上線操作。

下面是一些常見的checklist項吨拗,不同的項目會根據(jù)需要有不同的checklist:

  • 測試報告是否已通過
  • 業(yè)務(wù)驗收報告是否已通過
  • 是否有其他版本正在上線
  • 是否有線上問題未解決
  • 是否有回滾方案

雖然它是checklist满哪,但很多公司在實踐的時候都把它做成了上線報告。

更推薦的做法是把checklist做得越輕量級越好劝篷,就像checklist哨鸭,輕量級的檢查就能上線。

不然就會讓上線變得越來越困難携龟、越來越花時間兔跌,違背了持續(xù)交付的理念。

日志與運維監(jiān)控

如果有非常完備的日志系統(tǒng)峡蟋,比如常見的ELK坟桅,splunk等,則可以在預(yù)發(fā)環(huán)境的影子流量中和生產(chǎn)環(huán)境中蕊蝗,監(jiān)測到異常日志仅乓,提前發(fā)現(xiàn)問題,提前解決問題蓬戚。

日志監(jiān)控是一個挺大的話題夸楣,這里就不展開講了。

但日志是我們定位問題和追溯問題中不可或缺的一環(huán)。

線上事故修復(fù)

線上報警

線上報警

線上環(huán)境應(yīng)該有監(jiān)控預(yù)警豫喧,一旦發(fā)生任何事故石洗,都應(yīng)該及時報警。

這些事故可能發(fā)生的情況包括但不限于:

  • 服務(wù)不可用
  • 數(shù)據(jù)庫不可用
  • 服務(wù)器不可用
  • 高級別日志警告
  • 流量異常

發(fā)生了事故紧显,應(yīng)該第一時間自動通知開發(fā)團隊讲衫,并抄送相關(guān)負責(zé)人或領(lǐng)導(dǎo)。收到郵件或通知的開發(fā)團隊則應(yīng)該第一時間修復(fù)該線上問題孵班。

郵件中應(yīng)該包含事故的現(xiàn)象描述涉兽,原因,日志等信息篙程,以方便開發(fā)團隊分析和修復(fù)枷畏。

最重要的是,上述過程都應(yīng)該是全自動化的虱饿,才能保證開發(fā)人員或者運維人員第一時間響應(yīng)拥诡。

通常一個團隊中會建立某種機制來保證發(fā)生線上事故的時候有人能及時響應(yīng)事故。

我見過有的公司是運維人員24小時待命的郭厌。

也見過做的比較好的公司是袋倔,團隊成員輪流做那個站崗的人,系統(tǒng)通知自動綁定站崗人的電話和郵件折柠,發(fā)生線上事故之后,第一時間自動逐級通知站崗人批狐,負責(zé)人扇售,領(lǐng)導(dǎo)等。由站崗人作為線上事故的owner嚣艇,他不一定能修承冰,但他要保證問題被修復(fù)。如果事故發(fā)生在工作時間以外食零,則根據(jù)響應(yīng)的時間來調(diào)休困乒。

回滾機制

優(yōu)秀的團隊都是使用CI/CD的pipeline來進行上線部署,一旦失敗了贰谣,pipeline都是支持回滾到上一個版本的娜搂。

如果是使用的Kubernetes,則只需要回滾到上一個版本的鏡像則可以了吱抚。

這就要求百宇,我們每次構(gòu)建的包或者鏡像都應(yīng)該帶上版本號,才方便我們追蹤每個版本的狀態(tài)秘豹,以及根據(jù)版本來進行回滾操作携御。

災(zāi)備恢復(fù)

災(zāi)備恢復(fù)

線上事故如果是災(zāi)難性的,則應(yīng)該啟動災(zāi)備恢復(fù)程序。 我了解的大部分公司其實都沒有災(zāi)備恢復(fù)的相關(guān)流程啄刹。理論上涮坐,一個意識比較好的公司,通常都會有嚴(yán)格的災(zāi)備恢復(fù)流程誓军。

災(zāi)備恢復(fù)可以是一個操作手冊膊升,指導(dǎo)員工如何一步一步的從0恢復(fù)服務(wù)。通常銀行業(yè)是一定有這樣的災(zāi)備恢復(fù)的谭企。

同時廓译,每次發(fā)生了大的基礎(chǔ)設(shè)施架構(gòu)變更的時候,比如服務(wù)器配置變化债查,數(shù)據(jù)庫變化等非区,都需要及時更新災(zāi)備恢復(fù)手冊。

線上事故復(fù)盤

復(fù)盤

線上事故修復(fù)之后盹廷,需要對此事故做一次復(fù)盤征绸,目的是為了避免下次再發(fā)生,以及發(fā)生了之后能更快的應(yīng)對俄占。

這個復(fù)盤有很多種形式管怠。其中一種形式叫無過錯驗尸報告。

具體的介紹可以看我的另外一篇文章:
無過錯驗尸報告 - Blameless Postmortem

總結(jié)

這里簡單列舉了一些關(guān)于線上事故我能想到的幾個點缸榄,如果大家對于這個話題還有其他感興趣的部分渤弛,歡迎給我留言,我們下回接著探討甚带。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末她肯,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子鹰贵,更是在濱河造成了極大的恐慌晴氨,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件碉输,死亡現(xiàn)場離奇詭異籽前,居然都是意外死亡,警方通過查閱死者的電腦和手機敷钾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進店門枝哄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人闰非,你說我怎么就攤上這事膘格。” “怎么了财松?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵瘪贱,是天一觀的道長纱控。 經(jīng)常有香客問我,道長菜秦,這世上最難降的妖魔是什么甜害? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮球昨,結(jié)果婚禮上尔店,老公的妹妹穿的比我還像新娘。我一直安慰自己主慰,他們只是感情好嚣州,可當(dāng)我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著共螺,像睡著了一般该肴。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上藐不,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天匀哄,我揣著相機與錄音,去河邊找鬼雏蛮。 笑死涎嚼,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的挑秉。 我是一名探鬼主播法梯,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼衷模!你這毒婦竟也來了鹊汛?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤阱冶,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后滥嘴,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體木蹬,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年若皱,在試婚紗的時候發(fā)現(xiàn)自己被綠了镊叁。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡走触,死狀恐怖晦譬,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情互广,我是刑警寧澤敛腌,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布卧土,位于F島的核電站,受9級特大地震影響像樊,放射性物質(zhì)發(fā)生泄漏尤莺。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一生棍、第九天 我趴在偏房一處隱蔽的房頂上張望颤霎。 院中可真熱鬧,春花似錦涂滴、人聲如沸友酱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽缔杉。三九已至,卻和暖如春首量,著一層夾襖步出監(jiān)牢的瞬間壮吩,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工加缘, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留鸭叙,地道東北人。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓拣宏,卻偏偏與公主長得像沈贝,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子勋乾,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,033評論 2 355

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