說運維:高級運維工程師的升級打怪路線

 


 

運維在前期是一個很苦逼的工做,可能幹着修電腦掐網線的活!時間也碎片化,各類零碎雜事圍繞着你,很難體現我的價值,漸漸對行業很迷茫。這些枯燥無味工做的確令人匱乏,從技術層面講這些實際上是基本功,對後期的運維工做會無形中帶來必定幫助。因此前期要保持積極向上的心態,持續學習。在將來某一天,相信會回報給你的!分享下高級運維工程師學習路線。mysql

初級

  1. 系統基礎:剛開始階段須要熟悉Linux/Windows操做系統安裝,目錄結構、啓動流程等等;ios

  2. 系統管理:主要學習Linux類系統,生產環境基本都在字符界面完成工做,因此要掌握經常使用幾十個基本管理命令,包括用戶管理、磁盤分區、軟件管理、文件權限、文本處理、進程管理、性能分析工具等等;sql

  3. 網絡基礎:OSI和TCP/IP模型必定要熟悉。基本的交換機、路由器概念及實現原理須要知道;數據庫

  4. 腳本基礎:掌握Shell的基本語法結構,能編寫簡單的腳本便可。編程

中級

  1. 網絡服務:最經常使用的網絡服務必定得會部署,好比vsftpd/NFS/Samba/DNS/DHCP等。代碼版本管理系統能夠學習下主流的SVN或者Git,能部署和簡單使用就能夠了。常常在服務器之間傳輸數據,因此要會使用:rsync或者scp。數據同步:inotify或者sersync。重複性的工做,可寫成腳本定時去運行,因此得會配置Linux下的定時任務服務crond;後端

  2. 網站服務:每一個公司基本都有網站,可以讓網站跑起來,就須要搭建網站服務平臺了。若是是用PHP語言開發的,一般要搭建LAMP/LNMP網站平臺。若是是Java語言開發,一般用Tomcat運行項目,爲了提升訪問速度,可使用Nginx反向代理Tomcat,Nginx處理靜態頁,Tomcat處理動態頁,實現動靜分離。不僅是會部署這麼簡單,還須要知道HTTP協議工做原理和簡單的性能調優;數組

  3. SQL數據庫:數據庫選擇MySQL,它是世界上使用最普遍的開源數據庫。要會一些簡單的SQL語句、用戶管理、經常使用存儲引擎、數據庫備份與恢復。還須要會主從複製、性能優化、主流集羣方案:MHA/MGR等。NoSQL這麼流行固然少不了,學一下Redis/MongoDB這兩個就行了;緩存

  4. 網絡安全:安全很是重要,不要等到系統被入侵了,再作安全策略!因此,一臺服務器上線後應立刻作安全訪問控制策略,好比使用IPTABLES限制只容許信任源IP訪問,關閉一些無用的服務和端口。一些常見的攻擊類型必定得知道,好比CC/DDOS/ARP等;安全

  5. 監控系統:監控必不可少,它是及時發現問題和追溯問題的救命稻草。能夠選擇學習主流的Zabbix開源監控系統,功能豐富,能知足基本的監控需求。監控點包括基本服務器資源、接口狀態、服務性能、PV/UV以及日誌等方面。也能夠弄個儀表盤展現幾個實時關鍵數據,好比Grafana會很是炫酷;性能優化

  6. 腳本編程進階:Shell腳本是Linux自動完成工做的利器,必須熟練編寫,因此得進一步學習函數、數組、信號、發郵件等。文本處理三劍客得玩六,Linux下文本處理就期望它們了;

  7. 高級腳本開發:Shell腳本只能完成一些基本的任務,要完成更復雜些的任務,好比多進程等,須要學高級語言了。Python是運維領域中使用最多的語言,簡單易用!此階段掌握基礎就夠了,例如基本語法結構、文件對象操做、函數、迭代對象、異常處理、數據庫編程等。

