初識運維:運維是什么,要怎么做,需要掌握哪些技術?
運維是什么:通常屬于技術部門,與研發、測試、系統管理同為互聯網產品技術支撐的4大部門,這個劃分在國內和國外以及大小公司間都會多少有一些不同。
運維的內容:對于初創公司,運維工程師的工作可能需要從申請域名開始,購買/租用服務器,上架,調整網絡設備的設置,部署操作系統和運行環境,部署代碼,設計和部署監控,防止漏洞和攻擊等等。對于大型的公司,對于運維工作的要求越來越高,也催生了更細化的運維分工:大致可以分為網站運維,系統運維,網絡運維,數據庫運維,IT運維,運維開發,運維安全等方向。(也就是說運維工程師需要負責部署服務器、預防攻擊、維護數據庫等等,可以說是和網絡與服務器打交道的技術工作者)
運維要怎么做:運維的職責覆蓋了產品從設計到發布、運行維護、變更升級及至下線的生命周期,各個階段的職責包括:
1、Linux系統基礎
這個不用說了,是基礎中的基礎,連這個都不會就別干了,參考書籍,可以看鳥哥linux基礎篇,至少要掌握這書60%內容,沒必須全部掌握,但基本命令總得會吧。
2、網絡服務
服務有很多種,每間公司都會用到不同的,但基礎的服務肯定要掌握,如FTP, DNS,SAMBA, 郵件, 這幾個大概學一下就行,LAMP和LNMP是必須要熟練,我所指的不是光光會搭建,而是要很熟悉里面的相當配置才行,因為公司最關鍵的絕對是WEB服務器,所以nginx和apache要熟悉,特別是nginx一定要很熟悉才行,至少有些公司還會用tomcat,這個也最好學一下。其實網絡服務方面不用太擔心,一般公司的環境都已經搭建好,就算有新服務器或讓你整改,公司會有相應的文檔讓你參照來弄,不會讓你亂來的,但至少相關的配置一定要學熟,而且肯定是編譯安裝多,那些模塊要熟悉一下他的作用,特別是PHP那些模塊。
這上面2點只是基礎,也是必要條件,不能說是工具,以下才是真正的要掌握的工具。
3、shell腳本和另一個腳本語言
shell是運維人員必須具備的,不懂這個連入職都不行,至少也要寫出一些系統管理腳本,最簡單也得寫個監控CPU,內存比率的腳本吧,這是最最最基本了,別以為會寫那些猜數字和計算什么數的,這些沒什么作用,只作學習意義,寫系統腳本才是最有意義,而另一個腳本語言是可選的,一般是3P,即python, perl和php,php就不需要考慮了,除非你要做開發,我個人建議學python會比較好,難實現自動化運維,perl是文本處理很強大,反正這兩個學一個就行了。
4、sed和awk工具
必須要掌握,在掌握這兩個工具同時,還要掌握正則表達式,這個就痛苦了,正則是最難學的表達式,但結合到sed和awk中會很強大,在處理文本內容和過濾WEB內容時十分有用,不過在學shell的同時一般會經常結合用到的,所以學第3點就會順便學第4點。
5、文本處理命令
sort, tr, cut, paste, uniq, tee等,必學,也是結合第3點時一并學習的。
6、數據庫
首選mysql,別問我為什么不學sqlserver和oracle,因為Linux用得最多絕對是mysql,增刪改查必學,特別要學熟查,其它方面可能不太需要,因為運維人員使用最多還是查,哪些優化和開發語句不會讓你弄的。
7、防火墻
不學不行,防火墻也算是個難點,說難不難,說易不易,最重要弄懂規則,如果學過CCNA的朋友可能會比較好學,因為iptables也有NAT表,原理是一樣的,而FILTER表用得最多,反正不學就肯定不合格。
8、監控工具
十分十分重要,我個人建議,最好學這3個,cacti,nagios,zabbix,企業用得最多應該是 nagios 和 zabbix,反正都學吧,但nagios會有點難,因為會涉及到用腳本寫自動監控,那個地方很難。
9、集群和熱備
這個很重要,肯定要懂的,但到了公司就不會讓你去弄,因為新手基本不讓你碰,集群工具有很多,最好學是LVS,這是必學,最好也學學nginx集群,反向代理,還有熱備,這個就更多工具能實現了,像我公司是自己開發熱備工具的,mysql熱備也要學,就是主從復制,這個別告訴我容易,其實不容易的,要學懂整個流程一點也不容易,只照著做根本沒意思。
10、數據備份
不學不行,工具有很多,但至少要把RAID的原理弄懂,特別是企業最常用的1+0或0+1,自己做實驗也要弄出來,備份工具有很多,如tar, dump, rsync等,最好多了解一下。