運維日常工作

專注的阿熊發表於2019-12-25

1.1 inux運維的主要工作內容

1、什麼是linux運維


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


在他運轉的過程中,對他進行維護,他集合了網路、系統、資料庫、開發、安全、監控於一身的技術。


運維又包括很多種,有DBA運維、網站運維、虛擬化運維、監控運維、遊戲運維等等。


運維分類:


1)開發運維:是給應用運維開發運維工具和運維平臺的


2)應用運維:是給業務上線、維護和做故障排除的,用開發運維開發出來的工具給業務上線、維護、做故障排查


3)系統運維:是給應用運維提供業務上的基礎設施,比如:系統、網路、監控、硬體等等


2、基礎運維常見工作內容


服務監控技術:包括監控平臺的研發、應用,服務監控準確性、實時性、全面性的保障


服務故障管理:包括服務的故障預案設計,預案的自動化執行,故障的總結並反饋到產品/系統的設計層面進行最佳化以提高產品的穩定性


服務容量管理:測量服務的容量,規劃服務的機房建設,擴容、遷移等工作


服務效能最佳化:從各個方向,包括網路最佳化、作業系統最佳化、應用最佳化、客戶端最佳化等,提高服務的效能和響應速度,改善使用者體驗


服務全域性流量排程:接入服務的流量,根據容量和服務狀態在各個機房間分配流量


服務安全保障:包括服務的訪問安全、防攻擊、許可權控制等


服務自動釋出部署:部署平臺/工具的研發,及平臺/工具的使用,做到安全、高效的釋出服務


服務叢集管理:包括服務的伺服器管理、大規模叢集管理等


服務成本最佳化:儘可能降低服務執行使用的資源,降低服務執行成本


資料庫管理(DBA):透過設計、開發和管理高效能資料庫叢集,使資料庫服務更穩定、更高效、更易於管理。


平臺化的開發:類docker等平臺的開發管理,及服務接入技術


1.2 Linux運維工作發展過程


1、手工管理階段


1)業務規模


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


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


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


2)工作職責


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


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


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


2、工具批次操作階段


1)業務規模


隨著伺服器規模、系統複雜度的增加,全人工的操作方式已經不能滿足業務的快速發展需要。


因此,運維人員逐漸開始使用批次化的操作工具,針對不同操作型別出現了不同的指令碼程式。


此時,雖然效率提升了一部分,但很快又遇到了瓶頸,操作的質量並沒有太多的提升。


我們開始建立大量的流程規範,比如複查機制,先上線一臺伺服器觀察10分鐘後再繼續後面的操作,一次升級完成後至少要觀察20分鐘等。


這些主要還是靠人來監督和執行,但在實際過程中執行往往不到位,反而降低了工作效率。


2)工作職責


這個時候的運維團隊還會承擔一些伺服器監控的工作,同時會負責LVS、Nginx等與業務邏輯無關的4/7層運維工作。


這個時候服務變更更多的是逐臺的手工操作,或者有一些簡單批次指令碼的出現。


監控的焦點更多的在伺服器狀態和資源使用情況上,對服務應用狀態的監控幾乎很少,監控更多的使用各種開源系統如Nagios、Cacti等。


3、平臺管理階段


1)業務規模


在這個階段,我們決定開始建設運維平臺,透過平臺承載標準、流程,進而解放人力和提高質量。


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


透過平臺來約束操作流程,如上面提到的上線一臺伺服器觀察10分鐘,程式的啟停介面必須包括啟動、停止、過載等。


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


2)工作職責


由於業務規模和複雜度的持續增加,運維團隊會逐漸劃分為應用運維和系統運維兩大塊。


應用運維開始接手線上業務,逐步開展服務監控梳理、資料備份以及服務變更的工作。


隨著對服務的深入,應用運維工程師有能力開始對服務進行一些簡單的最佳化。


同時,為了應對每天大量的服務變更,我們也開始編寫各類運維工具,針對某些特定的服務能夠很方便的批次變更。


隨著業務規模的增大,基礎設施由於容量規劃不足或抵禦風險能力較弱導致的故障也越來越多,迫使運維人員開始將更多的精力投入到多資料中心容災、預案管理的方向上。


4、系統自排程階段


1)工作環境


更大規模的服務數量、更復雜的服務關聯關係、各個運維平臺的林立,原有的將批次操作轉化成平臺操作的方式已經不再適合。


需要對服務變更進行更高一層的抽象,將每一臺伺服器抽象成一個容器,由排程系統根據資源使用情況,將服務排程、部署到合適的伺服器上。


自動化完成與周邊各個運維繫統的聯動,比如監控系統、日誌系統、備份系統等。


透過自排程系統,根據服務執行情況動態伸縮容量,能夠自動化處理常見的服務故障。


運維人員的工作也會前置到產品設計階段,協助研發人員改造服務使其可以接入到自排程系統中。


2)工作職責


業務規模達到一定程度後,開源的監控系統在效能和功能方面,已經無法滿足業務需求;


大量的服務變更、複雜的服務關係,以前靠人工記錄、工具變更的方式不管在效率還是準確性方面也都無法滿足業務需求;


在安全方面也出現了各種大大小小的事件,迫使我們投入更多的精力在安全防禦上。


逐漸的,運維團隊形成之前提到的5個大的工作分類,每個分類都需要有專精的人才。


這個時候系統運維更專注於基礎設施的建設和運維,提供穩定、高效的網路環境,交付伺服器等資源給應用運維工程師。


應用運維更專注於服務執行狀態和效率,資料庫運維屬於應用運維工作的細化,更專注於資料庫領域的自動化、效能最佳化和安全防禦。


運維研發和運維安全提供各類平臺、工具,MT5使用教程 進一步提升運維工程師的工作效率,使業務服務執行得更加穩定、高效和安全。


1.3 Linux運維工作分類


1、應用運維(SRE):


應用運維負責線上服務的變更、服務狀態監控、服務容災和資料備份等工作,對服務進行例行排查、故障應急處理等工作


工作職責如下:設計評審、服務管理、資源管理、例行檢查、預案管理、資料備份。


2、系統運維(SYS):


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


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


3、運維開發


是給應用運維開發運維工具和運維平臺的


主要包含的平臺:工單系統、CMDB、監控系統、ELK日誌系統、CI/CD、LDAP、FAQ、培訓系統、OpenStack平臺


4、資料庫運維(DBA):


資料庫運維負責資料儲存方案設計、資料庫表設計、索引設計和SQL最佳化,


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


設計評審、容量規劃、資料備份與災備、資料庫監控、資料庫安全、資料庫高可用和效能最佳化


自動化系統建設、運維研發、運維平臺、監控系統、自動化部署系統


5、運維安全(SEC):


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


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


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


1.4 Linux運維日常使用軟體和技能

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


Web伺服器:apache、tomcat、nginx


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


自動部署:ansible、saltstack、puttet


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


備份工具:rsync、wget


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


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


安全:kerberos、selinux、acl、iptables


虛擬化:openstack、xen、kvm


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


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


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


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


資料分析能力:能夠整理、分析系統執行的各項資料,從中發現問題及找到解決方向;


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




來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946337/viewspace-2670567/,如需轉載,請註明出處,否則將追究法律責任。

相關文章