高級

  1. 網站靜態緩存:用戶老喊着訪問網站慢,看看服務器資源還很富裕啊!網站訪問慢也許不是服務器資源飽和致使,影響因素不少,例如網絡、轉發層數等等。對於網絡,存在南北通訊問題,之間訪問會慢,這個可以使用CDN解決,同時緩存靜態頁面,儘量將請求攔截在最上層響應,減小後端請求、響應時間。若是不使用CDN,也可使用Squid/Varnish/Nginx緩存服務實現靜態頁面緩存,放到流量的入口處;

  2. 集羣:單臺服務器的資源終究有限,抵抗高訪問量確定是沒法支撐的,解決此問題最關鍵的技術就是採用負載均衡器,水平擴展多臺Web服務器,同時對外提供服務,這樣就成倍擴展性能了。負載均衡主流開源技術有LVS/HAProxy/Nginx。必定要熟悉一兩個!網站服務器性能瓶頸解決了,數據庫則更爲關鍵,仍是採用集羣,就拿MySQL來講吧,能夠一主多從架構,在基礎上實現讀寫分離,主負責寫,多個從負責讀,從庫能夠水平擴展,前面再來個四層負載均衡器,妥妥承載千萬級PV!高可用軟件也得會,避免單點利器主流的有Keepalived/Heartbeat等。網站圖片咋這麼多!NFS共享存儲支撐不過了,處理很慢,好弄!上分佈式文件系統,並行處理任務,無單點高可靠高性能等特性,主流的有FastDFS/MFS/HDFS/Ceph/GFS等。初期的話建議學習下FastDFS,能夠知足中小規模需求;

  3. 虛擬化和容器:硬件服務器資源利用率很低,甚是浪費!能夠把空閒較多的服務器虛擬化,弄成不少個虛擬機,每一個虛擬機就是一個完整的操做系統,可很大程度提升資源利用率,建議學習開源的KVM+OpenStack。虛擬機做爲基礎平臺還能夠,可是應用業務彈性伸縮也過重量了吧!啓動好幾分鐘,文件又這麼大,快速擴展太費勁了!好說,上容器吧,容器主要特色是快速部署和環境隔離。一個服務封裝到鏡像中,分分鐘鍾可建立幾百個容器。主流的容器技術非Docker莫屬了。固然,生產環境單機Docker多數狀況下是沒法知足業務需求的,能夠部署Kubernetes/Swarm集羣化管理容器,造成一個較大的資源池,集中管理,爲基礎架構提供有力的支撐;

  4. 自動運維:重複工做不但提升不了效率,價值也得不到體現。一切運維工做的標準化,例如環境版本、目錄結構、操做系通通一。在標準化基礎上才能更方便的自動化,點點鼠標或者敲幾個命令便可完成一項複雜的工做任務。所以全部操做盡量自動化,減小人爲失誤,提升工做效率。主流服務器集中管理工具Ansible/SaltStack,這兩個選任意一個就行。持續集成工具杜老師推薦Jenkins;

  5. 腳本開發進階:可再深刻學習下Python開發,掌握面向對象編程。最好也掌學習一個網站框架開發網站,如Django/Flask,主要用來開發運維管理系統,將一些複雜流程寫到平臺中,而後集成集中管理工具,可打造一個屬於運維本身的管理平臺;

  6. 日誌分析系統:日誌也很重要,按期分析發現潛在隱患,提煉有價值的東西。開源的一套日誌系統ELK,學會部署使用,給開發者提供日誌查看需求;

  7. 性能優化:只會部署是遠遠不夠的,性能優化能最大化的提高服務承載量。這塊也是比較難的,也是高薪的關鍵點之一,爲了錢也得下點功夫學習啊!可從硬件、操做系統、軟件和架構等層面維度展開思考。

總結

高級運維工程師須要掌握的工具作個表格:

類型 名稱
文本處理 grep/sed/awk
數據傳輸 rsync/scp/inodify/sersync
進程管理 Supervisor
性能分析 top/free/df/iftop/iostat/vmstat/dstat/sar/sysdig
網絡服務 vsftp/NFS/Samba/DNS/DHCP/Postfix
網站服務 Apache/Nginx/Tomcat/JBoss/resin
SQL數據庫 MySQL/MariaDB
NoSQL數據庫 Redis/MongoDB
消息隊列 RabbitMQ/ActiveMQ
版本管理 SVN/Git
靜態緩存 Squid/Varnish/Nginx
負載均衡 LVS/HAProxy/Nginx
HA高可用 Keepalived/Heartbeat/DRBD
集中管理工具 Ansible/SaltStack/Chef/Puppet
虛擬化雲平臺 KVM/Xen/Docker/Kubernetes/Openstack/CloudStack
自動裝機 Kickstart/Cobbler
抓包分析 tcpdump/Wireshark
持續集成 Jenkins/GitLab
MySQL數據庫代理 Altas/Cobar/MyCat
壓測 ab/fio/sysbench/mysqlslap
安全檢查 chkrootkit/rkhunter
日誌系統 ELK
監控 Zabbix/Cacti/Nagios/Grafana
相關文章
相關標籤/搜索