運維工程師在前期是一個(gè)很苦逼的工作,在這期間可能干著(zhù)修電腦、掐網(wǎng)線(xiàn)、搬機器的活,顯得沒(méi)地位!時(shí)間也很碎片化,各種零碎的瑣事圍繞著(zhù)你,很難體現個(gè)人價(jià)值,漸漸的對行業(yè)很迷茫,覺(jué)得沒(méi)什么發(fā)展前途。
這些枯燥無(wú)味工作的確會(huì )使人匱乏,從技術(shù)層面講這些其實(shí)都是基本功,對后期的運維工作會(huì )無(wú)形中帶來(lái)一定的幫助,因為我也是這么過(guò)來(lái)的,能深刻體會(huì )到。所以在這個(gè)時(shí)期一定要保持積極向上的心態(tài),持續的學(xué)習。在未來(lái)的某一天,相信會(huì )回報給你的!
好了,進(jìn)入正題,根據我多年的運維工作經(jīng)驗,給大家分享下高級運維工程師學(xué)習路線(xiàn)。
初級
1、Linux基礎
剛開(kāi)始階段需要熟悉Linux/Windows操作系統安裝,目錄結構、啟動(dòng)流程等。
2、系統管理
主要學(xué)習Linux系統,生產(chǎn)環(huán)境中基本都在字符界面完成工作,所以要掌握常用的幾十個(gè)基本管理命令,包括用戶(hù)管理、磁盤(pán)分區、軟件包管理、文件權限、文本處理、進(jìn)程管理、性能分析工具等。
3、網(wǎng)絡(luò )基礎
OSI和TCP/IP模型一定要熟悉�;镜慕粨Q機、路由器概念及實(shí)現原理要知道。
4、Shell腳本編程基礎
掌握Shell基本語(yǔ)法結構,能編寫(xiě)簡(jiǎn)單的腳本即可。
中級
1、網(wǎng)絡(luò )服務(wù)
最常用的網(wǎng)絡(luò )服務(wù)一定得會(huì )部署,比如vsftp、nfs、samba、bind、dhcp等。代碼版本管理系統少不了,可以學(xué)習下主流的SVN和GIT,能部署和簡(jiǎn)單使用就可以了。經(jīng)常在服務(wù)器之間傳輸數據,所以要會(huì )使用:rsync和scp。數據同步:inotify/sersync。重復性完成一些工作,可寫(xiě)成腳本定時(shí)去運行,所以得會(huì )配置Linux下的定時(shí)任務(wù)服務(wù)crond。
2、Web服務(wù)
每個(gè)公司基本都會(huì )有網(wǎng)站,能讓網(wǎng)站跑起來(lái),就需要搭建Web服務(wù)平臺了。如果是用PHP語(yǔ)言開(kāi)發(fā)的,通常搭建LAMP、LNMP網(wǎng)站平臺,這是一個(gè)技術(shù)名詞組合的拼寫(xiě),分開(kāi)講就是得會(huì )部署Apache、Nginx、MySQL和PHP。如果是JAVA語(yǔ)言開(kāi)發(fā)的,通常使用Tomcat運行項目,為了提高訪(fǎng)問(wèn)速度,可以使用Nginx反向代理Tomcat,Nginx處理靜態(tài)頁(yè)面,Tomcat處理動(dòng)態(tài)頁(yè)面,實(shí)現動(dòng)靜分離。不是會(huì )部署這么簡(jiǎn)單,還要知道HTTP協(xié)議工作原理、簡(jiǎn)單的性能調優(yōu)。
3、數據庫
數據庫選擇MySQL,它是世界上使用最為廣泛的開(kāi)源數據庫。學(xué)它準沒(méi)錯!也要會(huì )一些簡(jiǎn)單的SQL語(yǔ)句、用戶(hù)管理、常用存儲引擎、數據庫備份與恢復。想要深入點(diǎn),必須會(huì )主從復制、性能優(yōu)化、主流集群方案:MHA、MGR等。NoSQL這么流行當然也少不了,學(xué)下Redis、MongoDB這兩個(gè)就好了。
4、安全
安全很重要,不要等到系統被入侵了,再做安全策略,此時(shí)已晚!所以,當一臺服務(wù)器上線(xiàn)后應馬上做安全訪(fǎng)問(wèn)控制策略,比如使用iptables限制只允許信任源IP訪(fǎng)問(wèn),關(guān)閉一些無(wú)用的服務(wù)和端口等。一些常見(jiàn)的攻擊類(lèi)型一定得知道啊,否則怎么對癥下藥呢!比如CC、DDOS、ARP等。
5、監控系統
監控必不可少,是及時(shí)發(fā)現問(wèn)題和追溯問(wèn)題的救命稻草�?梢赃x擇學(xué)習主流的Zabbix開(kāi)源監控系統,功能豐富,能滿(mǎn)足基本的監控需求。監控點(diǎn)包括基本服務(wù)器資源、接口狀態(tài)、服務(wù)性能、PV/UV、日志等方面。也可以弄個(gè)儀表盤(pán)展示幾個(gè)實(shí)時(shí)關(guān)鍵的數據,比如Grafana,會(huì )非常炫酷。
6、Shell腳本編程進(jìn)階
Shell腳本是Linux自動(dòng)完成工作的利器,必須得熟練編寫(xiě),所以得進(jìn)一步學(xué)習函數、數組、信號、發(fā)郵件等。文本處理三劍客(grep、sed、awk)得玩6啊,Linux下文本處理就指望它們了。
7、Python開(kāi)發(fā)基礎
Shell腳本只能完成一些基本的任務(wù),想要完成更復雜些的任務(wù),比如調用API、多進(jìn)程等。就需要學(xué)高級語(yǔ)言了。Python是運維領(lǐng)域使用最多的語(yǔ)言,簡(jiǎn)單易用,學(xué)它準沒(méi)錯!此階段掌握基礎就可以了,例如基本語(yǔ)法結構、文件對象操作、函數、迭代對象、異常處理、發(fā)郵件、數據庫編程等。
高級
1、Web靜態(tài)緩存
用戶(hù)老喊著(zhù)訪(fǎng)問(wèn)網(wǎng)站慢,看看服務(wù)器資源還很富裕��!網(wǎng)站訪(fǎng)問(wèn)慢也許不是服務(wù)器資源飽和導致的,影響因素很多,例如網(wǎng)絡(luò )、轉發(fā)層數等。對于網(wǎng)絡(luò ),存在南北通信問(wèn)題,之間訪(fǎng)問(wèn)會(huì )慢,這個(gè)可以使用CDN解決,同時(shí)緩存靜態(tài)頁(yè)面,盡可能將請求攔截在最上層響應,減少后端請求和響應時(shí)間。如果不用CDN,也可以使用Squid、Varnish、Nginx這樣的緩存服務(wù)實(shí)現靜態(tài)頁(yè)面緩存,放到流量入口處。
2、集群
單臺服務(wù)器終究資源有限,抵抗高訪(fǎng)問(wèn)量肯定是無(wú)法支撐的,解決此問(wèn)題最關(guān)鍵的技術(shù)就是采用負載均衡器,水平擴展多臺Web服務(wù)器,同時(shí)對外提供服務(wù),這樣就成倍擴展性能了。負載均衡器主流開(kāi)源技術(shù)有LVS、HAProxy和Nginx。一定要熟悉一兩個(gè)!Web服務(wù)器性能瓶頸解決了,數據庫更為關(guān)鍵,還是采用集群,就拿學(xué)的MySQL來(lái)說(shuō),可以一主多從架構,在此基礎上讀寫(xiě)分離,主負責寫(xiě),多從負責讀,從庫可水平擴展,前面再來(lái)個(gè)四層負載均衡器,承載千萬(wàn)級PV,妥妥的!高可用軟件也得會(huì ),避免單點(diǎn)的利器,主流的有Keepalived、Heartbeat等。網(wǎng)站圖片咋這么多呢!NFS共享存儲支撐不過(guò)了,處理很慢,好弄!上分布式文件系統,并行處理任務(wù),無(wú)單點(diǎn),高可靠,高性能等特性,主流的有FastDFS、MFS、HDFS、Ceph、GFS等。初期的話(huà)我建議學(xué)習下FastDFS,能滿(mǎn)足中小規模需求。
3、虛擬化
硬件服務(wù)器資源利用率很低,甚是浪費!可以把空閑多的服務(wù)器虛擬化,弄成很多個(gè)的虛擬機,每個(gè)虛擬機就是一個(gè)完整的操作系統�?梢院艽蟪潭忍岣哔Y源利用率。建議學(xué)習開(kāi)源的KVM+OpenStack云平臺。虛擬機作為基礎平臺還可以,但應用業(yè)務(wù)彈性伸縮也太重量了吧!啟動(dòng)好幾分鐘,文件又這么大,快速擴展太費勁了!好說(shuō),上容器,容器主要特點(diǎn)就是快速部署和環(huán)境隔離。一個(gè)服務(wù)封裝到鏡像中,分分鐘鐘可創(chuàng )建幾百個(gè)容器。主流的容器技術(shù)非Docker莫屬了。當然,生產(chǎn)環(huán)境單機Docker大多數情況下是無(wú)法滿(mǎn)足業(yè)務(wù)需求的,可以部署Kubernetes、Swarm集群化管理容器,形成一個(gè)大的資源池,集中管理,為基礎架構提供有力的支撐。學(xué)習Docker不妨看看這個(gè)視頻教程,學(xué)員評價(jià)還是不錯的:點(diǎn)我
4、自動(dòng)化
反反復復重復的工作,不但提高不了效率,價(jià)值也得不到體現。一切運維工作標準化,例如環(huán)境版本、目錄結構、操作系統等統一。在標準化基礎上才能更方面的自動(dòng)化,點(diǎn)點(diǎn)鼠標或者敲幾個(gè)命令即可完成一項復雜的工作任務(wù),爽哉爽哉!因此,所有的操作盡可能自動(dòng)化,減少人為失誤,提高工作效率。主流服務(wù)器集中管理工具:Ansible、Saltstack這兩個(gè)選擇任意一個(gè)就行。持續集成工具:Jenkins
5、Python開(kāi)發(fā)進(jìn)階
可以再深入學(xué)習下Python開(kāi)發(fā),掌握面向對象編程。最好也掌學(xué)習一個(gè)Web框架開(kāi)發(fā)網(wǎng)站,例如Django、Flask,主要是開(kāi)發(fā)運維管理系統,將一些復雜的流程寫(xiě)到平臺中,再集成集中管理工具,可打造一個(gè)屬于運維自己的管理平臺。具體學(xué)習思路可看微信公眾號的歷史文章:《啟示錄:如何打造運維自動(dòng)化平臺》
6、日志分析系統
日志也很重要,定期的分析,可發(fā)現潛在隱患,提煉出有價(jià)值的東西。開(kāi)源的一套日志系統:ELK學(xué)會(huì )部署使用,給開(kāi)發(fā)提供日志查看需求。
7、性能優(yōu)化
只會(huì )部署是遠遠不夠的,性能優(yōu)化能最大化提升服務(wù)承載量。這塊也是比較難的,也是高薪的關(guān)鍵點(diǎn)之一,為了錢(qián)也得下點(diǎn)功夫學(xué)習��!可以從硬件層、操作系統層、軟件層和架構層維度展開(kāi)思考。