歡迎光臨
每天分享高質量文章

老司機告訴你:正規的運維工作是什麼的?

作者:laiwei 

來自:https://www.jianshu.com/p/07374ed16a73

互聯網運維工作,以服務為中心,以穩定、安全、高效為三個基本點,確保公司的互聯網業務能夠 7×24 小時為用戶提供高質量的服務。

運維人員對公司互聯網業務所依賴的基礎設施、基礎服務、線上業務進行穩定性加強,進行日常巡檢發現服務可能存在的隱患,對整體架構進行優化以屏蔽常見的運行故障,多資料中接入提高業務的容災能力。

通過監控、日誌分析等技術手段,及時發現和響應服務故障,減少服務中斷的時間,使公司的互聯網業務符合預期的可用性要求,持續穩定地為用戶提供務。

在安全方面,運維人員需要關註業務運行所涉及的各個層面,確保用戶能夠安全、完整地訪問在線業務。

從網絡邊界劃分、ACL 管理、流量分析、DDoS 防禦,到操作系統、開源軟體的漏洞掃描和修補,再到應用服務的XSS、SQL註入防護;

從安全流程梳、代碼白盒黑盒掃描、權限審計,到入侵行為檢測、業務風險控制等。

運維人員需要保障公司提供的互聯網業 運行在安全、可控的狀態下,確保公司業務資料和用戶隱私資料的安全,同時還需要具備抵禦各種惡意攻擊的能力。

在確保業務穩定、安全的前提下,還需保障業務高效的運轉,公司內快速的產出。運維工作需要對業務進行各方面優化。

比如,IO 優化提升資料庫性能,圖片壓縮降低帶寬使用量等,提供的互聯網業務以較小的資源投入帶來最大的用戶價值和體驗。

同時,還需要通過各種工具平臺提升內部產品發佈交付的效率,提升公司內運維相關的工作效率。

工作分類運維

運維的工作方向比較多,隨著業務規模的不斷發展,越成熟的互聯網公司,運維崗位會劃分得越細。

當前很多大型的互聯網公司,在初創時期只有系統運維,隨著服務規模、服務質量的 要求,也逐漸進行了工作細分。

一般情況下運維團隊的工作分類(見圖1-1)和職責如下。

系統運維

系統運維負責IDC、網絡、CDN和基礎服務的建設(LVS、NTP、DNS);負責資產管理,服務器選型、交付和維修。詳細的工作職責如下:

1.IDC資料中心建設

收集業務需求,預估未來資料中心的發展規模,從骨幹網的分佈,資料中心建築,以及Internet接入、網絡攻擊防禦能力、擴容能力、空間預留、外接專線能力、現場服務支撐能力等方面評估選型資料中心。負責資料中心的建設、現場維護工作。

2.網絡建設

設計及規劃生產網絡架構,這裡麵包括:資料中心網絡架構、傳輸網架構、CDN網絡架構等,以及網絡調優等日常運維工作。

3.LVS 負載均衡和 SNAT 建設

LVS 是整個站點架構中的流量入口,根據網絡規模和業務需求,構建負載均衡集群。

完成網絡與業務服務器的銜接,提供高性能、高可用的負載調度能力,以及統一的網絡層防攻擊能力。

SNAT .集中提供資料中心的公網訪問服務,通過集群化部署,保證出網服務的高性能與高可用。

4.CDN 規劃和建設

CDN 工作劃分為第三方和自建兩部分。

建立第三方 CDN 的選型和調度控制;根據業務發展趨勢,規劃CDN新節點建設佈局;完善CDN業務及監控,保障CDN 系統穩定、高效運行。

分析業務加速頻道的檔案特性和數量,制定最優的加速策略和資源匹配;負責用戶劫持等CDN日常故障排查工作。

5.服務器選型、交付和維護

負責服務器的測試選型,包含服務器整機、部件的基礎性測試和業務測試,降低整機功率,提升機架部署密度等。

結合對公司業務的瞭解,推廣新硬體、新方案減少業務的服務器投入規模。負責服務器硬體故障的診斷定位,服務器硬體監控、健康檢查工具的開發和維護。

6.OS、內核選型和 OS 相關維護工作

負責整體平臺的 OS 選型、定製和內核優化,以及 Patch 的更新和內部版本發佈;建立基礎的YUM包管理和分發中心,提供常用包版本庫;跟進日常各類 OS 相關故障;針對不同的業務型別,提供定向的優化支持。

7.資產管理

記錄和管理運維相關的基礎物理信息,包括資料中心、網絡、機櫃、服務器、ACL、IP等各種資源信息,制定有效的流程,確保信息的準確性;開放API接口,為自動化運維提供資料支持。

8.基礎服務建設

業務對 DNS、NTP、SYSLOG 等基礎服務的依賴非常高,需要設計高可用架構避免單點,提供穩定的基礎服務。

應用運維

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

1.設計評審

在產品研發階段,參與產品設計評審,從運維的角度提出評審意見,使服務滿足運維準入的高可用要求。

2.服務管理

