專訪阿里柯旻:云計算運維與傳統運維的探討
原創【51CTO專稿】在云計算各種概念風起云涌的今天,信息化管理觀念的不斷成熟發展,各種趨勢分析和熱點論壇都在討論云計算帶給我們的各種好處。IT基礎設施高度集中使得傳統的IT運維變得越來越被動,是不是有那么一天,我們的企業中的IT服務全部由云服務提供,就不再需要IT運維人員呢?傳統運維與云計算運維的差異性在哪里?本文中,來自阿里集團技術保障部云計算運維高級技術專家柯旻(花名:大舞)就這些問題表明了自己的觀點和看法。跟隨小編一起來看看吧。
(阿里巴巴云計算運維-高級技術專家 柯旻)
【嘉賓簡介】柯旻:花名大舞,2007年加入阿里,前期負責sa方面的一些工作,后期云計算運維部門,主要負責整個阿里Hadoop集群(即云梯)的運維工作,以及離線的HBase集群方面的工作。
以下是采訪實錄:
云計算運維與傳統運維的差異性
51CTO:阿里巴巴云計算運維是在什么樣的背景下產生的?
柯旻:由于阿里巴巴業務的發展需要,數據量飛速膨脹。云計算、分布式計算等(包括我們自主開發的飛天系統),都是在這樣的背景下產生的。
51CTO:云計算運維與傳統運維的區別在哪里?
柯旻:其實最主要區別是量的膨脹。
傳統的運維可能只有幾十,或者上百的機器,這些機器上面有十個、二十個應用,但是在云計算運維這塊,可能面臨的情況是三千臺、五千臺機器這么一個量級的,是一個極速膨脹的狀態。再者,關注點可能會有一些偏差,因為傳統運維可能涉及的業務線會很多,所以對于某些技術點的深挖可能精力不夠。
云計算運維主要是對整體的把控,包括機房網絡、帶寬之類的,一些服務器的性能優化,服務器的價格等,比方說像飛天或者Hadoop這上面的應用,這些方面都需要去關注,底層的東西也需要了解得更多。
從大的方向來講,云計算運維和傳統運維都是做保證服務器穩定運行之類的這些事情,沒有什么本質的偏差,因為這個是運維人員的職責,不過在具體的執行層面,可能偏向的會不一樣。
51CTO:云計算的核心是虛擬化技術,而在云計算時代,系統規模更加龐大,結構更加復雜,系統運維自動化是必然趨勢,阿里巴巴有沒有虛擬化平臺的運維自動化案例呢?
柯旻:我們內部會有一些系統做相對來說自動化的一些工作,但是這個東西也是云計算運維或者大數據運維這方面的,跟傳統運維有一些差別,可能傳統運維一臺兩臺機器去運行的時候,你需要快速的響應去處理,對線上的影響比較大,而對于云計算運維來說,可能三臺、五臺或者十臺機器掛掉,也不會產生很大的一些影響,或者說某種意義上來講,對于這種單機的處理上面,我們可能比傳統的運營商運維人員面臨的條件會更好,我們更容易去處理一些故障。我們目標是希望一臺普通的機器,它在上線整個生命周期里面,是不需要人為去干預的,都是一套自動的東西,對于我們現場的工作人員來說,可能就是他接到一個工單就是這臺機器什么方面壞掉了,他去把它換掉,然后確認后會自動的把它恢復了,加入到集群里面去。
51CTO:云計算運維過程中,需要運維人員注意的方面是什么?
柯旻:在云計算過程中,你需要更多的去了解系統底層的東西,怎么樣跟這個應用上面的優化達到最合適的情況。同時也需要去關注一下,用戶的需求是什么樣的。因為你的使用方可能相對來說是一個比較集中的狀態,而實際上使用的是你的大的平臺,所以說他們基本上都是在這個上面,這個上面他們可能根據自己的任務的情況,有一些優化一些東西,可能對這個平臺有一些不同的需求,這個地方你也需要去更多的去了解,或者說幫助用戶去更好地使用這些平臺。
51CTO:這整個過程中,遇到的最大的挑戰是什么?
柯旻:我們目前來說遇到的最大挑戰可能就是軟件層面的,我們規模越大,挑戰就越大,這個上面可能更多的需要開發人員在代碼上的做一定的更改和優化,或者構架上的調整,然后去解決這個問題。在這個過程中間,運維人員是需要配合開發人員的。#p#
阿里巴巴的自動化運維案例
51CTO:自動化運維有很多方面,比如系統部署,監控,代碼自動部署與回滾,命令執行與資源配置等。阿里巴巴主要運用的是自動化哪個方面?
柯旻:阿里巴巴自動化運維是全方位的,你提到的這些都是要做的,因為這個東西需要整體一套全部打通,你才能談得上自動化去運維。然后這里面會有不同的分工,比方說從我們應用層面上面來說,舉一個簡單的例子,假如一臺機器某塊盤壞掉以后,你的應用需要自動的能夠把這個壞的盤下線掉,我們后臺的監控程序會去輪詢去找到這個發現這個盤,會把這些盤從sys里進行下線,重新做一些修復處理,看能不能加過去,如果加不回去,那就說明這個盤可能就徹底壞掉了,壞掉了以后,然后我們會自動在工單系統里面去提交一個報修,這整個過程中間是沒有人為干預的。
然后到了報修的時候,可能我們現場的工作人員就會接到這個工單以后,他們會安排時間,一周兩次或者說一次,他們會統一去把這些盤全部都換掉。如果是這些盤是系統盤都掛掉以后,他們可能會幫我們換掉以后,也會觸發自動安裝,然后它會自動去安裝,部署完了以后,如果是某一塊數據盤壞掉的話,他把盤換掉以后,因為這個本身就是在線上在運轉,我們后臺有程序會發現這個盤正常以后,我們會把這個加到系統里面去,然后應用發現這塊盤后它會自動的識別添加到服務中來。也就是說在這整個過程中間,可能就只是現場的人員更換硬件,需要人為處理。
如果對于機器重裝的情況,我們會統一在一個時間段,比方說我一周或者一個月的時間,我把這個機器整理以后,會統一有一個自動化的部署的觸發,它會把這整個機器初始化掉,讓里面的系統環節各個方面應用部署的狀態,它會去找到自己的兄弟節點去做一次克隆,恢復成跟線上的"兄弟姐妹"一模一樣的狀態,然后再上線。這個地方也是人員的觸發,就是一個很簡單的命令或者web點擊觸發。當然后續目標是能做到更加自動的恢復
51CTO:阿里在監控方面用了哪些工具?監控系統的報警流程是什么樣?
柯旻:由于傳統的監控工具可能滿足不了我們現在的需求,所以我們內部有一套自己開發的監控系統,像阿里巴巴、百度、騰訊這樣的公司,因為量比較大,所以說基本上都是內部開發的一套系統,可能騰訊有騰訊自己的,百度有百度自己的,可能都是根據企業自身的發展需求來定的。
就拿我們來說,除了一些重要節點的單機報警以外,這個系統可能會加一些基礎的報警,它可能是一種批量的,我們會設一個閥值,比方說下面同時有十臺機器掛了,或者十五臺機器掛了,同時掛掉,在一個檢查周期里面同時掛掉的時候,可能才會發一個報警,如果掛掉一臺兩臺,可能我們就不報警了。或者說我可能發了報警就只是一個消息,可能一個郵件出來,可能哪天我花點時間去看看今天大概有多少,然后會去看一眼,或者說覺得今天可能做別的事情比較多,可能這個事情我會放在后面集中再去處理。
51CTO:在大規模集群的情況下,如何才能做好自動化運維呢?
柯旻:我個人覺得這是一個意識問題,如果是熱衷于去手動處理的話,可能自動化這些東西,你就會投入精力去更少,而應當你發現一件事情重復三次以后,就應該需要去考慮怎么能夠不需要人為自動去處理,但是這個過程中間,是有一些陣痛。如果正常的情況下,你不停的人為去處理的話,到了一個階段以后,就會成為一個瓶頸了,因為你的精力已經不夠用。所以要去做自動化,可能在剛剛開始的時候,你效率的提升比較小,因為你要花很多時間去想怎么樣自動化,怎么樣不要出現問題,但是如果你這個自動化做好以后,你就會發現后面你的效率會越來越高。#p#
阿里Hadoop集群性能優化和故障排查
51CTO:阿里是什么時候開始有Hadoop集群的?現階段Hadoop集群大致的規模是?
柯旻:2009年開始應該是200臺左右開始慢慢發展。目前來說,基本上接近單集群五千臺。
51CTO:對于Hadoop集群性能優化這方面,您認為比較可行的方法有哪些?
柯旻:性能優化這個東西,這塊開發方面去要優化很多東西的,對于運維來說,我們的性能優化,可能更多的專注在硬件設備,sys層面和應用層面結合的一些優化。我們會根據情況跟開發人員提需求和建議,但是真正來說,本質上的性能優化來說,更多的還是開發在代碼上的改動,減少各類開銷和鎖的力度,提高并發度等。
51CTO:云計算環境下,傳統的網絡運維人員壓力倍增,您怎么看待這個問題?
柯旻:其實這跟運維的職業有關,運維的職業基本上24小時要oncall,可能隨時隨地會有電話打給你,因為你不知道這個故障會什么時候發生,所以說運維人員的壓力是比較大的。對于變化比較小的行業運維人員而言,可能會相對輕松一點,但對云計算來說目前整個行業在飛速發展,可能會有各種各樣的問題,作為運維人員來說的話,可能這方面的壓力是更大的。
自動化運維這個東西是一個長期過程,可能隨著你的云計算,或者大數據發展,外在的環境,機房網絡,這些環境都在變,你的自動化是一個持續性發展下去的事情。而且你要通過這些自動化工具提高你的工作效率,你才能有精力去做更重要的一些事情。所以不會出現自動化了就不需要運維人員的情況。
隨著現在的發展自動化,下一步從我們這邊來看的話,可能就變成一個數字化運維。可能更需要去動腦子去想怎么樣去實現,所以說自動化不是說是會讓你失業的東西。而是說能夠讓你有更多的精力去做一些更有一些意義的事情。
51CTO:您認為數字化運維這條路應該怎么走?
柯旻:隨著集群規模的擴大,機器的數量的膨脹,用戶數量的增加,我們已經很難再去找到一些經驗借鑒。當你沒有經驗可以借鑒的時候,唯一有一個東西是不會去忽悠你,那就是數據,數據一定是真實的,怎么樣能夠快速的真實的拿到這些真實的數據,然后通過我們的數據化分析去得到我們想要得到結果。這實際是一個探索的過程,我們現在有一點點的想法,但是這個想法的實現,我們還在做,這條路是不是一定是這么走的,其實我們也不是那么有把握。因為這種硬件的投入和成本投入非常大,所以說如果依靠拍腦袋或者怎么樣,你可能會有一些失誤的判斷,而你這個失誤的判斷,可能給公司造成的損失是巨大的,通過這些數據分析去預測的話,可能不能百分之百的避免出問題,但是它可能會最大化的去減少到出問題的概率。因為數據是真實的,你只要把這些數據,去挖掘得足夠深,它其實是能夠告訴你很多東西該怎么去做。你可以通過這些東西去推斷,去分析,可能最后到某種意義上來說,一個靠譜的數據分析師就能去做一些運維決策工作,因為其實做數據分析這塊是非常需要想象力的。對于我們運維來說,因為我們自己的運維數據也非常多,比方說程序的溫度、負載、磁盤、應用的狀況,各個方面的數據,其實也是在一個飛速的膨脹,然后怎么樣能夠快速的去分析這些數據,這也是一個比較大的挑戰。
好的,專訪就到這里,非常感謝大舞的分享。也歡迎大家留言討論云計算運維這些事兒。