專訪運維架構師劉鑫:我的運維技術人生
【編者按】劉鑫(Gray1982),04年畢業,主要從事IT培訓、技術支持、高性能網站架構等相關技術的研究工作。目前就職于某知名互聯網公司主管運維工作,主要是網站架構的相關技術,以及對Hadoop的研究。這些年的運維技術生涯中,都有哪些酸甜苦辣?
撫琴煮酒:
劉總,你目前也是老Linux運維了,你當時是怎么進入這一行的,在你的職業發展過程中,有沒有走過彎路?有什么經驗和教訓跟大家分享下。
Gray1982:
03年考的MCSE,之后就一直喜歡系統的研究和系統應用軟件的使用,做視頻、做音頻、做動畫、做網頁、做圖片都有過。04年正式開始學習Linux,然后就喜歡上了這個系統。因為有了學習MCSE的經驗,所以在學習Linux中也是從基礎學起,很系統的學。之后做講師,做技術,因為身體原因,不方便經常出差,所以選擇了運維行業。
初入這行,不懂的比較多,所以沒事去招聘網站看看這職位所需要的技能,也算是了解下“行情”,有個方向來學習,會比盲目的學效率會高一些。
行萬里路不如名師指路,如果真沒人指導,建議大家沒事去論壇走走,加一些技術群。有可能你會看到N多不會的問題,沒事,知道別人怎么解決的,你就是有收獲的。
撫琴煮酒:
運維在日常的工作中具體從事哪些工作,工作的重難點你認為在哪里?
Gray1982:
一般運維也分操作和應用運維,比如有的做一些初始化系統腳本(增加通用的配置、監測網卡速度、連通率等等),根據不同的業務對系統用戶管理等。對服務器的常規監控,報警處理。業務的更新部署,還需要配合開發診斷程序的錯誤等。其實這些沒什么太多的技術性而言,主要細心一點就可以。
相對來說的應用運維就需要了解的比較多了,各種負載(LVS,HAProxy),各種頁面級緩存(Squid,Varnish),各種KV、分布式緩存(redis,memcache),分布式文件系統(mfs,hadoop)等等。除了要了解這些應用適用于什么樣的業務情況,還需要對其進行相當的優化,這樣還可以節省一批機器,減少公司的運營成本,也是為公司做出了一些貢獻。因為現在很多公司為了求快速的發展,不講究細節,只要是能用就行,所以會有很多的弊端。不僅浪費了資源,整個架構還不是那么完美,非常的老舊。所以做為運維人員,為了公司的發展,整個架構的健壯性,可擴展性是很重要的。這也是很多公司忽略的。
如果想“偷懶”,最重要的就是自己寫腳本。也許幾臺機器,你不在意,如果幾十臺呢,幾百臺傳一批文件呢。一些開源的軟件也許能解決一些問題,但這些并不是專門為公司的業務開發的,所以總有些方面不是很合適。這里還是建議要么二次開發這些開源的軟件,要么專門為這些業務的寫一些工具以滿足自己公司的業務需求。這也是運維工作中很重要的能力。
撫琴煮酒:
自動化運維和Linux集群方面有什么跟大家分享的嗎?
Gray1982:
就像我上面說的,一個出色的運維,不僅僅需要了解掌握架構上所需要的技術知識,還需要在實際生產環境中寫出的適合業務的工具來提高效率,減輕我們自己的壓力。自動化運維除了我們要有自己的寫腳本的能力以外,還需要對服務器有一個標準化的部署,比如每臺服務器軟件放置的位置、腳本的運行等。如果沒有這樣的標準化,就是一盤散沙,自動化運維很難實施下去。
Linux集群方面涉及的比較多,因為具體分的話會有高可用性集群(運行于兩個或多個節點上,目的是在系統出現某些故障的情況下,仍能繼續對外提供相應的服務)、負載均衡集群(提供和節點個數成正比的負載能力,這種集群很適合提供大訪問量的Web服務。負載均衡集群往往也同時具有一定的高可用性特點。)、超級計算集群(海量數據的計算)這么三大類。其里面包含的內容是很多的,有興趣的朋友可以看看我寫的網站架構技術方面的書。
常用的技術如負載均衡器LVS,haproxy、Oracle集群數據庫RAC、Mysql+DRBD集群等等。了解掌握軟件之間的結合使用,就可以在設計架構上得心應手。
撫琴煮酒:
您現在最關注哪方面的技術?您自己是如何學習并掌握新技術的?
Gray1982:
在腳本方面主要研究Python,各種編程語言是否順手是個人的習慣,沒有那種語言是不好的。所以學一門自己感興趣的語言,在個人效率方面是一個不錯誤的選擇。看書的時候介紹幾本書一起看,這樣可以綜合的學習這種語言的某一方面的知識,以免不全、錯誤的學習。編程語言嘛,就應該多寫,寫的多了就明白的多了,這樣可以很簡潔的寫出整個程序。同樣實現一個功能,用60行實現和用200行實現,寫程序的人的功力是不一樣的。多練練,功力自然就會上來。
除了Python的學習,在云計算Hadoop方面也很感興趣。除了基本配置,在其原理、優化方面是研究的方向。最開始如果沒有環境的話,可以自己用VMware搞個,只要能連網,安裝什么的根本不是問題。而且,由于VMware配置的虛擬Linux性能不如真實的服務器,所以在調整的時候會有更多的收獲。只是可惜本人不懂JAVA,不能對其進程代碼級的二次開發··········不過可以用Python去寫一些MR,因為用Python開發的效率會比JAVA高出很多。在這方面,一個有技術能力的公司,不會僅僅用一種語言去寫自己所需要的工作。
找一個自己感興趣的學,會長久的學;有計劃的學,效率會高一些。腳本就是多寫寫,多看看,多問問,就可以更高效學習。
撫琴煮酒:
當前大概的架構,以及用到了哪些技術?
Gray1982:
目前應用涉及的技術比較多,我只是說一個項目吧。根據業務來做的網站頁面級緩存架構是lvs-haproxy-nginx(varnish)-app這種形式。LVS不多說了,大家都知道。中間之所以多了個haproxy一是因為整個架構更好的管理(機器比較多,一個網段的IP已經不能滿足其擴展),二是可以更好的按規則去分發請求。至于是用專業級的緩存還是用輕量級的緩存看公司的實際情況吧。有的可能是需要二次開發才可以得到公司需要的東西,有的可能考慮以后的擴展以及運營的成本等。了解的更多才會有更多的掌控。
撫琴煮酒:
對目前熱門的CDN技術有沒什么心得和經驗分享下?
Gray1982:
在CDN方面暫時沒什么研究,相對來說其架構方面了解的也不多,就不在這里獻丑了。
技術方面的只是對Squid、Varnish緩存有部分了解,僅限于電商級的。企業中會遇到的問題就是CDN取源時速度的問題,有可能占有90%以上的企業帶寬。這點需要CDN廠商注意下,最好有限速度方面的設置。如果我們企業的文件不是經常更新的話,可以讓CDN廠商把取源時間調整為半年或者更久,如果有更新且不多的情況下建議手動刷新。
撫琴煮酒:
劉總,聽說你Python玩得不錯,你在平時的工作中具體是用Python來實現什么工作,能有些具體的實用腳本跟大家分享下嗎?
Gray1982:
考慮到效率以及方便性,自己用Python寫了個多線程的批量部署程序。一般公司做批量部署管理都會用的Puppet,不過這些都是需要安裝服務器端和客戶端,并且是單線程的。在管理少量服務器也許看不出什么,管理到百臺以上的機器,效率明顯的下降。我自己寫的這個多線程的程序暫時還沒測試百臺(有興趣的朋友可以到我的博客下載),不需要安裝客戶端,完全是推送的形式,方便、快捷。完全是批量管理的必備工具(嘿嘿)。因為沒測試到多臺服務器,所以有問題也希望大家提出來,大家一起研究,共同起步。
另外一個是根據自己業務來的監控網站的使用性的工具。監控網通不通,訪問的網頁是不是出現400以上的錯誤,以及網頁的內容是否正常。如果不正常是可以通過郵件報警,有興趣的朋友也可以一起討論下。
原文鏈接:http://bbs.chinaunix.net/thread-3723896-1-1.html




















