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