運維工程師必須知道的基礎有哪些?(詳解)

目錄

Linux運行是什麼?(What)

1.什麼是linux運維?

在這裏插入圖片描述

  • 運維是指大型組織已經建立好的網絡軟硬件的維護,就是要保證業務的上線與運作的正常。

  • 在他運轉的過程中,對他進行維護,他集合了網絡、系統、數據庫、開發、安全、監控、應用架構、存儲 於一身的技術。

  • 運維分類:

    • 運維開發:是給應用運維開發運維工具和運維平臺的
    • 應用運維:是給業務上線、維護和做故障排除的,用開發運維開發出來的工具給業務上線、維護、做故障排查
    • 系統運維:是給應用運維提供業務上的基礎設施,比如:系統、網絡、監控、硬件等等
    • 數據庫運維: 負責數據存儲方案設計、數據庫表設計、索引設計和SQL優化
    • 安全運維: 進行常規的安全掃描、滲透測試,進行安全工具和系統研發以及安全事件應急處理

2,運維的職責

  • 保證服務的穩定運行;
  • 考慮服務的可擴展性;
  • 從系統的穩定性和可運維性的角度,提出開發需求;
  • 定位系統的問題,甚至可以直接修正bug;
  • 對突然出現的問題做到快速響應和處理;

工作中運維應用場景?(Where)

1. Devops交付環常識普及

  • 我們把開發交付劃分爲: 計劃 --> 編碼 --> 構建 --> 測試 --> 版本 --> 部署 --> 運維 --> 監控 的一個閉環
  • DevOps的目標是通過建立並不斷完善持續交付的流水線
  • 運維的職責覆蓋了產品從設計到發佈、運行維護、變更升級及至下線的生命週期
    在這裏插入圖片描述
    2.產品發佈前

注:這個階段運維工程師的職責是參與設計並把關運維准入,主要包括下面類容

  1. 產品的業務熟悉
  2. 產品架構設計的合理性評估,包括是否存在單點,是否可容錯,是否有強耦合等,
  3. 資源評估,包括所需的服務器資源網絡資源以及資源的分佈等,同時把相關產品對資源預算申請的合理性,控制服務成本;
  4. 資源就位,將申請的服務器及基礎環境/域名準備就位。

3,產品發佈過程中

  • 監控:
    • 對服務運行的狀態進行實時的監控,隨時發現服務的運行異常和資源消耗情況;
    • 輸出重要的日常服務運行報表以評估服務/業務整體運行狀況,發現服務隱患;
  • 故障處理:
    • 對服務出現的任何異常進行及時處理,儘可能避免問題的擴大化甚至中止服務。

    • 這之前運維工程師需要針對各類服務異常,如機房/網絡故障、程序bug等問題制定處理的預案,問題出現時可以自動或手動執行預案達到止損的目的。

  • 容量管理:
    • 包括服務規模擴張後的資源評估、擴容、機房遷移、流量調度等規劃和具體實施。

5.產品性能/成本優化

  1. 產品對外提供服務最重要的一點是用戶體驗,用戶體驗中非常重要的是產品的可用性和響應速度。

  2. 而如何用最**合理的資源(如機器、帶寬等)**支持產品提供高可用和高速度的用戶體驗,這也是運維工程師的重要職責。

6.產品下線

  1. 發展良好的互聯網產品將始終在線對外提供服務,但互聯網產品快速迭代,也存在相當多孵化的產品最後被淘汰的情況
  2. 這些產品都需要做下線處理,這個過程運維工程師主要做好資源回收的工作,將機器/網絡等資源回收後納入資源池中供其它服務使用

運維的發展過程–爲什麼需要運維?(Why)