負責制定線上業務升級變更及回滾方案,併進行變更實施。掌握所負責的服務及服務間關聯關係、服務依賴的各種資源。能夠發現服務上的缺陷,及時通報並推進解決。

制定服務穩定性指標及準入標準,同時不斷完善和優化程式和系統的功能、效率,提高運行質量。完善監控內容,提高報警準確度。

在線上服務出現故障時,第一時間響應,對已知線上故障能按流程進行通報並按預案執行,未知故障組織相關人員聯合排障。

3.資源管理

對各服務的服務器資產進行管理,梳理服務器資源狀況、資料中心分佈情況、網絡專線及帶寬情況,能夠合理使用服務器資源,根據不同服務的需求,分配不同配置的服務器,確保服務器資源的充分利用。

4.例行檢查

制定服務例行排查點,並不斷完善。根據制定的服務排查點,對服務進行定期檢查。對排查過程中發現的問題,及時進行追查,排除可能存在的隱患。

5.預案管理

確定服務所需的各項監控、系統指標的閾值或臨界點,以及出現該情況後的處理預案。

建立和更新服務預案文件,並根據日常故障情況不斷補充完善,提高預案完備性。能夠制定和評審各類預案,周期性進行預案演練,確保預案的可執行性。

6.資料備份

制定資料備份策略,按規範進行資料備份工作。保證資料備份的可用性和完整性,定期開展資料恢復性測試。

資料庫運維

資料庫運維負責資料儲存方案設計、資料庫表設計、索引設計和SQL優化,對資料庫進行變更、監控、備份、高可用設計等工作。詳細的工作職責如下所述。

1.設計評審

在產品研發初始階段,參與設計方案評審,從DBA的角度提出資料儲存方案、庫表設計方案、SQL開發標準、索引設計方案等,使服務滿足資料庫使用的高可用、高性能要求。

2.容量規劃

掌握所負責服務的資料庫的容量上限,清楚地瞭解當前瓶頸點,當服務還未到達容量上限時,及時進行優化、分拆或者擴容。

3.資料備份與災備

制定資料備份與災備策略,定期完成資料恢復性測試,保證資料備份的可用性和完整性。

4.資料庫監控

完善資料庫存活和性能監控,及時瞭解資料庫運行狀態及故障。

資料庫安全
建設資料庫賬號體系,嚴格控制賬號權限與開放範圍,降低誤操作和資料泄露的風險;加強離線備份資料的管理,降低資料泄露的風險。

5.資料庫高可用和性能優化

對資料庫單點風險和故障設計相應的切換方案,降低故障對資料庫服務的影響;不斷對資料庫整體性能進行優化,包括新儲存方案引進、硬體優化、檔案系統優化、資料庫優化、SQL優化等,在保障成本不增加或者少量增加的情況下,資料庫可以支撐更多的業務請求。

6.自動化系統建設

設計開發資料庫自動化運維繫統,包括資料庫部署、自動擴容、分庫分表、權限管理、備份恢復、SQL審核和上線、故障切換等功能。

7.運維研發

運維研發負責通用的運維平臺設計和研發工作,如:資產管理、監控系統、運維平臺、資料權限管理系統等。提供各種API供運維或研發人員使用,封裝更高層的自動化運維繫統。詳細的工作職責如下所述。

8.運維平臺

記錄和管理服務及其關聯關係,協助運維人員自動化、流程化地完成日常運維操作,包括機器管理、重啟、改名、初始化、域名管理、流量切換和故障預案實施等。

9.監控系統

負責監控系統的設計、開發工作,完成公司服務器和各種網絡設備的資源指標、線上業務運行指標的收集、告警、儲存、分析、展示和資料挖掘等工作,持續提高告警的及時性、準確性和智慧性,促進公司服務器資源的合理化調配。

10.自動化部署系統

參與部署自動化系統的開發,負責自動化部署系統所需要的基礎資料和信息,負責權限管理、API開發、Web端開發。結合雲計算,研發和提供PaaS相關高可用平臺,進一步提高服務的部署速度和用戶體驗,提升資源利用率。

運維安全

運維安全負責網絡、系統和業務等方面的安全加固工作,進行常規的安全掃描、滲透測試,進行安全工具和系統研發以及安全事件應急處理。詳細的工作職責如下所述。

1.安全制度建立

根據公司內部的具體流程,制定切實可行,且行之有效的安全制度。

2.安全培訓

定期向員工提供具有針對性的安全培訓和考核,在全公司內建立安全負責人制度。

3.風險評估

通過黑白盒測試和檢查機制,定期產生對物理網絡、服務器、業務應用、用戶資料等方面的總體風險評估結果。

4.安全建設

根據風險評估結果,加固最薄弱的環節,包括設計安全防線、部署安全設備、及時更新補丁、防禦病毒、原始碼自動掃描和業務產品安全咨詢等。為了降低可能泄露資料的價值,通過加密、匿名化、混淆資料,乃至定期刪除等技術手段和流程來達到目的。

5.安全合規

為了滿足例如支付牌照等合規性要求,安全團隊承擔著安全合規的對外接口人工作。

6.應急響應

