首页 > 新闻 > 国内 >

深入解析和反思携程宕机事件原因

2015-05-29 09:58:03   作者:智锦   来源:InfoQ.com   评论:0  点击:


  携程网宕机事件还在持续,截止28号晚上8点,携程首页还是指向一个静态页面,所有动态网页都访问不了。关于事故根源,网上众说纷纭。作为互联网运维老兵,尝试分析原因,谈谈我的看法。

\闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鐐劤缂嶅﹪寮婚悢鍏尖拻閻庨潧澹婂Σ顔剧磼閻愵剙鍔ょ紓宥咃躬瀵鎮㈤崗灏栨嫽闁诲酣娼ф竟濠偽i鍓х<闁绘劦鍓欓崝銈囩磽瀹ュ拑韬€殿喖顭烽幃銏ゅ礂鐏忔牗瀚介梺璇查叄濞佳勭珶婵犲伣锝夘敊閸撗咃紲闂佺粯鍔﹂崜娆撳礉閵堝洨纾界€广儱鎷戦煬顒傗偓娈垮枛椤兘骞冮姀銈呯閻忓繑鐗楃€氫粙姊虹拠鏌ュ弰婵炰匠鍕彾濠电姴浼i敐澶樻晩闁告挆鍜冪床闂備浇顕栭崹搴ㄥ礃閿濆棗鐦遍梻鍌欒兌椤㈠﹤鈻嶉弴銏犵闁搞儺鍓欓悘鎶芥煛閸愩劎澧曠紒鈧崘鈹夸簻闊洤娴烽ˇ锕€霉濠婂牏鐣洪柡灞诲妼閳规垿宕卞▎蹇撴瘓缂傚倷闄嶉崝宀勫Χ閹间礁钃熼柣鏂垮悑閸庡矂鏌涘┑鍕姢鐞氾箓姊绘担鍛婃儓闁活厼顦辩槐鐐寸瑹閳ь剟濡存担鍓叉建闁逞屽墴楠炲啫鈻庨幘宕囶啇濡炪倖鎸鹃崳銉ノ涜濮婂宕掑▎鎴犵崲濠电偘鍖犻崗鐐☉閳诲酣骞嬮悙瀛橆唶闂備礁婀遍崕銈夈€冮幇顔剧闁哄秲鍔庣弧鈧梻鍌氱墛娓氭宕曢幇鐗堢厸闁告侗鍠氶崣鈧梺鍝勬湰缁嬫垿鍩ユ径鎰闁绘劕妯婂ḿ缁樹繆閻愵亜鈧垿宕曢弻銉﹀殞濡わ絽鍟悡姗€鏌熺€电ǹ浠滅紒鐘靛█濮婅櫣绮欓崠鈩冩暰濡炪們鍔屽Λ婵嬬嵁閸儱惟闁冲搫鍊搁埀顒€顭烽弻锕€螣娓氼垱楔闂佹寧绋掔粙鎴﹀煘閹达附鍊烽柡澶嬪灩娴滃爼姊洪悷鎵紞闁稿鍊曢悾鐑藉醇閺囥劍鏅㈡繛杈剧秮閺呰尙绱撻幘鍓佺=闁稿本鐟чˇ锔姐亜閹存繃鍤囬柟顔矫埞鎴犫偓锝庡亜閳ь剙鐏氶妵鍕箻鐠虹儤鐎虹紓浣筋嚙濡繈寮婚弴銏犻唶婵犻潧鐗忛濠囨⒑閸涘﹤绗傞柛妤佸▕瀵鈽夐姀鈥充簽婵炶揪缍侀弲鑼姳閻e瞼纾藉〒姘搐閺嬶附銇勯弴鍡楁搐閻撯€愁熆鐠哄ソ锟犳偄閼姐倗鏉搁梺瑙勫劤婢у孩顨欓梻鍌欐祰濡椼劑鎮為敃鍌氱婵炲棗绻掗弳锕傛煏婵炵偓娅撻柡浣革躬閹绗熼婊冨弗闂佽 鍋撻柕濞у懐锛濋梺绋挎湰閼归箖鍩€椤掑嫷妫戠紒顔肩墛缁楃喖鍩€椤掑嫨鈧線寮介鐐殿槹濡炪倖鐗楃粙鎴濃枔閹达附鈷戦柛娑橈攻鐏忣偊鏌i幒鐐电暤闁挎繄鍋ゅ鎾閿涘嫬骞嶉梻浣侯攰椤宕濋敃鍌氬惞婵炲棙鍨瑰Λ顖炴煙椤栧棗鍟崐顖炴⒑闁稓鈹掗柛鏂跨焸閿濈偛饪伴崼婵嗚€垮┑掳鍊愰崑鎾搭殽閻愬樊鍎旀慨濠呮缁瑥鈻庨幆褍澹夐梻浣告贡閹虫挸煤椤撱垻宓侀柛鎰╁妷閸亪鏌涢銈呮瀻婵炲牏鍠栧娲濞戣鲸肖闂佺ǹ瀵掗崳锝呯暦閹达箑绠婚悹鍥ㄧ叀閺佹粌鈹戞幊閸婃捇鎳楅崼鏇炵煑闁糕剝绋掗埛鎴︽煕濠靛棗顏璺哄閹便劌螣缁嬪灝顫囬悗瑙勬礃缁诲倿顢橀崗鐓庣窞閻庯綆鍓欓獮宥夋⒒娴e憡鍟為柛鏃€岣挎禍绋库枎閹炬潙鈧潡鏌涘☉姗堟敾闁告瑥绻愰埞鎴︽偐閹绘帩浼€闁汇埄鍨遍惄顖炲蓟閻旈鏆嬮柣妤€鐗嗗▓妤呮倵鐟欏嫭纾搁柛鏂跨Ф閹广垹鈹戠€n亞锛滃┑鐐村灦閻熝囧汲椤撱垺鈷掗柛灞捐壘閳ь剙鍢查湁闁搞儜鍛闂佹眹鍨绘灙缂佹劖顨婇弻娑㈠焺閸愵亖妲堢紒鐐劤濞硷繝寮婚悢鐓庣畾闁绘鐗滃Λ鍕磽娴e搫校闁绘搫绻濆濠氬即閿涘嫮鏉搁梺鍝勬川閸庢劙鍩€椤掆偓閺堫剛鎹㈠☉姘辩當闁告繂瀚~鍥⒑閸濆嫯瀚扮紒澶屽厴绡撳〒姘e亾闁哄本鐩獮妯尖偓闈涙啞閸f澘顪冮妶鍐ㄧ仾鐎光偓閹间礁鏋侀柟鐗堟緲楠炪垺绻涢崱妯虹仼婵℃彃娲︾换婵嗏枔閸喗鐏嶉梺鎸庢磵閺呯姴鐣烽姀銈呯闁兼祴鏅╁ú绋库攽閻樿宸ラ柟铏姉婢规洘绺介崨濠勫幗闂侀€涘嵆濞佳勬櫠椤斿浜滈幖娣灮閻﹥銇勯鍕殶闁逞屽墯缁嬫帟鎽梺绋匡攻閸旀鍩€椤掍緡鍟忛柛鐘愁殜閹繝鏁撻悩顔瑰亾娴h倽鏃堝川椤撶媭妲规俊鐐€栭崹鍏兼叏閵堝洠鍋撳顑惧仮婵﹦绮幏鍛村川婵犲懐顢呴梺鍝勵儛娴滄繄鎹㈠☉銏犵妞ゆ洖鎳忛ˉ鏍磽娓氬洤鏋涙い顓犲厴閻涱喖螣鐏忔牕浜鹃梻鍫熺⊕閹插憡銇勯弮鈧ú鐔煎蓟閿濆鍋愰柛娆忣槸瀹稿爼姊洪崨濠佺繁闁告ê銈搁幃锟犲磼閻愮补鎷洪柡澶屽仦婢瑰棝藝閿曞倹鐓熸俊銈傚亾闁挎洏鍎崇划姘綇閵娧呯槇闂佹悶鍎洪悘娑滎樄闁哄本绋戦埥澶愬础閻愬浜繝鐢靛仜閹冲矂宕愬┑鍡╂綎闁惧繐婀遍惌娆愮箾閸℃ê鍔ら柛鎿冨墴濮婃椽宕ㄦ繝鍐ㄩ瀺缂備浇顕х€氫即鐛幋锕€顫呴柣姗嗗亝閺傗偓闂備焦鎮堕崕顕€寮插┑瀣剨闁割偁鍎查埛鎴犵磼鐎n偄顕滄繝鈧幍顔剧<閻庯綆鍋勯悘銉╂煃鐠囪尙效闁轰焦鍔欏畷顏呮媴閻熸壆妲i梻鍌欑窔濞佳囨偋閸℃瑦宕查柟鐑橆殔缁€鍡椕归悡搴f憼闁绘挸绻橀弻娑㈩敃閵堝懏鐎鹃梺绋匡攻閸旀牠銆冮妷鈺傚€烽柟缁樺笚濞堣尙绱撴担绋库偓鍦暜閻愬搫鐒垫い鎺戯功閸掍即鏌h箛鏂垮摵鐎殿喗鐓¢、妤呭焵椤掑嫬鐓橀柟杈鹃檮閸婄兘鏌℃径瀣仼濞寸姵鎮傞弻锕傚礃椤旂粯鍠氶梺璇″枛缂嶅﹤鐣烽崼鏇炵厸濞达綁鏀遍~鏇熺節濞堝灝鏋涢柨鏇樺妼閳诲秹鏁愭径濠勵唵闂佺粯枪椤曆囨倶閹惰姤鐓i煫鍥风到娴滅偛霉濠婂啰鍩f慨濠勭帛閹峰懘鎸婃径濠冨劒闂備線娼荤紞鍥⒔閸曨剛鈹嶅┑鐘叉搐閻愬﹥銇勯幒鍡椾壕缂備胶濮甸悡锟犲蓟閺囷紕鐤€闁哄洨鍊☉銏$厸闁逞屽墯缁傛帞鈧綆鍋勯埀顒傛暬閺屻劌鈹戦崱娆忓毈缂備降鍔嬬划娆撳蓟濞戞瑧绡€闁告洦鍋傚Σ鎰攽椤旂》鏀绘俊鐐舵铻為柛鎰电厑瑜版帒围闁糕剝鐟﹂崚娑㈡倵鐟欏嫭绀冮柨鏇樺灪娣囧﹪骞栨担鑲濄劍銇勯弮鍥棄闁哄濮电换婵嬫偨闂堟刀銉╂煛娴e憡鍟為柟渚垮姂閹粓鎸婃径瀣偓顒勬⒑閸涘﹦鈽夐柨鏇樺劦瀹曪綀绠涘☉娆戝幗闂佺鎻徊楣兯夋径鎰厸閻庯絺鏅濈粣鏃堟煛瀹€鈧崰鏍ь潖閼姐倐鍋撻棃娑橆棌婵″樊鍠氱槐鎺楁倷椤掆偓缁€鍐┿亜椤愩埄妯€濠碉紕鏁诲畷鐔碱敍濮橆剙鏁ゆ俊鐐€栭崝锕€顭块埀顒傜磼椤旇偐鍩f慨濠呮缁辨帒螣閾忓湱鎳嗛梻浣筋嚙缁绘垵鐣濋崨濠佺箚闁汇垻枪缁€瀣亜閺嶃劍鐨戞い鏂匡躬濮婃椽鎮烽幍顔芥喖缂備浇顕х粔鐢电矉閹烘鍤冮柍鍝勫暟閿涙粓姊虹紒妯哄Е闁告挻鐟╁畷婵嬪Χ閸℃劒绨诲銈嗘尵婵挳宕㈢€电硶鍋撳▓鍨灈妞ゎ厾鍏橀獮鍐閵堝棗浜楅柟鑹版彧缂嶅棗危閸洘鐓熼柣鏂挎憸閻﹦绱掔紒妯烘诞鐎殿噮鍋婇、娆戜焊閺嶎煈娼旈梻渚€娼ф蹇曟閺囥垹鍌ㄥù鐘差儐閳锋垿鎮峰▎蹇擃仼闁告柣鍊栭妵鍕即閵娿儱绠归柣鎾卞€濋弻鐔虹磼閵忕姵鐏嶉梺缁樻尰閻燂箓濡甸崟顖氱睄闁稿本绮嶉幉妯衡攽閻愯尙澧涚紒顔芥崌瀵鍩勯崘鈺侇€撻梺鑽ゅ枑濠㈡﹢锝炲澶嬧拺閻犲洠鈧磭浠┑鈽嗗亜閸熸潙鐣风憴鍕╁亝闁告劏鏅涘▓銈咁渻閵堝棗绗傞柣鎺炵畱閳诲秹鏁冮埀顒勫煘閹达附鍋愰柛顭戝亝濮e嫭绻濆▓鍨珮闁告瑥鍟撮悰顔跨疀濞戞ḿ顦ㄥ銈嗘閸嬫劙藝閵娿儺娓婚柕鍫濇噽缁犱即鏌涢悢鍝勵暭闁靛洦鐟╅獮搴ㄦ嚍閵夈垺瀚藉┑鐐存尰閸╁啴宕戦幘缁樼厓鐟滄粓宕滃杈╃煓闁规崘顕ч悡姗€鏌熼悜姗嗘畷闁绘挻娲熼弻锟犲磼濠靛洨銆婇柤鍙夌墵濮婃椽鎮烽幍顔炬殯闂佹悶鍔岀紞濠囧春閻愬搫绠i柣姗嗗亜娴滈箖鏌ㄥ┑鍡欏嚬缂併劏宕电槐鎺楀箛椤撶姭妲堝銈庝簻閸熷瓨淇婇崼鏇炲耿婵☆垳鈷堝Σ顒勬⒒娴g儤鍤€闁哥喕娉曠划鏃堟偡閹殿喗娈惧銈嗗姀閹筹繝寮崼婵嗙獩濡炪倖妫侀~澶屸偓姘虫閳规垿鎮欓懜闈涙锭缂備浇寮撶划娆撶嵁婢舵劖鏅柛鏇ㄥ墮椤忔悂姊虹捄銊ユ灁濠殿喚鏁婚幃鈥斥枎閹惧鍙勯棅顐㈡祫缁茶姤绂嶅┑瀣€堕煫鍥ㄦ礃閺嗩剟鏌$仦鐣屝ユい褌绶氶弻娑㈠箻绾惧顥濆銈庡亝缁诲牊淇婇幖浣规櫆闁兼亽鍎宠ぐ鎸庣節瀵伴攱婢橀埀顒佹崌閹虫宕奸弴鐐靛幋閻庡箍鍎遍幊澶愬绩娴犲鐓熸俊顖氭惈缁狙囨煙閸忕厧濮夌紒杈ㄥ浮閹晠宕归銏$暚闂傚倸娲らˇ鐢稿蓟閵娿儮鏀介柛鈩冪懃椤f椽姊洪柅鐐茶嫰閸樺摜绱掗鐣屾噭濞e洤锕獮鏍ㄦ媴閸濄儱骞愰梻浣呵归張顒傚垝鐏炵瓔鍤曢柟鎯板Г閳锋帒霉閿濆懏鍟為柟顖氱墦閺屾盯鎮㈤崫鍕ㄦ瀰閻庤娲橀崹鍧楃嵁濡偐纾兼俊顖滃帶楠炲牓姊虹涵鍛棈闁规椿浜炲Σ鎰板即閵忊剝娅栭悗骞垮劚濞层劎澹曟總绋跨骇闁割偅纰嶅▍鍛归悩娲摵妞ゃ劊鍎甸幃娆撳级閹寸姷鎳嗛梺鍓х帛閻楁洟婀侀梺鎸庣箓閹冲海鐥閹顫濋銈囩厯濠殿喖锕︾划顖炲箯閸涙潙宸濋梻鍫熺〒缁夎櫣鈧鍠氶弫濠氥€佸Δ鍛妞ゆ巻鍋撳ù鐙€鍙冨娲濞淬儱鐗撳鎻掆槈濮樿京鐒奸梺绋挎湰婢规洟宕戦幘璇茬濠㈣泛锕f竟鏇㈡⒒娴e憡鍟炴繛璇х畵瀹曟粌鈽夐姀鐘插亶闂佹眹鍨归幉锟犲煕閹达附鐓欐い鏍ф鐎氼噣銆呮导瀛樷拺缂佸顑欓崕蹇涙煙閸愭煡鍙勯柟顔藉劤閻o繝骞嶉鑺ョ暦闂備線鈧偛鑻晶鎾煕閳规儳浜炬俊鐐€栫敮鎺楀窗濮橆兗缂氶柟閭﹀幘缁犻箖鏌涘▎蹇fШ闁活厽甯為埀顒侇問閸n噣宕戦崱娑樼闁绘ê妯婇崯鍛亜閺傚灝鎮戞い鎾崇仢閳规垿鎮欏顔兼婵犳鍠楅幐鎶姐€侀弽顓炵疀闁哄瀵ч悗顒勬⒑閹肩偛鍔撮柛鎾村哺閹繝鎮㈤崗鑲╁幍闂備緡鍙忕粻鎴濐嚕妤e啯鐓曢柣鏃堫棑缁犲鏌$仦鍓ф创闁诡喗鐟╁畷褰掝敃閿濆棛妲楀┑鐘愁問閸犳牠鏁冮敂鎯у灊妞ゆ牜鍋涚粻顖炴煕濞戞ḿ鎽犻柛銈呯Ч閺屾洘绔熼娆掝唹闁稿鎸荤换婵嬪炊閵娿垺瀚奸梻鍌氬€搁悧鍐疾濠靛牏鐭撻柛鎾茶兌绾惧ジ鏌eΟ鎸庣彧鐎规洖鐭傞弻锝呪槈閸楃偞鐏曠紓浣哄У缁嬫垿鍩ユ径濞炬瀻闁归偊鍙庢禒褔姊婚崒娆愮グ婵炲娲熷畷鎶芥晝閸屾氨顔嗛梺璺ㄥ櫐閹凤拷...

  宕机原因分析网上有各种说法,有说是数据库数据和备份数据被物理删除的。也有说是各个节点的业务代码被删除,现在重新在部署。也有说是误操作,导致业务不可用,还有说是黑客攻击甚至是内部员工恶意破坏的。

  先说一下最早传出来的“数据库物理删除”,其实这个提法就很不专业,应该是第一个传播者,试图强调问题之严重和恢复之困难,所以用了一个普通电脑用户比较熟悉的“物理删除”的概念。实际上,任何一个网站的数据库,都分为本地高可用备份、异地热备、磁带冷备三道防线,相应的数据库管理员、操作系统管理员、存储管理员三者的权限是分离的,磁带备份的数据甚至是保存在银行的地下金库中的。从理论上而言,很难有一个人能把所有的备份数据都删除,更不用说这个绘声绘色的物理删除了。

  第二个则是黑客攻击和内部员工破坏的说法,这个说法能满足一些围观者猎奇的心理,因此也传播的比较快。但理性分析,可能性也不大。黑客讲究的是潜伏和隐蔽,做这种事等于是在做自杀性攻击。而内部员工也不太可能,我还是相信携程的运维人员的操守和职业素养,在刑法的威慑下,除非像“法航飞行员撞山”那种极个别案列,正常情况下不太可能出现人为恶意的可能性。

  从现象上看,确实是携程的应用程序和数据库都被删除。我分析,最大的可能还是运维人员在正常的批量操作时出现了误操作。我猜测的版本是:携程网被“乌云”曝光了一个安全漏洞,漏洞涉及到了大部分应用服务器和数据库服务器;运维人员在使用pssh这样的批量操作执行修复漏洞的脚本时,无意中写错了删除命令的对象,发生了无差别的全局删除,所有的应用服务器和数据库服务器都受到了影响。这个段子在运维圈子中作为笑话流传了很多年,没想到居然真的有这样一天。

  为什么恢复的如此缓慢?从上午11点传出故障,到晚上8点,携程网站一直没能恢复。所以很多朋友很疑惑:“为什么网站恢复的如此缓慢?是不是数据库没有备份了?”这也是那个“数据库物理删除”的说法很流行的一个根源。实际上这个还是普通用户,把网站的备份和恢复理解成了类似我们的笔记本的系统备份和恢复的场景,认为只有有备份在,很快就能导入和恢复应用。

  实际上大型网站,远不是像把几台应用和数据库服务器那么简单。看似很久都没有变化的一个网站,后台是一个由SOA(面向服务)架构组成的庞大服务器集群,看似简单的一个页面背后由成百上千个应用子系统组成,每个子系统又包括若干台应用和数据库服务器,大家可以理解为每一个从首页跳转过去的二级域名都是一个独立的应用子系统。这上千的个应用子系统,平时真正经常发布和变更的,可能就是不到20%的核心子系统,而且发布时都是做加法,很少完全重新部署一个应用。

  在平时的运维过程中,对于常见的故障都会有应急预案。但像携程这次所有系统包括数据库都需要重新部署的极端情况,显然不可能在应急预案的范畴中。在仓促上阵应急的情况下,技术方案的评估和选择问题,不同技术岗位之间的管理协调的问题,不同应用系统之间的耦合和依赖关系,还有很多平时欠下的技术债都集中爆发了,更不用说很多不常用的子系统,可能上线之后就没人动过,一时半会都找不到能处理的人。更要命的是,网站的核心系统,可能会写死依赖了这个平时根本没人关注的应用,想绕开边缘应用只恢复核心业务都做不到。更别说在这样的高压之下,各种噪音和干扰很多,运维工程师的反应也没有平时灵敏。

  简单的说,就算所有代码和数据库的备份都存在,想要快速恢复业务,甚至比从0开始重新搭建一个携程更困难。携程的工程师今天肯定是一个不眠夜。乐观的估计,要是能在24小时之内恢复核心业务,就已经非常厉害了。

  天下运维是一家。携程的同行加油,尽快度过难关!

  故障根源反思:黑盒运维之殇携程的这次事件,不管原因是什么,都会成为IT运维历史上的一个标志性事件。相信之后所有的IT企业和技术人员,都会去认真的反思,总结经验教训。但我相信,不同的人在不同的位置上,看到的东西可能是截然相反的,甚至可能会有不少企业的管理者受到误导,开始制定更严格的规章制度,严犯运维人员再犯事。在此,我想表明一下我的态度:这是一个由运维引发的问题,但真正的根源其实不仅仅在运维,预防和治理更应该从整个企业的治理入手。

  长久以来,在所有的企业中,运维部门的地位都是很边缘化的。企业的管理者会觉得运维部门是成本部门,只要能支撑业务就行。业务部门只负责提业务需求,开发部门只管做功能的开发,很多非功能性的问题无人重视,只能靠运维人员肩挑人扛到处救火,可以认为是运维部门靠自己的血肉之躯实现了业务部门的信息化。在这样的场景下,不光企业的管理者不知道该如何评价运维的价值,甚至很多运维从业者都不知道自己除了到处救火外真正应该关注什么,当然也没有时间和精力去思考。

  在上文的情况下,传统的运维人员实际上是所谓的“黑盒运维”,不断的去做重复性的操作,时间长了之后,只知道自己管理的服务器能正常对外服务,但是却不知道里面应用的依赖关系,哪些配置是有效配置、哪些是无效配置,只敢加配置,不敢删配置,欠的技术债越来越多。在这样的情况下,遇到这次携程的极端案列,需要完整的重建系统时候,就很容易一筹莫展了。

  对于这样的故障,我认为真正有效的根源解决做法是从黑盒运维走向白盒运维。和Puppet这样的运维工具理念一致,运维的核心和难点其实是配置管理,运维人员只有真正的清楚所管理的系统的功能和配置,才能从根源上解决到处救火疲于奔命的情况,也才能真正的杜绝今天携程这样的事件重现,从根本上解决运维的问题。

  从黑盒运维走向白盒运维,再进一步实现DevOps(开发运维衔接)和软件定义数据中心,就是所谓的运维2.0了。很显然,这个单靠运维部门自身是做不到的,需要每一个企业的管理者、业务部门、开发部门去思考。因此,我希望今天这个事件,不要简单的让运维来背黑锅,而是让大家真正的从中得到教训和启示。

 

相关热词搜索: 携程 宕机

上一篇:华三:收购之后,新IT战略不变

下一篇:最后一页

  • 0

  • 0

  • 0

  • 0

  • 0

  • 0

  • 0

  • 0

分享到:           收藏

专题