首先祝賀你選擇學習Linux,你可能即將踏上Linux的工做之旅,出發以前,讓我帶你來看一看關於Linux和Linux運維的一切。python
Linux因其高效率、易於裁剪、應用廣等優點,成爲了當今中高端服務器的主要操做系統,而且處於一個不可替代的地位。Linux可安裝在各類計算機硬件設備中,好比手機、平板電腦、路由器、視頻遊戲控制檯、臺式計算機、大型機和超級計算機。隨着Linux在中國市場迅猛發展,國內Linux人才缺口逐漸凸顯。Linux人才招聘也成了當前最熱門的招聘之一。mysql
首先linux是一個很是很是大的概念。想所有吃透是不可能的。理想的說,搞懂linux,就能夠作全部工做。我的更傾向於說想作什麼樣工做,須要學linux的哪部分。linux
按我的經驗介紹下常見的linux有哪些領域,並對應到什麼工做。
1)linux應用。這部分嚴格來講不能算是linux,只是跑在linux上的應用,好比web,網絡,IT等,職業包括系統研發,後臺開發,服務器性能優化,運維等;android
互聯網Linux運維工做,以服務爲中心,以穩定、安全、高效爲三個基本點,確保公司的互聯網業務可以7×24小時爲用戶提供高質量的服務。運維的職責覆蓋了產品從設計到發佈、運行維護、變動升級及至下線的生命週期。ios
運維的工做方向比較多,隨着業務規模的不斷髮展,越成熟的互聯網公司,運維崗位會劃分得越細。當前不少大型的互聯網公司,在初創時期只有系統運維,隨着 模、服務質量的 要求,也逐漸進行了工做細分。通常狀況下運維團隊的工做分類(見圖1-1)和職責以下。nginx
圖1-1 運維團隊的工做分類web
2.1-應用運維(SRE):應用運維負責線上服務的變動、服務狀態監控、服務容災和數據備份等工做,對服務進行例行排查、故障應急處理等工做,工做職責以下:設計評審、服務管理、資源管理、例行檢查、預案管理、數據備份。redis
2.2-系統運維(SYS):負責IDC、網絡、CDN和基礎服務的建設(LVS、NTP、DNS);負責資產管理,服務器選型、交付和維修,工做職責以下:IDC數據中心建設、網絡建設、LVS負載均衡和SNAT建設、CDN規劃和建設、服務器選型、交付和維護、內核選型和OS相關維護工做、資產管理、基礎服務建設。sql
2.3-數據庫運維(DBA):數據庫運維負責數據存儲方案設計、數據庫表設計、索引設計和SQL優化,對數據庫進行變動、監控、備份、高可用設計等工做,詳細的工做內容以下:設計評審、容量規劃、數據備份與災備、數據庫監控、數據庫安全、數據庫高可用和性能優化、自動化系統建設、運維研發、運維平臺、監控系統、自動化部署系統。docker
2.4-運維安全(SEC):運維安全負責網絡、系統和業務等方面的安全加固工做,進行常規的安全掃描、滲透測試,進行安全工具和系統研發以及安全事件應急處理,工做內容以下:安全制度創建、安全培訓、風險評估、安全建設、安全合規、應急響應。
早期的運維團隊在人員較少的狀況下,主要是進行數據中心建設、基礎網絡建設、服務器採購和服務器安裝交付工做。幾乎不多涉及線上服務的變動、監控、管理等工做。這個時候的運維團隊更多的屬於基礎建設的角色,提供一個簡單、可用的網絡環境和系統環境便可。
隨着業務產品的逐漸成熟,對於服務質量方面就有了更高的要求。這個時候的運維團隊還會承擔一些服務器監控的工做,同時會負責LVS、Nginx等與業務邏輯無關的4/7層運維工做。這個時候服務變動更多的是逐臺的手工操做,或者有一些簡單批量腳本的出現。監控的焦點更多的在服務器狀態和資源使用狀況上,對服務應用狀態的監控幾乎不多,監控更多的使用各類開源系統如Nagios、Cacti等。
因爲業務規模和複雜度的持續增長,運維團隊會逐漸劃分爲應用運維和系統運維兩大塊。應用運維開始接手線上業務,逐步開展服務監控梳理、數據備份以及服務變動的工做。隨着對服務的深刻,應用運維工程師有能力開始對服務進行一些簡單的優化。同時,爲了應對天天大量的服務變動,咱們也開始編寫各種運維工具,針對某些特定的服務可以很方便的批量變動。隨着業務規模的增大,基礎設施因爲容量規劃不足或抵禦風險能力較弱致使的故障也愈來愈多,迫使運維人員開始將更多的精力投入到多數據中心容災、預案管理的方向上。
業務規模達到必定程度後,開源的監控系統在性能和功能方面,已經沒法知足業務需求;大量的服務變動、複雜的服務關係,之前靠人工記錄、工具變動的方式無論在效率仍是準確性方面也都沒法知足業務需求;在安全方面也出現了各類大大小小的事件,迫使咱們投入更多的精力在安全防護上。逐漸的,運維團隊造成以前提到的5個大的工做分類,每一個分類都須要有專精的人才。這個時候系統運維更專一於基礎設施的建設和運維,提供穩定、高效的網絡環境,交付服務器等資源給應用運維工程師。應用運維更專一於服務運行狀態和效率。數據庫運維屬於應用運維工做的細化,更專一於數據庫領域的自動化、性能優化和安全防護。運維研發和運維安全提供各種平臺、工具,進一步提高運維工程師的工做效率,使業務服務運行得更加穩定、高效和安全。
咱們將運維發展過程劃分爲4個階段,如圖1-2所示。
圖1-2 運維發展過程
手工管理階段:業務流量不大,服務器數量相對較少,系統複雜度不高。對於平常的業務管理操做,你們更多的是逐臺登陸服務器進行手工操做,屬於各自爲戰,每一個人都有本身的操做方式,缺乏必要的操做標準、流程機制,好比業務目錄環境都是各式各樣的。
工具批量操做階段:隨着服務器規模、系統複雜度的增長,全人工的操做方式已經不能知足業務的快速發展須要。所以,運維人員逐漸開始使用批量化的操做工具,針對不一樣操做類型出現了不一樣的腳本程序。但各團隊都有本身的工具,每次操做需求發生變化時都須要調整工具。這主要是由於對於環境、操做的規範不夠,致使可程序化處理能力較弱。此時,雖然效率提高了一部分,但很快又遇到了瓶頸。操做的質量並無太多的提高,甚至可能由於批量執行而致使更大規模的問題出現。咱們開始創建大量的流程規範,好比複查機制,先上線一臺服務器觀察10分鐘後再繼續後面的操做,一次升級完成後至少要觀察20分鐘等。這些主要仍是靠人來監督和執行,但在實際過程當中執行每每不到位,反而下降了工做效率。
平臺管理階段:在這個階段,對於運維效率和誤操做率有了更高的要求,咱們決定開始建設運維平臺,經過平臺承載標準、流程,進而解放人力和提升質量。這個時候對服務的變動動做進行了抽象,造成了操做方法、服務目錄環境、服務運行方式等統一的標準,如程序的啓停接口必須包括啓動、中止、重載等。經過平臺來約束操做流程,如上面提到的上線一臺服務器觀察10分鐘。在平臺中強制設定暫停檢查點,在第一臺服務器操做完成後,須要運維人員填寫相應的檢查項,而後才能夠繼續執行後續的部署動做。
系統自調度階段:更大規模的服務數量、更復雜的服務關聯關係、各個運維平臺的林立,原有的將批量操做轉化成平臺操做的方式已經再也不適合,須要對服務變動進行更高一層的抽象。將每一臺服務器抽象成一個容器,由調度系統根據資源使用狀況,將服務調度、部署到合適的服務器上,自動化完成與周邊各個運維繫統的聯動,好比監控系統、日誌系統、備份系統等。經過自調度系統,根據服務運行狀況動態伸縮容量,可以自動化處理常見的服務故障。運維人員的工做也會前置到產品設計階段,協助研發人員改造服務使其能夠接入到自調度系統中。
在整個運維的發展過程當中,但願全部的工做都自動化起來,減小人的重複工做,下降知識傳遞的成本,使咱們的運維交付更高效、更安全,使產品運行更穩定。對於故障的處理,也但願由過後處理變成提早發現,由人工處理變成系統自動容災。
5、2018年Linux運維必須抓住的前沿技能
這是技術世界正在發生的深入變革的冰山一角,那麼問題來了? 做爲傳統的運維該如何轉型呢?
這裏給出一點小的建議: 大體須要學習下這四個部分: