運維工程師學習路線
運維工程師在前期是一個很苦逼的工作稚虎,在這期間可能干著修電腦、掐網線偎捎、搬機器的活蠢终,顯得沒地位!時間也很碎片化茴她,各種零碎的瑣事圍繞著你寻拂,很難體現(xiàn)個人價值,漸漸的對行業(yè)很迷茫丈牢,覺得沒什么發(fā)展前途祭钉。
這些枯燥無味工作的確會使人匱乏,從技術層面講這些其實都是基本功,對后期的運維工作會無形中帶來一定的幫助拣展,因為我也是這么過來的禀倔,能深刻體會到浦楣。所以在這個時期一定要保持積極向上的心態(tài),持續(xù)的學習感憾。在未來的某一天霞溪,相信會回報給你的专控!
好了粟按,進入正題诬滩,根據我多年的運維工作經驗,給大家分享下高級運維工程師學習路線灭将。
初級
1碱呼、Linux基礎
剛開始階段需要熟悉Linux/Windows操作系統(tǒng)安裝,目錄結構宗侦、啟動流程等。
2忆蚀、系統(tǒng)管理
主要學習Linux系統(tǒng)矾利,生產環(huán)境中基本都在字符界面完成工作,所以要掌握常用的幾十個基本管理命令馋袜,包括用戶管理男旗、磁盤分區(qū)、軟件包管理欣鳖、文件權限察皇、文本處理、進程管理泽台、性能分析工具等什荣。
3、網絡基礎
OSI和TCP/IP模型一定要熟悉怀酷〉九溃基本的交換機、路由器概念及實現(xiàn)原理要知道蜕依。
4桅锄、Shell腳本編程基礎
掌握Shell基本語法結構,能編寫簡單的腳本即可样眠。
中級
1友瘤、網絡服務
最常用的網絡服務一定得會部署,比如vsftp檐束、nfs辫秧、samba、bind厢塘、dhcp等茶没。
代碼版本管理系統(tǒng)少不了肌幽,可以學習下主流的SVN和GIT,能部署和簡單使用就可以了抓半。
經常在服務器之間傳輸數據喂急,所以要會使用:rsync和scp。
數據同步:inotify/sersync笛求。
重復性完成一些工作廊移,可寫成腳本定時去運行,所以得會配置Linux下的定時任務服務crond探入。
2狡孔、Web服務
每個公司基本都會有網站,能讓網站跑起來蜂嗽,就需要搭建Web服務平臺了苗膝。
如果是用PHP語言開發(fā)的,通常搭建LAMP植旧、LNMP網站平臺辱揭,這是一個技術名詞組合的拼寫,分開講就是得會部署Apache病附、Nginx问窃、MySQL和PHP。
如果是JAVA語言開發(fā)的完沪,通常使用Tomcat運行項目域庇,為了提高訪問速度,可以使用Nginx反向代理Tomcat覆积,Nginx處理靜態(tài)頁面听皿,Tomcat處理動態(tài)頁面,實現(xiàn)動靜分離技健。
不是會部署這么簡單写穴,還要知道HTTP協(xié)議工作原理、簡單的性能調優(yōu)雌贱。
3啊送、數據庫
數據庫選擇MySQL,它是世界上使用最為廣泛的開源數據庫欣孤。學它準沒錯馋没!也要會一些簡單的SQL語句、用戶管理降传、常用存儲引擎篷朵、數據庫備份與恢復。
想要深入點,必須會主從復制声旺、性能優(yōu)化笔链、主流集群方案:MHA、MGR等腮猖。NoSQL這么流行當然也少不了鉴扫,學下Redis、MongoDB這兩個就好了澈缺。
4坪创、安全
安全很重要,不要等到系統(tǒng)被入侵了姐赡,再做安全策略莱预,此時已晚!所以项滑,當一臺服務器上線后應馬上做安全訪問控制策略依沮,比如使用iptables限制只允許信任源IP訪問,關閉一些無用的服務和端口等枪狂。
一些常見的攻擊類型一定得知道啊悉抵,否則怎么對癥下藥呢!比如CC摘完、DDOS、ARP等傻谁。
5孝治、監(jiān)控系統(tǒng)
監(jiān)控必不可少,是及時發(fā)現(xiàn)問題和追溯問題的救命稻草审磁√胳可以選擇學習主流的Zabbix開源監(jiān)控系統(tǒng),功能豐富态蒂,能滿足基本的監(jiān)控需求杭措。監(jiān)控點包括基本服務器資源、接口狀態(tài)钾恢、服務性能手素、PV/UV、日志等方面瘩蚪。
也可以弄個儀表盤展示幾個實時關鍵的數據泉懦,比如Grafana,會非常炫酷疹瘦。
6崩哩、Shell腳本編程進階
Shell腳本是Linux自動完成工作的利器,必須得熟練編寫,所以得進一步學習函數邓嘹、數組酣栈、信號、發(fā)郵件等汹押。
文本處理三劍客(grep矿筝、sed、awk)得玩6啊鲸阻,Linux下文本處理就指望它們了跋涣。
7、Python開發(fā)基礎
Shell腳本只能完成一些基本的任務鸟悴,想要完成更復雜些的任務陈辱,比如調用API、多進程等细诸。就需要學高級語言了沛贪。
Python是運維領域使用最多的語言,簡單易用震贵,學它準沒錯利赋!此階段掌握基礎就可以了,例如基本語法結構猩系、文件對象操作媚送、函數、迭代對象寇甸、異常處理塘偎、發(fā)郵件、數據庫編程等拿霉。
高級
1吟秩、Web靜態(tài)緩存
用戶老喊著訪問網站慢,看看服務器資源還很富裕罢捞浴涵防!網站訪問慢也許不是服務器資源飽和導致的,影響因素很多沪铭,例如網絡壮池、轉發(fā)層數等。
對于網絡杀怠,存在南北通信問題火窒,之間訪問會慢,這個可以使用CDN解決驮肉,同時緩存靜態(tài)頁面熏矿,盡可能將請求攔截在最上層響應,減少后端請求和響應時間。
如果不用CDN票编,也可以使用Squid褪储、Varnish、Nginx這樣的緩存服務實現(xiàn)靜態(tài)頁面緩存慧域,放到流量入口處鲤竹。
2、集群
單臺服務器終究資源有限昔榴,抵抗高訪問量肯定是無法支撐的辛藻,解決此問題最關鍵的技術就是采用負載均衡器,水平擴展多臺Web服務器互订,同時對外提供服務吱肌,這樣就成倍擴展性能了。負載均衡器主流開源技術有LVS仰禽、HAProxy和Nginx氮墨。一定要熟悉一兩個!
Web服務器性能瓶頸解決了吐葵,數據庫更為關鍵规揪,還是采用集群,就拿學的MySQL來說温峭,可以一主多從架構猛铅,在此基礎上讀寫分離,主負責寫凤藏,多從負責讀奕坟,從庫可水平擴展,前面再來個四層負載均衡器清笨,承載千萬級PV,妥妥的刃跛!
高可用軟件也得會抠艾,避免單點的利器,主流的有Keepalived桨昙、Heartbeat等检号。
網站圖片咋這么多呢!NFS共享存儲支撐不過了蛙酪,處理很慢齐苛,好弄!上分布式文件系統(tǒng)桂塞,并行處理任務凹蜂,無單點,高可靠,高性能等特性玛痊,主流的有FastDFS汰瘫、MFS、HDFS擂煞、Ceph混弥、GFS等。初期的話我建議學習下FastDFS对省,能滿足中小規(guī)模需求蝗拿。
3、虛擬化
硬件服務器資源利用率很低蒿涎,甚是浪費哀托!可以把空閑多的服務器虛擬化,弄成很多個的虛擬機同仆,每個虛擬機就是一個完整的操作系統(tǒng)萤捆。可以很大程度提高資源利用率俗批。建議學習開源的KVM+OpenStack云平臺俗或。
虛擬機作為基礎平臺還可以,但應用業(yè)務彈性伸縮也太重量了吧岁忘!啟動好幾分鐘辛慰,文件又這么大,快速擴展太費勁了干像!
好說帅腌,上容器,容器主要特點就是快速部署和環(huán)境隔離麻汰。一個服務封裝到鏡像中速客,分分鐘鐘可創(chuàng)建幾百個容器。
主流的容器技術非Docker莫屬了五鲫。
當然溺职,生產環(huán)境單機Docker大多數情況下是無法滿足業(yè)務需求的,可以部署Kubernetes位喂、Swarm集群化管理容器浪耘,形成一個大的資源池,集中管理塑崖,為基礎架構提供有力的支撐七冲。
4、自動化
反反復復重復的工作规婆,不但提高不了效率澜躺,價值也得不到體現(xiàn)蝉稳。
一切運維工作標準化,例如環(huán)境版本苗踪、目錄結構颠区、操作系統(tǒng)等統(tǒng)一。在標準化基礎上才能更方面的自動化通铲,點點鼠標或者敲幾個命令即可完成一項復雜的工作任務毕莱,爽哉爽哉!
因此颅夺,所有的操作盡可能自動化朋截,減少人為失誤,提高工作效率吧黄。
主流服務器集中管理工具:Ansible部服、Saltstack
這兩個選擇任意一個就行。
持續(xù)集成工具:Jenkins
5拗慨、Python開發(fā)進階
可以再深入學習下Python開發(fā)廓八,掌握面向對象編程。
最好也掌學習一個Web框架開發(fā)網站赵抢,例如Django剧蹂、Flask,主要是開發(fā)運維管理系統(tǒng)烦却,將一些復雜的流程寫到平臺中宠叼,再集成集中管理工具,可打造一個屬于運維自己的管理平臺其爵。
6冒冬、日志分析系統(tǒng)
日志也很重要,定期的分析摩渺,可發(fā)現(xiàn)潛在隱患简烤,提煉出有價值的東西。
開源的一套日志系統(tǒng):ELK
學會部署使用摇幻,給開發(fā)提供日志查看需求横侦。
7、性能優(yōu)化
只會部署是遠遠不夠的囚企,性能優(yōu)化能最大化提升服務承載量。
這塊也是比較難的瑞眼,也是高薪的關鍵點之一龙宏,為了錢也得下點功夫學習啊伤疙!
可以從硬件層银酗、操作系統(tǒng)層辆影、軟件層和架構層維度展開思考。
武器類型武器名稱文本處理
grep黍特、sed蛙讥、awk
數據傳輸
Rsync、Scp灭衷、Inodify/Sersync
進程管理
Supervisor
性能分析
top次慢、free、df翔曲、iftop迫像、iostat、vmstat瞳遍、dstat闻妓、sar、sysdig
網絡服務
vsftp掠械、nfs由缆、samba、bind猾蒂、dhcp均唉、postfix
Web服務
Apache、Nginx婚夫、Tomcat浸卦、JBoss、Resin
數據庫
MySQL案糙、MariaDB限嫌、Percona Server for MySQL
NoSQL
Redis、MongoDB
消息中間件
RabbitMQ时捌、ActiveMQ
版本管理
SVN怒医、Git
靜態(tài)緩存
Squid、Varnish奢讨、Nginx
負載均衡
LVS稚叹、HAProxy、Nginx
高可用軟件
Keepalived拿诸、Heartbeat扒袖、DRBD、corosync+pacemaker
集中管理工具
Ansible亩码、Saltstack季率、Chef、Puppet
虛擬化與云平臺
KVM描沟、Xen飒泻、Docker鞭光、Kubernetes、Openstack泞遗、Cloudstack
自動裝機
Kickstart惰许、Cobbler
抓包分析
Tcpdump、Wireshark
持續(xù)集成
Jenkins史辙、Gitlab
MySQL代理
Altas汹买、Cobar、Mycat
壓測
ab髓霞、fio卦睹、sysbench、mysqlslap
安全檢查
chrootkit方库、rkhunter
日志系統(tǒng)
ELK
監(jiān)控
Zabbix结序、Cacti、Nagios纵潦、Grafana
意識
1徐鹤、堅持
學習是一個很漫長的過程,是我們每個人需要用一生去堅持的事業(yè)邀层。
貴在堅持返敬,難在堅持,成在堅持寥院!
2劲赠、目標
沒有目標的不叫工作,沒有量化的不叫目標秸谢。
每到一個階段凛澎,制定一個目標。
比如:先定一個能達到的小目標估蹄,掙它一個億塑煎!
3、分享
學會分享臭蚁,技術的價值在于能有效地將知識傳遞到外界最铁,讓更多的人知道它。
只要人人都拿出一點東西來垮兑,想想會變成什么樣冷尉?
方向對了,就不怕路遠了系枪!
十項Linux常識
1雀哨、GNU和GPL
GNU計劃(又稱革奴計劃),是由Richard Stallman(理查德·斯托曼)在1983年9月27日公開發(fā)起的自由軟件集體協(xié)作計劃嗤无。它的目標是創(chuàng)建一套完全自由的操作系統(tǒng)震束。GNU也稱為自由軟件工程項目。
GPL是GNU的通用公共許可證(GNU General Public License当犯,GPL)垢村,即“反版權”概念,是GNU協(xié)議之一嚎卫,目的是保護GNU軟件可以自由的使用嘉栓、復制、研究拓诸、修改和發(fā)布侵佃。同時要求軟件必須以源代碼的形式發(fā)布。
GNU系統(tǒng)與Linux內核結合構成一個完整的操作系統(tǒng):一個基于Linux的GNU系統(tǒng)奠支,該操作系統(tǒng)在通常情況下稱為“GNU/Linux”馋辈,或簡稱Linux。
2倍谜、Linux發(fā)行版
一個典型的Linux發(fā)行版包括:Linux內核迈螟,一些GNU程序庫和工具,命令行shell尔崔,圖形界面的X Window系統(tǒng)和相應的桌面環(huán)境答毫,如KDE或GNOME,并包含數千種從辦公套件季春,編譯器洗搂,文本編輯器到科學工具的應用軟件。
主流的發(fā)行版:
Red Hat Enterprise Linux载弄、CentOS耘拇、SUSE、Ubuntu侦锯、Debian驼鞭、Fedora、Gentoo
3尺碰、Unix和Linux
Linux是基于Unix的挣棕,屬于Unix類,Uinx操作系統(tǒng)支持多用戶亲桥、多任務洛心、多線程和支持多種CPU架構的操作系統(tǒng)。Linux繼承了Unix以網絡為核心的設計思想题篷,是一個性能穩(wěn)定的多用戶網絡操作系統(tǒng)词身。
4、Swap分區(qū)
Swap分區(qū)番枚,即交換區(qū)法严,系統(tǒng)在物理內存不夠時损敷,與Swap進行交換。即當系統(tǒng)的物理內存不夠用時深啤,把硬盤中一部分空間釋放出來拗馒,以供當前運行的程序使用。當那些程序要運行時溯街,再從Swap分區(qū)中恢復保存的數據到內存中诱桂。那些被釋放內存空間的程序一般是很長時間沒有什么操作的程序。
Swap空間一般應大于或等于物理內存的大小呈昔,同時最小不應小于64M挥等,最大應該是物理內存的兩倍。
5堤尾、GRUB的概念
GNU GRUB(GRand Unified Bootloader簡稱“GRUB”)是一個來自GNU項目的多操作系統(tǒng)啟動引導管理程序肝劲。
GRUB是一個支持多種操作系統(tǒng)的啟動引導管理器,在一臺有多個操作系統(tǒng)的計算機中郭宝,可以通過GRUB在計算機啟動時選擇用戶希望運行的操作系統(tǒng)涡相。同時GRUB可以引導Linux系統(tǒng)分區(qū)上的不同內核,也可用于向內核傳遞啟動參數剩蟀,如進入單用戶模式催蝗。
6、Buffer和Cache
Cache(緩存)位于CPU與內存之間的臨時存儲器育特,緩存容量比內存小的多但交換速度比內存要快得多丙号。Cache通過緩存文件數據塊,解決CPU運算速度與內存讀寫速度不匹配的矛盾缰冤,提高CPU和內存之間的數據交換速度犬缨。Cache緩存越大,CPU處理速度越快棉浸。
Buffer(緩沖)高速緩沖存儲器怀薛,通過緩存磁盤(I/O設備)數據塊,加快對磁盤上數據的訪問迷郑,減少I/O枝恋,提高內存和硬盤(或其他I/O設備)之間的數據交換速度。Buffer是即將要被寫入磁盤的嗡害,而Cache是被從磁盤中讀出來的焚碌。
7、TCP三次握手
(1)請求端發(fā)送SYN(SYN=A)數據包霸妹,等待響應端確認
(2)響應端接收SYN十电,并返回SYN(A+1)和自己的ACK(K)包給請求端
(3)請求端接收到響應端的SYN+ACK包,再次向響應端發(fā)送確認包ACK(K+1)
請求端和響應端建立TCP連接,完成三次握手鹃骂,開始進行數據傳輸台盯。
8、linux系統(tǒng)目錄結構
Linux文件系統(tǒng)采用帶鏈接的樹形目錄結構畏线,即只有一個根目錄(通常用“/”表示)爷恳,其中含有下級子目錄或文件的信息;子目錄中又可含有更下級的子目錄或者文件的信息象踊。
- /:第一層次結構的根,整個文件系統(tǒng)層次結構的根目錄棚壁。即文件系統(tǒng)的入口杯矩,最高一級目錄。
- /boot:包含Linux內核及系統(tǒng)引導程序所需的文件袖外,例如kernel史隆、initrd;grub系統(tǒng)引導管理器也在這個目錄下曼验。
- /bin:基本系統(tǒng)所需要的命令,功能和"/usr/bin"類似,這個目錄下的文件都是可執(zhí)行的.普通用戶也是可以執(zhí)行的泌射。
- /sbin:基本的系統(tǒng)維護命令,只能由超級用戶使用。
- /etc:所有的系統(tǒng)配置文件鬓照。
- /dev:設備文件存儲目錄.像終端熔酷、磁盤、光驅等豺裆。
- /var:存放經常變動的數據,像日志拒秘、郵件等。
- /home:普通用戶的目錄默認存儲目錄臭猜。
- /opt:第三方軟件的存放目錄躺酒,比如用戶自定義軟件包和編譯的軟件包就安裝到這個目錄中。
- /lib:庫文件和內核模塊存放目錄蔑歌,包含系統(tǒng)程序所需要的所有共享庫文件羹应。
9、硬鏈接和軟鏈接
硬鏈接(Hard Link):硬鏈接是使用同一個索引節(jié)點(inode號)的鏈接次屠, 即可以允許多個文件名指向同一個文件索引節(jié)點(硬鏈接不支持目錄鏈接园匹,不能跨分區(qū)鏈接),刪除一個硬鏈接劫灶,不會影響該索引節(jié)點的源文件以及其下的多個硬鏈接偎肃。
ln source new-link
軟連接(符號鏈接,Symbolic Link):符號鏈接是以路徑的形式創(chuàng)建的鏈接浑此,類似于windows的快捷方式鏈接累颂,符號鏈接允許創(chuàng)建多個文件名鏈接到同一個源文件,刪除源文件,其下的所有軟連接將不可用紊馏。(軟連接支持目錄料饥,支持跨分區(qū)、跨文件系統(tǒng))
ln -s source new-link
10朱监、RAID技術
磁盤陣列(Redundant Arrays of independent Disks,RAID),廉價冗余(獨立)磁盤陣列岸啡。
RAID是一種把多塊獨立的物理硬盤按不同的方式組合起來形成一個硬盤組(邏輯硬盤),提供比單個硬盤更高的存儲性能和數據備份技術赫编。RAID技術巡蘸,可以實現(xiàn)把多個磁盤組合在一起作為一個邏輯卷提供磁盤跨越功能;可以把數據分成多個數據塊(Block)并行寫入/讀出多個磁盤以提高訪問磁盤的速度擂送;可以通過鏡像或校驗操作提供容錯能力悦荒。具體的功能以不同的RAID組合實現(xiàn)。
在用戶看來嘹吨,RAID組成的磁盤組就像是一個硬盤搬味,可以對它進行分區(qū)、格式化等操作蟀拷。RAID的存儲速度比單個硬盤高很多碰纬,并且可以提供自動數據備份,提供良好的容錯能力问芬。
RAID級別悦析,不同的RAID組合方式分為不同的RAID級別:
- RAID 0:稱為Stripping條帶存儲技術,所有磁盤完全地并行讀此衅,并行寫她按,是組建磁盤陣列最簡單的一種形式毁枯,只需要2塊以上的硬盤即可嗜浮,成本低,可以提供整個磁盤的性能和吞吐量跪削,但RAID 0沒有提供數據冗余和錯誤修復功能匕累,因此單塊硬盤的損壞會導致所有的數據丟失陵刹。(RAID 0只是單純地提高磁盤容量和性能,沒有為數據提供可靠性保證欢嘿,適用于對數據安全性要求不高的環(huán)境)
- RAID 1:鏡像存儲衰琐,通過把兩塊磁盤中的一塊磁盤的數據鏡像到另一塊磁盤上, 實現(xiàn)數據冗余炼蹦,在兩塊磁盤上產生互為備份的數據羡宙,其容量僅等于一塊磁盤的容量。當數據在寫入一塊磁盤時掐隐,會在另一塊閑置的磁盤上生產鏡像狗热,在不影響性能情況下最大限度的保證系統(tǒng)的可靠性和可修復性钞馁;當原始數據繁忙時,可直接從鏡像拷貝中讀取數據(從兩塊硬盤中較快的一塊中讀出)匿刮,提高讀取性能僧凰。相反的,RAID 1的寫入速度較緩慢熟丸。RAID 1一般支持“熱交換”训措,即陣列中硬盤的移除或替換可以在系統(tǒng)運行狀態(tài)下進行,無須中斷退出系統(tǒng)光羞。RAID 1是磁盤陣列中硬盤單位成本最高的绩鸣,但它提供了很高的數據安全性、可靠性和可用性纱兑,當一塊硬盤失效時呀闻,系統(tǒng)可以自動切換到鏡像磁盤上讀寫,而不需要重組失效的數據萍启。
- RAID 0+1:也被稱為RAID 10,實際是將RAID 0和RAID 1結合的形式屏鳍,在連續(xù)地以位或字節(jié)為單位分割數據并且并行讀/寫多個磁盤的同時勘纯,為每一塊磁盤做鏡像進行冗余。通過RAID 0+1的組合形式钓瞭,數據除分布在多個盤上外驳遵,每個盤都有其物理鏡像盤,提供冗余能力山涡,允許一個以下磁盤故障堤结,而不影響數據可用性,并且有快速讀/寫能力鸭丛。RAID 0+1至少需要4個硬盤在磁盤鏡像中建立帶區(qū)集竞穷。RAID 0+1技術在保證數據高可靠性的同時,也保證了數據讀/寫的高效性鳞溉。
- RAID 5:是一種存儲性能瘾带、數據安全和存儲成本兼顧的存儲解決方案。RAID 5可以理解為是RAID 0和RAID 1的折衷方案熟菲,RAID 5至少需要三塊硬盤看政。RAID 5可以為系統(tǒng)提供數據安全保障,但保障程度要比鏡像低而磁盤空間利用率要比鏡像高抄罕。RAID 5具有和RAID 0相近似的數據讀取速度允蚣,只是多了一個奇偶校驗信息,寫入數據的速度比對單個磁盤進行寫入操作稍慢呆贿。同時由于多個數據對應一個奇偶校驗信息嚷兔,RAID 5的磁盤空間利用率要比RAID 1高,存儲成本相對較低,是目前運用較多的一種解決方案谴垫。
作者:易道云控
鏈接:http://www.reibang.com/p/f92255a3b173
來源:簡書
著作權歸作者所有章母。商業(yè)轉載請聯(lián)系作者獲得授權,非商業(yè)轉載請注明出處翩剪。