服務(wù)器癱瘓后,如何補(bǔ)救?
冗余不做,日子甭過!備份不做,十惡不赦!
日前,某知名旅行類網(wǎng)站出現(xiàn)了長時(shí)間的服務(wù)不可用狀況。本文嘗試從技術(shù)方面分析其可能遇到的問題,并提出一些解決方案。
外部攻擊
互聯(lián)網(wǎng)上的外部威脅級(jí)別,特別是APT攻擊的出現(xiàn)頻率在更近幾年逐年上升。由于本次被攻擊的公司更近在資本市場(chǎng)上有所動(dòng)作,收購了同行業(yè)另一家公司的部分股權(quán),因此,不能排除外部攻擊者通過APT攻擊的方式進(jìn)入內(nèi)部進(jìn)行破壞,制造新聞事件并影響開盤時(shí)的股價(jià)。盡管利空消息下,投資者有拋售相關(guān)股票的傾向,但可通過觀察分析近期買賣行為的方式證明并找出潛在的相關(guān)負(fù)責(zé)人。
不過,從行為上看,盡管這是一個(gè)有價(jià)值目標(biāo),為了達(dá)到造成超過6小時(shí)完全宕機(jī)的目標(biāo),需要的準(zhǔn)備工作以及背后的技術(shù)支持并非腳本小子就可以辦得到。在短時(shí)間之內(nèi)做出決定、組織攻擊并成功攻陷的可能性不高。
內(nèi)部攻擊
內(nèi)部攻擊是防范的、也是威脅級(jí)別的攻擊。由于內(nèi)部人士有特權(quán)信息,在配合得當(dāng)權(quán)限或發(fā)現(xiàn)相應(yīng)漏洞時(shí),很容易造成有影響力的事件。此種內(nèi)部攻擊的可能性,更大來自運(yùn)維團(tuán)隊(duì)。
假設(shè)運(yùn)維團(tuán)隊(duì)有1/2的成員決定進(jìn)行一次內(nèi)部攻擊,則此團(tuán)隊(duì)有很大的機(jī)會(huì)在短時(shí)間之內(nèi)做好相應(yīng)準(zhǔn)備,首先關(guān)閉日志以及審計(jì)系統(tǒng),其次破壞線上環(huán)境,再進(jìn)行源代碼管理服務(wù)器,很容易便可造成幾乎不可逆的破壞。盡管動(dòng)機(jī)有待商榷,但并不能排除內(nèi)部攻擊的可能性。
運(yùn)維誤操作
PEBKAC錯(cuò)誤是常見的錯(cuò)誤。盡管可能,考慮到該網(wǎng)站的業(yè)務(wù)量以及雇員規(guī)模,其幾乎沒有可能使用單服務(wù)器部署應(yīng)用。但觀察到的錯(cuò)誤狀況是幾乎所有的服務(wù)全部下線,因此,單臺(tái)服務(wù)器誤操作導(dǎo)致的災(zāi)難是幾乎沒有可能的。
一種災(zāi)難發(fā)生的可能是cascading failure。假設(shè)運(yùn)維團(tuán)隊(duì)在發(fā)布版本時(shí),發(fā)布了錯(cuò)誤的配置文件,盡管這種分發(fā)是在可控狀況下進(jìn)行的,但因?yàn)橄到y(tǒng)在低發(fā)布率時(shí)崩潰有自愈能力,在更高百分比的發(fā)布時(shí),由于可用系統(tǒng)的負(fù)載更大,導(dǎo)致可用系統(tǒng)退出服務(wù),更終導(dǎo)致所有可用服務(wù)均退出服務(wù),服務(wù)宣告徹底不可用。
考慮到此公司業(yè)務(wù)的復(fù)雜性,并觀察到其技術(shù)棧是大部分基于西雅圖郊區(qū)某公司的技術(shù)構(gòu)建的,幾乎可以肯定的是,部分中間件的支持實(shí)際上是依賴外部技術(shù)支持的。若是中間件或是第三方vendor提供的組件導(dǎo)致錯(cuò)誤,很可能本地團(tuán)隊(duì)無法做到及時(shí)響應(yīng)。事件發(fā)生時(shí)大約是太平洋時(shí)間下午9點(diǎn),此時(shí)的技術(shù)支持很大可能是在印度或是澳大利亞進(jìn)行的。作者的行業(yè)從業(yè)經(jīng)驗(yàn)表明,印度技術(shù)支持在很大程度上是無法很快解決技術(shù)問題的。若是本地團(tuán)隊(duì)沒有對(duì)應(yīng)對(duì)災(zāi)難做出playbook,則很有可能在生產(chǎn)環(huán)境故障時(shí)束手無措。
應(yīng)對(duì)措施
不管是攻擊或是內(nèi)部故障,有好的備份以及冗余措施,均可以使宕機(jī)時(shí)間縮短到低。
備份問題盡管聽起來不可思議,但在實(shí)踐中,不少企業(yè)并未建立起一套檢驗(yàn)過的備份系統(tǒng)。備份的意義在于危急時(shí)刻可以快速恢復(fù)或重建生產(chǎn)系統(tǒng)。在企業(yè)網(wǎng)絡(luò)中,經(jīng)常出現(xiàn)的問題實(shí)際上是:
1、備份步驟的瑕疵導(dǎo)致并未完成正確的備份過程
2、由于有限的存儲(chǔ)空間導(dǎo)致一定時(shí)間后因存儲(chǔ)空間耗盡導(dǎo)致的隨后備份失敗
3、備份介質(zhì)受損導(dǎo)致無法成功恢復(fù)
傳統(tǒng)上,磁帶因其低造價(jià)以及高存儲(chǔ)密度使其成為了理想的備份介質(zhì)。然而,這種傳統(tǒng)備份介質(zhì)的幾個(gè)致命缺點(diǎn)經(jīng)常使其內(nèi)含的數(shù)據(jù)變得不可存?。?/p>
1、丟失的磁帶索引卡片
2、磁帶介質(zhì)在存儲(chǔ)過程中受到外界磁場(chǎng)影響
3、介質(zhì)本身損壞
4、介質(zhì)讀取過程中被讀取設(shè)備損壞
此外,磁帶備份介質(zhì)本身一般存儲(chǔ)于磁帶倉庫中,從倉庫檢索出所需的備份磁帶、轉(zhuǎn)移至數(shù)據(jù)中心并重新加載數(shù)據(jù)的時(shí)間消耗通常也是客觀的。
即使有一套完善的備份系統(tǒng),備份系統(tǒng)仍然是不能抵擋所有的意外事故的。2014年,Samsung數(shù)據(jù)中心的一場(chǎng)大火使其云服務(wù)暫停服務(wù)。如果沒有異地備份,這場(chǎng)大火將使其本地備份的恢復(fù)變得極為困難。
冗余對(duì)于突發(fā)性事件來說,盡快恢復(fù),或者是持續(xù)的提供服務(wù)是非常重要的。本月,某知名支付公司因數(shù)據(jù)中心網(wǎng)絡(luò)連接性故障導(dǎo)致了一段時(shí)間的服務(wù)中斷。如果有更好的冗余方案,此種事故的影響面將會(huì)得以降低,甚至?xí)鉃橛脩舨豢筛兄膬?nèi)部事故。
冗余是非常常見的做法。例如,大部分服務(wù)器都有兩部獨(dú)立的PSU,任意一部PSU失效均不會(huì)影響其正常服務(wù);一般來說,服務(wù)器的兩部PSU將連接到兩路不同的電路或不間斷電源上以避免市電失效;數(shù)據(jù)中心的電源一般同時(shí)配備UPS以及柴油發(fā)電機(jī)以避免發(fā)電公司未通知的停止供電服務(wù)導(dǎo)致的服務(wù)中斷。網(wǎng)絡(luò)亦然;同時(shí)接入多路ISP線路,并對(duì)其進(jìn)行獨(dú)立布線,同時(shí)在多路線路上宣告地址,便可使網(wǎng)絡(luò)服務(wù)的魯棒性更高。
在系統(tǒng)的視角上,只有同時(shí)配置備份以及冗余方案,才可以大限度的提高可用性,避免非可控因素導(dǎo)致的長時(shí)間服務(wù)中斷。