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