初級、中級、高級運維各應必備哪些技能?
人生就像一場游戲,這場游戲給我們帶來了的許多困難,但是我們?yōu)榱藟粝耄瑸榱思胰耍瑸榱俗约翰粩鄪^斗著,努力工作。
今天就讓我?guī)е蠹乙黄鸹仡櫢呒夁\維工程師打怪升級之路。
運維工程師在剛入行階段是一很苦逼的,可能干著修電腦、掐網(wǎng)線、搬機器的活,顯得沒地位。時間也很碎片化,各種零碎的瑣事圍繞著你,也很難體現(xiàn)個人價值,漸漸的對行業(yè)很迷茫,覺得沒什么發(fā)展前途。
這些枯燥無味工作的確會使人匱乏!
技術是枯燥無味的,這些基本工作并非是多余的,這些經(jīng)驗會對后期的運維工作帶來一定的幫助。所以在這個時期一定要保持積極向上的心態(tài),持續(xù)的學習,爭取找一個更鍛煉人的工作。
一、打怪篇
1、職業(yè)發(fā)展選擇
技術專家
發(fā)展規(guī)劃:初中級工程師 -> 高級工程師 -> 架構師 -> 專家
適宜人群:比較喜歡挑戰(zhàn),熱愛技術,有較強鉆研精神,在某一領域有深入的理解,性格比較內(nèi)向。
技術管理
發(fā)展規(guī)劃:初中級工程師 -> 高級工程師 -> 主管/經(jīng)理 -> 總監(jiān) -> CTO(首席技術官)
適宜人群:技術知識面廣,有一些管理思維,善于交際,表達溝通能力強,經(jīng)常關注行業(yè)內(nèi)動態(tài)和主流技術。
2、職業(yè)發(fā)展目標
- 熟悉運維技術學習路線及相關技能
- 熟悉職業(yè)發(fā)展方向及面試分析
3、職業(yè)發(fā)展階段
- 初級主要工作
- 修電腦,設備巡檢
- 服務器上下架
- 網(wǎng)絡服務部署
- 網(wǎng)站平臺搭建與維護
1)Linux基礎
剛開始階段需要熟悉Linux操作系統(tǒng)安裝,目錄結構、啟動流程等。
2)系統(tǒng)管理
主要學習Linux系統(tǒng),生產(chǎn)環(huán)境中基本都在字符界面完成工作,所以要掌握常用的幾十個基本管理命令,包括用戶管理、磁盤分區(qū)、軟件包管理、文件權限、文本處理、進程管理、性能分析工具等。
3)網(wǎng)絡基礎
OSI和TCP/IP模型一定要熟悉。基本的交換機、路由器概念及實現(xiàn)原理要知道。
4)Shell腳本編程基礎
掌握Shell基本語法結構,能編寫簡單的腳本即可。
中級主要工作
- 集群網(wǎng)站平臺搭建
- 數(shù)據(jù)庫基本管理
- 監(jiān)控系統(tǒng)搭建
- 腳本化工作
1)網(wǎng)絡服務
常見的網(wǎng)絡服務要會部署,比如vsftp、nfs、samba、bind、dhcp等。
代碼版本管理系統(tǒng)少不了,可以學習下主流的GIT,能部署和簡單使用就可以了。
經(jīng)常在服務器之間傳輸數(shù)據(jù),所以要會使用:rsync和scp。
數(shù)據(jù)同步:inotify/sersync。
重復性完成一些工作,可寫成腳本定時去運行,所以得會配置Linux下的定時任務服務crond。
2)Web服務
每個公司基本都會有網(wǎng)站,能讓網(wǎng)站跑起來,就需要搭建Web服務平臺了。
如果是用PHP語言開發(fā)的,通常搭建LNMP網(wǎng)站平臺,這是一個技術名詞組合的拼寫,分開講就是得會部署Nginx、MySQL和PHP。
如果是JAVA語言開發(fā)的,通常使用Tomcat運行項目,為了提高訪問速度,可以使用Nginx反向代理Tomcat,Nginx處理靜態(tài)頁面,Tomcat處理動態(tài)頁面,實現(xiàn)動靜分離。
不是會部署這么簡單,還要知道HTTP協(xié)議工作原理、簡單的性能調(diào)優(yōu)。
3)負載均衡器
單臺服務器終究資源有限,抵抗高訪問量肯定是無法支撐的,解決此問題最關鍵的技術就是采用負載均衡器,水平擴展多臺Web服務器,同時對外提供服務,這樣就成倍擴展性能了。
負載均衡器主流開源技術有LVS、HAProxy和Nginx。一定要熟悉一兩個!
4)數(shù)據(jù)庫
數(shù)據(jù)庫選擇MySQL,它是世界上使用最為廣泛的開源數(shù)據(jù)庫。學它準沒錯!
也要會一些簡單的SQL語句、用戶管理、常用存儲引擎、數(shù)據(jù)庫備份與恢復。
想要深入點,必須會主從復制、性能優(yōu)化、主流集群方案:MHA、MGR等。
NoSQL這么流行當然也少不了,學下Redis、MongoDB這兩個就好了。
5)監(jiān)控系統(tǒng)
監(jiān)控必不可少,是及時發(fā)現(xiàn)問題和追溯問題的救命稻草。可以選擇學習主流的Zabbix、Prometheus開源監(jiān)控系統(tǒng),功能豐富,能滿足企業(yè)級監(jiān)控需求。
監(jiān)控點包括服務器硬件、服務器性能、API、業(yè)務、PV/UV、日志等方面。
也可以弄個儀表盤展示幾個實時關鍵的數(shù)據(jù),比如Grafana,會非常炫酷。
6)日志分析系統(tǒng)
日志也很重要,定期的分析,可發(fā)現(xiàn)潛在隱患,提煉出有價值的東西。
主流日志系統(tǒng):ELK Stack
學會部署使用,能分析日志并可視化,方便故障排查。
7)安全防范
安全很重要,不要等到系統(tǒng)被攻擊了,再做安全策略,此時已晚!所以,當一臺服務器上線后應馬上做安全訪問控制策略,比如使用iptables限制只允許信任源IP訪問,關閉一些無用的服務和端口等。
一些常見的攻擊類型一定得知道啊,否則怎么對癥下藥呢!比如CC、DDOS、ARP等。
8)Shell腳本編程進階
Shell腳本是Linux自動完成工作的利器,必須得熟練編寫,所以得進一步學習函數(shù)、數(shù)組、信號、發(fā)郵件等。
文本處理三劍客(grep、sed、awk)得玩6啊,Linux下文本處理就指望它們了。
9)Python/Go開發(fā)基礎
Shell腳本只能完成一些基本的任務,想要完成更復雜些的任務,比如調(diào)用API、多進程等。就需要學高級語言了。
Python是運維領域使用最多的語言,簡單易用,學它準沒錯!此階段掌握基礎就可以了,例如基本語法結構、文件對象操作、函數(shù)、迭代對象、異常處理、發(fā)郵件、數(shù)據(jù)庫編程等。
高級主要工作
- 億級網(wǎng)站架構設計
- 性能優(yōu)化
- 容器化落地
- 大規(guī)模自動化運維
- 平臺化工作
1)Web靜態(tài)緩存
用戶老喊著訪問網(wǎng)站慢,看看服務器資源還很富裕啊,網(wǎng)站訪問慢也許不是服務器資源飽和導致的,影響因素很多,例如網(wǎng)絡、轉發(fā)層數(shù)等。
對于網(wǎng)絡,存在南北通信問題,之間訪問會慢,這個可以使用CDN解決,同時緩存靜態(tài)頁面,盡可能將請求攔截在最上層響應,減少后端請求和響應時間。
如果不用CDN,也可以使用Squid、Varnish、Nginx這樣的緩存服務實現(xiàn)靜態(tài)頁面緩存,放到流量入口處。
2)集群
單臺服務器終究資源有限,抵抗高訪問量肯定是無法支撐的,解決此問題最關鍵的技術就是采用負載均衡器,水平擴展多臺Web服務器,同時對外提供服務,這樣就成倍擴展性能了。
負載均衡器主流開源技術有LVS、HAProxy和Nginx。一定要熟悉一兩個。
Web服務器性能瓶頸解決了,數(shù)據(jù)庫更為關鍵,還是采用集群,就拿MySQL來說,可以一主多從架構,在此基礎上讀寫分離,主負責寫,多從負責讀,從庫可水平擴展,前面再來個四層負載均衡器,承載千萬級PV,妥妥的!
高可用軟件也得會,避免單點的利器,主流的有Keepalived、Heartbeat等。
隨著業(yè)務擴展,網(wǎng)站圖片越來越多!NFS共享存儲支撐不過了,處理很慢。上分布式文件系統(tǒng),并行處理任務,無單點,高可靠,高性能等特性。
主流的有FastDFS、MFS、HDFS、Ceph、GFS等。初期的話我建議學習下FastDFS,能滿足中小規(guī)模需求。
3)容器化
硬件服務器資源利用率很低,甚是浪費!可以把空閑多的服務器虛擬化,弄成很多個的虛擬機,每個虛擬機就是一個完整的操作系統(tǒng)。可以很大程度提高資源利用率。
主流私有云平臺實現(xiàn):KVM+OpenStack
虛擬機作為基礎平臺還可以,但應用業(yè)務彈性伸縮也太重量了吧!啟動好幾分鐘,文件又這么大,快速擴展太費勁了!
好說,上容器,容器主要特點就是快速部署和環(huán)境隔離。一個服務封裝到鏡像中,分分鐘鐘可創(chuàng)建幾百個容器。
主流的容器技術非Docker莫屬了。
當然,生產(chǎn)環(huán)境單機Docker大多數(shù)情況下是無法滿足業(yè)務需求的,可以基于Kubernetes構建容器平臺,集群化管理容器,形成一個大的資源池,為基礎架構提供有力的支撐。
4)自動化運維
反反復復重復的工作,不但提高不了效率,價值也得不到體現(xiàn)。
一切運維工作標準化,例如環(huán)境版本、目錄結構、操作系統(tǒng)等統(tǒng)一。在標準化基礎上才能更方面的自動化,點點鼠標或者敲幾個命令即可完成一項復雜的工作任務,爽哉爽哉~
因此,所有的操作盡可能自動化,減少人為失誤,提高工作效率。
主流服務器集中管理工具:Ansible、Saltstack
持續(xù)集成工具:Jenkins、Gitlab
5)Python開發(fā)進階
可以再深入學習下Python開發(fā),掌握面向對象編程。
最好也掌學習一個Web框架開發(fā)網(wǎng)站,例如Django、Flask,主要是開發(fā)運維管理系統(tǒng),將一些復雜的流程寫到平臺中,再集成集中管理工具,可打造一個屬于運維自己的管理平臺。
6)性能優(yōu)化
只會部署是遠遠不夠的,性能優(yōu)化能提升服務承載量。
這塊也是比較難的,也是高薪的關鍵點之一,為了錢也得下點功夫學習啊!
可以從硬件層、操作系統(tǒng)層、軟件層和架構層維度展開思考。
二、師門任務篇
掌握 80% 互聯(lián)網(wǎng)公司會用到的技術才有更大競爭力!
三、升級篇
“金三銀四“ 跳槽季,準備好換工作了吧?心里想得美滋滋,現(xiàn)實卻殘酷得赤裸裸,投了很多簡歷,面試率低的可憐,都說金三銀四,可為什么我換工作就這么難呢?
根據(jù)阿良經(jīng)驗,主要原因如下:
- 簡歷不夠明確清晰(10%)
- 沒掌握面試技巧(10%)
- 選擇工作的態(tài)度(10%)
- 不明確自己的價值(5%)
- 專業(yè)技能不足(55%)
- 學歷(5%)
- 行業(yè)不景氣:停招、裁員!(5%)
1)堅持
學習是一個很漫長的過程,是我們每個人需要用一生去堅持的事業(yè)。
貴在堅持,難在堅持,成在堅持!
2)目標
沒有目標的不叫工作,沒有量化的不叫目標。
每到一個階段,制定一個目標。
比如:先定一個能達到的小目標,掙它一個億!
3)興趣
如果你熱愛這個行業(yè),那它就不只是一份工作。
如果你不熱愛這個行業(yè),可能是做不好,也可能堅持不超過2年,因為你心里上過不去。