專(zhuān)訪又拍云邵海楊:自動(dòng)化運(yùn)維之路如何走
原創(chuàng)在計(jì)算機(jī)應(yīng)用的發(fā)展歷史中,運(yùn)維工作一直是必不可少的重要環(huán)節(jié)。無(wú)論在什么年代、什么場(chǎng)景,保證服務(wù)的正常可持續(xù)運(yùn)行都是運(yùn)維的最終目標(biāo)。隨著規(guī)模增長(zhǎng),依賴(lài)手工管理自然已無(wú)力應(yīng)對(duì)。許多互聯(lián)網(wǎng)公司的服務(wù)器早已跨入幾百甚至千臺(tái)規(guī)模,腳本化、批量化管理占據(jù)非常大的比例,在這個(gè)階段,自動(dòng)化運(yùn)維便顯得尤為重要。
在Velocity大會(huì)中,我們采訪了又拍云的運(yùn)維總監(jiān)邵海楊,邵海楊老師從類(lèi)車(chē)載系統(tǒng)、監(jiān)控角度和互聯(lián)網(wǎng)方面跟我們探討了自動(dòng)化運(yùn)維的詳細(xì)情況,并且還給我們自動(dòng)化運(yùn)維的新人提出了一些寶貴的建議。
邵海楊,又拍云(UPYun)運(yùn)維總監(jiān),網(wǎng)名"海洋之心",新浪微博"@海洋之心-悟空",HZLUG組織者/HZGDG核心成員,資深系統(tǒng)運(yùn)維/架構(gòu)師,精通系統(tǒng)及網(wǎng)絡(luò)管理,定制嵌入式系統(tǒng),安全防御及CDN加速,互聯(lián)網(wǎng)高性能網(wǎng)絡(luò)及架構(gòu)設(shè)計(jì)、NoSQL先行者、分布式文件系統(tǒng)、虛擬化及OpenStack云平臺(tái)的研究等新技術(shù),致力于開(kāi)源軟件及前沿科技的研究和探索。
51CTO:邵老師您好!在您看來(lái)一個(gè)合格的運(yùn)維工程師是怎么定義?
邵海楊:運(yùn)維這一塊應(yīng)該說(shuō)最近這幾年才火起來(lái)的。我2002年畢業(yè)以后在一個(gè)數(shù)據(jù)中心做,我們那時(shí)候一個(gè)月能接到的服務(wù)器差不多也就二三十臺(tái),也沒(méi)有達(dá)到很大很專(zhuān)業(yè)的運(yùn)維級(jí)別,做得更多的是系統(tǒng)管理和網(wǎng)絡(luò)管理。我認(rèn)為做一個(gè)合格的運(yùn)維工程師首先要把系統(tǒng)部分,我們所說(shuō)的Linux要玩得很精通;那其次是網(wǎng)絡(luò)部分,像CCMA這種級(jí)別的話肯定是要有的,像我們公司,差不多也是跟阿里巴巴一起成長(zhǎng)的,2008年的時(shí)候互聯(lián)網(wǎng)迅速地?cái)U(kuò)張,手頭的機(jī)器也上升到成百上千臺(tái),這個(gè)時(shí)候運(yùn)維的重要性會(huì)越來(lái)越體現(xiàn)出來(lái)。
總的來(lái)說(shuō),基礎(chǔ)還是建立在對(duì)系統(tǒng)的精通和對(duì)網(wǎng)絡(luò)的把握,之后再去做一些自動(dòng)化故障排除和其他一些特定的工作。
51CTO:一個(gè)好的團(tuán)隊(duì)?wèi)?yīng)該具備一些怎么樣的要素才能夠讓這個(gè)團(tuán)隊(duì)往更加好的方向發(fā)展呢?
邵海楊:我以前的座右銘是“無(wú)功就是過(guò),平庸就是錯(cuò)”,我很講究個(gè)人技能的修養(yǎng)修煉??赡苓@跟我那個(gè)時(shí)代也有關(guān)系,因?yàn)槲覀兡莻€(gè)時(shí)代(08年之前)比較講究復(fù)合型人才,你一個(gè)人這個(gè)也能干,那個(gè)也能干,說(shuō)明這個(gè)人也還挺好。但是從08年到這段時(shí)間來(lái)看,近十年互聯(lián)網(wǎng)的發(fā)展來(lái)看,其實(shí)分工會(huì)越來(lái)越細(xì),然后對(duì)每一個(gè)領(lǐng)域的技能要求都會(huì)越來(lái)越高。當(dāng)你管理的機(jī)器多了以后,就算是裝系統(tǒng)這么簡(jiǎn)單的事情也完全是一個(gè)含量很高的東西。它需要專(zhuān)門(mén)的人來(lái)完成。這是從量變到質(zhì)變的過(guò)程。
我現(xiàn)在改變了看法,我覺(jué)得個(gè)人的溝通能力遠(yuǎn)比技術(shù)更加重要,情商要更高一點(diǎn)。像我們團(tuán)隊(duì)里面的人都是喜歡交流的。如果你能夠跟別人很好地溝通、合作、協(xié)調(diào)的話,就你創(chuàng)造出來(lái)的價(jià)值也好、威力也好,肯定是一加一大于二的。相反如果每個(gè)人都各自為政加上溝通成本的開(kāi)銷(xiāo),你的威力會(huì)有損耗。
我還想說(shuō)一點(diǎn),個(gè)人能力的修養(yǎng)跟你團(tuán)隊(duì)合作是不沖突的,你個(gè)人能力的修養(yǎng)不斷地提高,你認(rèn)識(shí)人的層次就會(huì)不斷地提高。比如說(shuō)你的情商比較低的話,你認(rèn)知的人也可能情商比較低,你找他們?nèi)プ鰣F(tuán)隊(duì)合作的時(shí)候,你成功的概率就會(huì)小。平時(shí)可以利用一些時(shí)間提升自己的能力,多去接觸一些跟你志同道合的,或者旗鼓相當(dāng),甚至比你高一點(diǎn)點(diǎn)的人。然后你再跟人家去做溝通協(xié)調(diào),這樣效果會(huì)好一些。
51CTO:能談一下您在自動(dòng)化運(yùn)維領(lǐng)域上的一些經(jīng)驗(yàn)或者說(shuō)是遇到的一些問(wèn)題,自己總結(jié)的一些心得么?
邵海楊:我走自動(dòng)化運(yùn)維這條道路稍微有點(diǎn)怪,2010年之前,我都是在一家嵌入式公司里做嵌入式的,比如說(shuō)車(chē)載系統(tǒng)嵌入式系統(tǒng),首先它是把小系統(tǒng)要做得很小,燒到部件里面去,打包出去以后,這個(gè)系統(tǒng)是你無(wú)法控制的。比如說(shuō)我們做一個(gè)車(chē)載系統(tǒng),裝到汽車(chē)上去,車(chē)載系統(tǒng)如果固件要升級(jí)理論上你是不能遠(yuǎn)程連接上去的,因?yàn)槟阗u(mài)給客戶了。所以我們?cè)谇度胧嚼锩鏁?huì)做很多東西,比如說(shuō)系統(tǒng)會(huì)定制,然后升級(jí)的程序我們也會(huì)定制,就相當(dāng)于有一個(gè)哨兵一樣的,是長(zhǎng)期駐留在那個(gè)車(chē)載系統(tǒng)里面的。當(dāng)它監(jiān)測(cè)到有自動(dòng)更新的話,它會(huì)把固件下載下來(lái)做一些自動(dòng)升級(jí),而且是把整個(gè)固件重新刷一遍,這個(gè)就比較牛一些。所以我在又拍云公司里面也是推行這套東西的。所有的服務(wù)器現(xiàn)在都是用那種小系統(tǒng)來(lái)做,然后小系統(tǒng)有自我升級(jí)的能力,我們的服務(wù)器還有那種遠(yuǎn)程連接的能力這樣我們可以在上面做更多的事情,比車(chē)載還要更加靈活一點(diǎn)。
像現(xiàn)在的互聯(lián)網(wǎng),我感覺(jué)這套思路用上去以后,壓力會(huì)小很多。因?yàn)橐郧拔覀兪且屛覀儫o(wú)法控制的終端都具有自我修復(fù)的能力,而現(xiàn)在就相當(dāng)于我那個(gè)機(jī)器是我們自有的服務(wù)器,我可以讓它像車(chē)載系統(tǒng)一樣升級(jí),而且我也可以遠(yuǎn)程去控制它,所以工作要輕松很多。但是前提還是你要對(duì)系統(tǒng)了解,這樣我們才可以做很多個(gè)性化或者很炫的東西。
51CTO:從監(jiān)控的角度來(lái)看,自動(dòng)化運(yùn)維是怎么配合這個(gè)工作的?
邵海楊:監(jiān)控非常重要,這一點(diǎn)是毋庸置疑的。監(jiān)控為什么非常重要,我現(xiàn)在也在想這個(gè)問(wèn)題,早期我們做運(yùn)維也好,做系統(tǒng)管理也好,所謂的監(jiān)控其實(shí)我可能一條命令或者一屏就看完了,但是當(dāng)你發(fā)現(xiàn)要管理成百甚至上萬(wàn)臺(tái)機(jī)器的時(shí)候,如果沒(méi)有一個(gè)很好的監(jiān)控匯報(bào)系統(tǒng),你現(xiàn)在的顯示器根本不夠大。像我們現(xiàn)在的服務(wù)器有將近千臺(tái),理論上所有的配置文件要更新一遍,差不多都要十多分鐘。你說(shuō)一天能有幾個(gè),天天盯著那個(gè)看。
隨著你的機(jī)器數(shù)量的增加,你腦子里面必須有一個(gè)量變到質(zhì)變的過(guò)程,需要用一些輔助工具來(lái)幫助你做一些監(jiān)控。從我的經(jīng)驗(yàn)來(lái)說(shuō)分三部分:
第一部分就是第三方監(jiān)控,就好比我們?nèi)艘粯?,首先你這個(gè)人不會(huì)無(wú)緣無(wú)故生病,你肯定有個(gè)先兆,比如說(shuō)我今天吃了辣的東西然后明天就上火。第三方監(jiān)控,比如說(shuō)像cacti、nagios這樣,它可以幫你做連續(xù)的健康檢測(cè)。比如說(shuō)這個(gè)系統(tǒng)出問(wèn)題以后,我會(huì)發(fā)現(xiàn)它內(nèi)存暴漲,我就知道原來(lái)是內(nèi)存的原因?qū)е滤B續(xù)的監(jiān)控。
還有一種監(jiān)控我們稱(chēng)之為第一人稱(chēng)監(jiān)控,就是事件驅(qū)動(dòng)的第一人稱(chēng)監(jiān)控。服務(wù)器本身在運(yùn)行的時(shí)候是知道自己發(fā)生了哪些事情,舉個(gè)例子,攻擊,當(dāng)攻擊發(fā)生的時(shí)候,服務(wù)器是最先知道我網(wǎng)卡上面的流量爆增了,但是第三方監(jiān)控的時(shí)候是很痛苦的。因?yàn)楣魰?huì)把你這條路堵住,你的流量你的監(jiān)控?cái)?shù)據(jù)有可能傳送不出來(lái)。因?yàn)橄馾dos攻擊可以在幾秒鐘或者幾分鐘里面就把你打爆掉。這個(gè)時(shí)候第一人稱(chēng)監(jiān)控的話就可以做一些實(shí)時(shí)性要求更高的動(dòng)作。比如說(shuō)我監(jiān)控到我的網(wǎng)卡流量爆漲以后它可能在臨死之前通過(guò)一條短信也好,或者通過(guò)一條監(jiān)控腳本也好,把這個(gè)節(jié)點(diǎn)從DMMS上面摘掉。
第三個(gè)日志監(jiān)控,日志監(jiān)控也很重要。過(guò)去式所有發(fā)生的行為它都會(huì)在日志里面。日志我們會(huì)收集起來(lái)匯總,會(huì)做大數(shù)據(jù)分析,你可以找出客戶的哪個(gè)鏈接是最熱的,我們會(huì)把最熱的鏈接放到SSD里面固態(tài)硬盤(pán)里面去,這種也可以做性能監(jiān)控。我們會(huì)抽取一萬(wàn)條記錄,然后看這一萬(wàn)條記錄里面的平均響應(yīng)是多少,這個(gè)也是屬于性能監(jiān)控。
前面兩個(gè)你可以化被動(dòng)為主動(dòng),因?yàn)橐郧拔乙匆黄帘O(jiān)控?cái)?shù)據(jù),現(xiàn)在等我的手機(jī)短信響就可以了,這樣我人可以在外面跑,只要我收到短信就表示出問(wèn)題了。第三個(gè)日志分析,我們會(huì)建數(shù)據(jù)模型,你是有準(zhǔn)備的,而且是有想法的那種去看數(shù)據(jù)。這樣就不會(huì)太累,因?yàn)槲抑牢蚁胍裁礀|西。
51CTO:《運(yùn)維自動(dòng)化的私人定制》您做這個(gè)議題的目的是什么?
邵海楊:我覺(jué)得做運(yùn)維沒(méi)那么苦,也沒(méi)有那么累,我們要聰明地做事情,方法得當(dāng)?shù)脑?,像我現(xiàn)在這樣隨便喝喝茶聊聊天,然后千臺(tái)機(jī)器還在那邊很穩(wěn)定的。有句話說(shuō)計(jì)算機(jī)永遠(yuǎn)沒(méi)錯(cuò),它犯錯(cuò)也是邏輯不對(duì)。理論上你把你的業(yè)務(wù)模型整理好,然后驗(yàn)算過(guò),機(jī)器是會(huì)非常聽(tīng)話的做事情,不用吃飯,只要給電就可以,日復(fù)一日,年復(fù)一年,我們幾臺(tái)都機(jī)器都跑了五六年,上去一看都很?chē)樔耍€能好好的。
51CTO:對(duì)于一些剛剛步入自動(dòng)化運(yùn)維領(lǐng)域的新人的話,您對(duì)他們有一些什么樣的建議?
邵海楊:這個(gè)建議有點(diǎn)多,就列舉幾個(gè)吧:
第一個(gè)腳本編程必須要掌握,前面提到你讓你的機(jī)器有智能化的東西就是要輔助腳本。
第二個(gè)對(duì)網(wǎng)絡(luò)對(duì)系統(tǒng)的精通,因?yàn)橹挥心銓?duì)底層的東西非常了解你才能像庖丁解牛一樣去做這個(gè)事情。才能融會(huì)貫通舉一反三去做這個(gè)事情。
第三個(gè)運(yùn)維現(xiàn)在有面對(duì)來(lái)自云的挑戰(zhàn),據(jù)我所知有一些初級(jí)運(yùn)維什么之類(lèi)的已經(jīng)被阿里云或者其他的云托管商給取代掉了,所以說(shuō)運(yùn)維如果要跟自己的競(jìng)爭(zhēng)力還需要掌握一些編程的技巧。比如說(shuō)像node.js、python我覺(jué)得可以幫助以后自己,無(wú)論是轉(zhuǎn)型也好,還是提升個(gè)人競(jìng)爭(zhēng)力也好都非常有幫助。
第四個(gè)我覺(jué)得還是要鍛煉口才。多跟外面的人去溝通去交流。因?yàn)橛行﹩?wèn)題你沒(méi)有遇到,但是其他人已經(jīng)遇到了。所以你可以跟他多去交流一下,你就可以獲取到別人的一些解決辦法。這也是我們參加大會(huì)的目的,互相切磋一下。溝通能力真的很重要,當(dāng)你有一個(gè)好的主意,或者有一個(gè)問(wèn)題死活講不明白的時(shí)候你知道有多痛苦嗎?
51CTO:最后一個(gè)問(wèn)題,WOT峰會(huì)的時(shí)候您那一場(chǎng)的人超級(jí)多,真的是爆滿,那么自動(dòng)化運(yùn)維這么火爆的原因是什么?
邵海楊:自動(dòng)化運(yùn)維就是互聯(lián)網(wǎng)基因,包括現(xiàn)在互聯(lián)網(wǎng)金融帶來(lái)的沖擊,以前我們?cè)趨⒓哟髸?huì)的時(shí)候,這種互聯(lián)網(wǎng)的大會(huì),銀行證券公司其實(shí)很少來(lái)聽(tīng)的,但自從阿里推了個(gè)余額寶以后還有天弘基金以后,證券公司和銀行也過(guò)來(lái)聽(tīng)了,這是一個(gè)很好的苗頭。運(yùn)維一直有,但為什么現(xiàn)在自動(dòng)化運(yùn)維這么火就是因?yàn)榛ヂ?lián)網(wǎng)上面承載的量,包括網(wǎng)民的網(wǎng)速也越來(lái)越好,上網(wǎng)條件也越來(lái)越好,互聯(lián)網(wǎng)呈現(xiàn)一個(gè)爆炸式的增長(zhǎng)。我們的機(jī)器一下從以前的幾十臺(tái)到幾百臺(tái)機(jī)器,這個(gè)時(shí)候你要再不用自動(dòng)化就束手無(wú)策了,靠人根本不行。自動(dòng)化也是最近這幾年才被這樣追捧到很高的一個(gè)地位,現(xiàn)在運(yùn)維自動(dòng)化基本上可以跟架構(gòu)師甚至跟前沿的技術(shù),程序員什么之類(lèi)的比擬。看所有的大會(huì)里面都會(huì)安排一場(chǎng)自動(dòng)化運(yùn)維。
第二我想說(shuō)自動(dòng)化里面,你要達(dá)到自動(dòng)化其實(shí)還有編程的思想在里面。包括我在WOT,包括我在今天的演講我也會(huì)提到,運(yùn)維要像程序員一樣的思考,像我們運(yùn)維的人員一樣,其實(shí)都是有編程功底的。不僅僅只是玩玩操作系統(tǒng),玩玩網(wǎng)絡(luò)的人。因?yàn)槟阋愕阶詣?dòng)化要把它變成智能的話你肯定要寫(xiě)程序然后機(jī)器去做模式識(shí)別也好,做相應(yīng)的行動(dòng)處理也好。你會(huì)發(fā)現(xiàn)運(yùn)維自動(dòng)化本身就是一個(gè)綜合性的東西,就是我們現(xiàn)在說(shuō)的DevOps,你要懂開(kāi)發(fā),要懂編程,要懂系統(tǒng)、懂網(wǎng)絡(luò),然后要會(huì)去跟開(kāi)發(fā)人員做溝通、協(xié)調(diào)。運(yùn)維自動(dòng)化本身就是兩方面,運(yùn)維是一方面,自動(dòng)化是一方面,離開(kāi)了編程你很難自動(dòng)化。
好的,非常感謝邵海楊老師的分享!此次專(zhuān)訪就到這里。在自動(dòng)化運(yùn)維方面,如果您有更多需要解答的問(wèn)題,歡迎留言討論。















 
 
 



 
 
 
 