在這裏插入圖片描述
1.手工管理階段

  • 業務規模( 幾十臺機器

    • 業務流量不大,服務器數量相對較少,系統複雜度不高。

    • 對於日常的業務管理操作,大家更多的是逐臺登錄服務器進行手工操作,屬於各自爲戰。

    • 每個人都有自己的操作方式,缺少必要的操作標準、流程機制,比如業務目錄環境都是各式各樣的。

  • 職責

    • 早期的運維團隊在人員較少的情況下,主要是進行數據中心建設、基礎網絡建設、服務器採購和服務器安裝交付工作。

    • 幾乎很少涉及線上服務的變更、監控、管理等工作

    • 這個時候的運維團隊更多的屬於基礎建設的角色,提供一個簡單、可用的網絡環境和系統環境即可。

2.工具批量操作階段

  • 業務規模 幾百臺機器
    • 隨着服務器規模、系統複雜度的增加,全人工的操作方式已經不能滿足業務的快速發展需要。
    • 因此,運維人員逐漸開始使用批量化的操作工具,針對不同操作類型出現了不同的腳本程序
    • 此時,雖然效率提升了一部分,但很快又遇到了瓶頸,操作的質量並沒有太多的提升。
    • 我們開始建立大量的流程規範,比如複查機制,先上線一臺服務器觀察10分鐘後再繼續後面的操作,一次升級完成後至少要觀察20分鐘等。
    • 這些主要還是靠人來監督和執行,但在實際過程中執行往往不到位,反而降低了工作效率。
  • 工作職責
    • 這個時候的運維團隊還會承擔一些服務器監控的工作,同時會負責LVS、Nginx等與業務邏輯無關的4/7層運維工作
    • 這個時候服務變更更多的是藉助saltstack、ansible批量管理工具工操作。
    • 監控的焦點更多的在服務器狀態和資源使用情況上,對服務應用狀態的監控幾乎很少,監控更多的使用各種開源系統如Nagios、Cacti、openfalcon、等。

3.平臺管理階段

  • 業務規模( 幾千臺機器)
    • 在這個階段,我們決定開始建設運維平臺,通過平臺承載標準、流程,進而解放人力和提高質量

    • 這個時候對服務的變更動作進行了抽象,形成了操作方法、服務目錄環境、服務運行方式等統一的標準

    • 通過平臺來約束操作流程,如上面提到的上線一臺服務器觀察10分鐘,程序的啓停接口必須包括啓動、停止、重載等。

    • 在平臺中強制設定暫停檢查點,在第一臺服務器操作完成後,需要運維人員填寫相應的檢查項,然後纔可以繼續執行後續的部署動作。

  • 工作職責
    • 由於業務規模和複雜度的持續增加,運維團隊會逐漸劃分爲應用運維系統運維兩大塊。
    • 應用運維開始接手線上業務,逐步開展服務監控梳理、數據備份以及服務變更的工作
    • 同時,爲了應對每天大量的服務變更,我們也開始編寫各類運維工具,針對某些特定的服務能夠很方便的批量變更。
    • 隨着業務規模的增大,基礎設施由於容量規劃不足或抵禦風險能力較弱導致的故障也越來越多,
      運維人員開始將更多的精力投入到多數據中心容災、預案管理的方向上。

4.系統自調度階段

  • 工作環境(上萬臺機器)
    • 更大規模的服務數量、更復雜的服務關聯關係、各個運維平臺的林立,原有的將批量操作轉化成平臺操作的方式已經不再適合
    • 需要對服務變更進行更高一層的抽象,將每一臺服務器抽象成一個容器,由調度系統根據資源使用情況,將服務調度、部署到合適的服務器上
    • 自動化完成與周邊各個運維繫統的聯動,比如監控系統、日誌系統、備份系統等
    • 通過自調度系統,根據服務運行情況動態伸縮容量,能夠自動化處理常見的服務故障
    • 運維人員的工作也會前置到產品設計階段,協助研發人員改造服務使其可以接入到自調度系統中。
  • 工作職責
    • 業務規模達到一定程度後,開源的監控系統在性能和功能方面,已經無法滿足業務需求
    • 大量的服務變更、複雜的服務關係,以前靠人工記錄、工具變更的方式不管在效率還是準確性方面也都無法滿足業務需求;
    • 在安全方面也出現了各種大大小小的事件,迫使我們投入更多的精力在安全防禦上。
    • 逐漸的,運維團隊形成之前提到的5個大的工作分類,每個分類都需要有專精的人才
    • 這個時候系統運維更專注於基礎設施的建設和運維,提供穩定、高效的網絡環境,交付服務器等資源給應用運維工程師。
    • 應用運維更專注於服務運行狀態和效率,數據庫運維屬於應用運維工作的細化,更專注於數據庫領域的自動化、性能優化和安全防禦。
    • 運維研發和運維安全提供各類平臺、工具,進一步提升運維工程師的工作效率,使業務服務運行得更加穩定、高效和安全。

運維分類與工作職責

在這裏插入圖片描述
1.系統運維(SYS):

  • 負責IDC、網絡、CDN和基礎服務的建設(LVS、NTP、DNS);

  • 負責資產管理,服務器選型、交付和維修,網絡建設、LVS負載均衡和SNAT建設

2.應用運維(SRE):

  • 應用運維負責線上服務的變更、服務狀態監控、服務容災和數據備份等工作,對服務進行例行排查、故障應急處理等工作
  • 工作職責如下:設計評審、服務管理、資源管理、例行檢查、預案管理、數據備份。
  • 業務運維工作細則
    • 監控線上的服務質量
    • 響應異常/處理突發故障
    • 在線發佈/升級產品
    • 和相應產品線的研發和測試協調處理產品問題

3.運維開發

  • 是給應用運維開發運維工具和運維平臺的
  • 主要平臺:工單系統、CMDB、監控系統、ELK日誌系統、CI/CD、LDAP、FAQ、培訓系統、OpenStack平臺等

4.數據庫運維(DBA):

  • 數據庫運維負責數據存儲方案設計、數據庫表設計、索引設計和SQL優化

  • 對數據庫進行變更、監控、備份、高可用設計等工作,詳細的工作內容如下

  • 設計評審、容量規劃、數據備份與災備、數據庫監控、數據庫安全、數據庫高可用和性能優化

5.運維安全(SEC):

  • 運維安全負責網絡、系統和業務等方面的安全加固工作

  • 進行常規的安全掃描、滲透測試,進行安全工具和系統研發以及安全事件應急處理

  • 工作內容如下:安全制度建立、安全培訓、風險評估、安全建設、安全合規、應急響應。

運維工程師使用的運維平臺和工具

1.運維工程師使用的運維平臺和工具

  • Web服務器:apache、tomcat、nginx

  • 負載均衡:keepalive、lvs、haproxy、nginx

  • 監控:prometheus、zabbix、openfalcon、nagios、cacti

  • 自動部署:ansible、saltstack、sshpt

  • 配置管理:puppet

  • 備份工具:rsync、wget

  • 分佈式數據庫:hbase、redis、MongoDB

  • 容器:docker、k8s、docker-compose、swarm

  • 安全:kerberos、selinux、acl、iptables

  • 虛擬化:openstack、xen、kvm

  • 問題追查:netstat、top、tcpdump、last

2.運維工程師要掌握的技能

  • 紮實的計算機基礎知識,包括計算機系統架構,操作系統,網絡技術等;

  • 通用應用方面需要了解操作系統、網絡、安全,存儲,CDN,DB等,知道其相關原理;

  • 編程能力小到運維工具的開發大到大型運維繫統/平臺的開發都需要有良好的編程能力;

  • 數據分析能力:能夠整理、分析系統運行的各項數據,從中發現問題及找到解決方向

  • 豐富的系統知識,包括系統工具、典型系統架構、常見的平臺選型等;

3.運維工程師的軟素質要求

  • 時間管理能力,特別是碎片化時間的處理能力;

  • 沉穩的心態,面對緊急情況時需要處變不驚;

  • 溝通能力、團隊協作,運維工作跨部門、跨工種工作很多,需善於溝通、並且團隊協作能力要強;

  • 工作中需膽大心細:膽大才能創新、不走尋常路,特別對於運維這種新的工種,更需創新才能促進發展;

  • 心細,運維工程師是最高線上權限者,需要謹慎心細;

  • 主動性、執行力,能夠主動學習國際國內的運維技術,並引入到工作中,提高運維的質量和效率;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章