建立安全報警系統,通過安全中心收集第三方發現的安全問題,組織各部門對已經發現的安全問題進行修複、影響面評估、事後安全原因追查。

運維工作發展過程

早期的運維團隊在人員較少的情況下,主要是進行資料中心建設、基礎網絡建設、服務器採購和服務器安裝交付工作。幾乎很少涉及線上服務的變更、監控、管理等工作。

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

隨著業務產品的逐漸成熟,對於服務質量方面就有了更高的要求。這個時候的運維團隊還會承擔一些服務器監控的工作,同時會負責 LVS、Nginx 等與業務邏輯無關的 4/7 層運維工作。

這個時候服務變更更多的是逐台的手工操作,或者有一些簡單批量腳本的出現。監控的焦點更多的在服務器狀態和資源使用情況上,對服務應用狀態的監控幾乎很少,監控更多的使用各種開源系統如Nagios、Cacti等。

由於業務規模和複雜度的持續增加,運維團隊會逐漸劃分為應用運維和系統運維兩大塊。應用運維開始接手線上業務,逐步開展服務監控梳理、資料備份以及服務變更的工作。

隨著對服務的深入,應用運維工程師有能力開始對服務進行一些簡單的優化。同時,為了應對每天大量的服務變更,我們也開始編寫各類運維工具,針對某些特定的服務能夠很方便的批量變更。

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

業務規模達到一定程度後,開源的監控系統在性能和功能方面,已經無法滿足業務需求;大量的服務變更、複雜的服務關係,以前靠人工記錄、工具變更的方式不管在效率還是準確性方面也都無法滿足業務需求。

在安全方面也出現了各種大大小小的事件,迫使我們投入更多的精力在安全防禦上。逐漸的,運維團隊形成之前提到的5個大的工作分類,每個分類都需要有專精的人才。

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

資料庫運維屬於應用運維工作的細化,更專註於資料庫領域的自動化、性能優化和安全防禦。運維研發和運維安全提供各類平臺、工具,進一步提升運維工程師的工作效率,使業務服務運行得更加穩定、高效和安全。

我們將運維發展過程劃分為4個階段,如圖1-2所示。

圖1-2運維發展過程

手工管理階段:業務流量不大,服務器數量相對較少,系統複雜度不高。對於日常的業務管理操作,大家更多的是逐台登錄服務器進行手工操作,屬於各自為戰,每個人都有自己的操作方式,缺少必要的操作標準、流程機制,比如業務目錄環境都是各式各樣的。

工具批量操作階段:隨著服務器規模、系統複雜度的增加,全人工的操作方式已經不能滿足業務的快速發展需要。因此,運維人員逐漸開始使用批量化的操作工具,針對不同操作型別出現了不同的腳本程式。

但各團隊都有自己的工具,每次操作需求發生變化時都需要調整工具。這主要是因為對於環境、操作的規範不夠,導致可程式化處理能力較弱。此時,雖然效率提升了一部分,但很快又遇到了瓶頸。

操作的質量並沒有太多的提升,甚至可能因為批量執行而導致更大規模的問題出現。我們開始建立大量的流程規範,比如複查機制,先上線一臺服務器觀察10分鐘後再繼續後面的操作,一次升級完成後至少要觀察20分鐘等。

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

平臺管理階段:在這個階段,對於運維效率和誤操作率有了更高的要求,我們決定開始建設運維平臺,通過平臺承載標準、流程,進而解放人力和提高質量。

這個時候對服務的變更動作進行了抽象,形成了操作方法、服務目錄環境、服務運行方式等統一的標準,如程式的啟停接口必須包括啟動、停止、多載等。通過平臺來約束操作流程,如上面提到的上線一臺服務器觀察10分鐘。

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

系統自調度階段:更大規模的服務數量、更複雜的服務關聯關係、各個運維平臺的林立,原有的將批量操作轉化成平臺操作的方式已經不再適合,需要對服務變更進行更高一層的抽象。

將每一臺服務器抽象成一個容器,由調度系統根據資源使用情況,將服務調度、部署到合適的服務器上,自動化完成與周邊各個運維繫統的聯動,比如監控系統、日誌系統、備份系統等。

通過自調度系統,根據服務運行情況動態伸縮容量,能夠自動化處理常見的服務故障。運維人員的工作也會前置到產品設計階段,協助研發人員改造服務使其可以接入到自調度系統中。

在整個運維的發展過程中,希望所有的工作都自動化起來,減少人的重覆工作,降低知識傳遞的成本,使我們的運維交付更高效、更安全,使產品運行更穩定。對於故障的處理,也希望由事後處理變成提前發現,由人工處理變成系統自動容災。


●編號219,輸入編號直達本文

●輸入m獲取文章目錄

推薦↓↓↓

 

Linux學習

更多推薦18個技術類微信公眾號

涵蓋:程式人生、演算法與資料結構、黑客技術與網絡安全、大資料技術、前端開發、Java、Python、Web開發、安卓開發、iOS開發、C/C++、.NET、Linux、資料庫、運維等。

赞(0)

分享創造快樂