互聯網運維工作(zuò),以服務為(wèi)中心,以穩定、安全、高(gāo)效為(wèi)三個(gè)基本點,确保公司的互聯網業務能夠 7×24 小(xiǎo)時(shí)為(wèi)用戶提供高(gāo)質量的服務。
運維人(rén)員對公司互聯網業務所依賴的基礎設施、基礎服務、線上(shàng)業務進行(xíng)穩定性加強,進行(xíng)日常巡檢發現服務可(kě)能存在的隐患,對整體(tǐ)架構進行(xíng)優化以屏蔽常見的運行(xíng)故障,多(duō)數(shù)據中接入提高(gāo)業務的容災能力。
通(tōng)過監控、日志(zhì)分析等技(jì)術(shù)手段,及時(shí)發現和(hé)響應服務故障,減少(shǎo)服務中斷的時(shí)間(jiān),使公司的互聯網業務符合預期的可(kě)用性要求,持續穩定地為(wèi)用戶提供務。
在安全方面,運維人(rén)員需要關注業務運行(xíng)所涉及的各個(gè)層面,确保用戶能夠安全、完整地訪問在線業務。
從網絡邊界劃分、ACL 管理(lǐ)、流量分析、DDoS 防禦,到操作(zuò)系統、開(kāi)源軟件的漏洞掃描和(hé)修補,再到應用服務的XSS、SQL注入防護;
從安全流程梳、代碼白盒黑(hēi)盒掃描、權限審計(jì),到入侵行(xíng)為(wèi)檢測、業務風險控制(zhì)等。
運維人(rén)員需要保障公司提供的互聯網業 運行(xíng)在安全、可(kě)控的狀态下,确保公司業務數(shù)據和(hé)用戶隐私數(shù)據的安全,同時(shí)還(hái)需要具備抵禦各種惡意攻擊的能力。
在确保業務穩定、安全的前提下,還(hái)需保障業務高(gāo)效的運轉,公司內(nèi)快速的産出。運維工作(zuò)需要對業務進行(xíng)各方面優化。
比如,IO 優化提升數(shù)據庫性能,圖片壓縮降低(dī)帶寬使用量等,提供的互聯網業務以較小(xiǎo)的資源投入帶來(lái)最大(dà)的用戶價值和(hé)體(tǐ)驗。
同時(shí),還(hái)需要通(tōng)過各種工具平台提升內(nèi)部産品發布交付的效率,提升公司內(nèi)運維相關的工作(zuò)效率。
運維的工作(zuò)方向比較多(duō),随着業務規模的不斷發展,越成熟的互聯網公司,運維崗位會(huì)劃分得(de)越細。
當前很(hěn)多(duō)大(dà)型的互聯網公司,在初創時(shí)期隻有(yǒu)系統運維,随着服務規模、服務質量的 要求,也逐漸進行(xíng)了工作(zuò)細分。
一般情況下運維團隊的工作(zuò)分類(見圖1-1)和(hé)職責如下。
系統運維負責IDC、網絡、CDN和(hé)基礎服務的建設(LVS、NTP、DNS);負責資産管理(lǐ),服務器(qì)選型、交付和(hé)維修。詳細的工作(zuò)職責如下:
收集業務需求,預估未來(lái)數(shù)據中心的發展規模,從骨幹網的分布,數(shù)據中心建築,以及Internet接入、網絡攻擊防禦能力、擴容能力、空(kōng)間(jiān)預留、外接專線能力、現場(chǎng)服務支撐能力等方面評估選型數(shù)據中心。負責數(shù)據中心的建設、現場(chǎng)維護工作(zuò)。
設計(jì)及規劃生(shēng)産網絡架構,這裏面包括:數(shù)據中心網絡架構、傳輸網架構、CDN網絡架構等,以及網絡調優等日常運維工作(zuò)。
LVS 是整個(gè)站(zhàn)點架構中的流量入口,根據網絡規模和(hé)業務需求,構建負載均衡集群。
完成網絡與業務服務器(qì)的銜接,提供高(gāo)性能、高(gāo)可(kě)用的負載調度能力,以及統一的網絡層防攻擊能力。
SNAT .集中提供數(shù)據中心的公網訪問服務,通(tōng)過集群化部署,保證出網服務的高(gāo)性能與高(gāo)可(kě)用。
CDN 工作(zuò)劃分為(wèi)第三方和(hé)自建兩部分。
建立第三方 CDN 的選型和(hé)調度控制(zhì);根據業務發展趨勢,規劃CDN新節點建設布局;完善CDN業務及監控,保障CDN 系統穩定、高(gāo)效運行(xíng)。
分析業務加速頻道(dào)的文件特性和(hé)數(shù)量,制(zhì)定最優的加速策略和(hé)資源匹配;負責用戶劫持等CDN日常故障排查工作(zuò)。
負責服務器(qì)的測試選型,包含服務器(qì)整機、部件的基礎性測試和(hé)業務測試,降低(dī)整機功率,提升機架部署密度等。
結合對公司業務的了解,推廣新硬件、新方案減少(shǎo)業務的服務器(qì)投入規模。負責服務器(qì)硬件故障的診斷定位,服務器(qì)硬件監控、健康檢查工具的開(kāi)發和(hé)維護。
負責整體(tǐ)平台的 OS 選型、定制(zhì)和(hé)內(nèi)核優化,以及 Patch 的更新和(hé)內(nèi)部版本發布;建立基礎的YUM包管理(lǐ)和(hé)分發中心,提供常用包版本庫;跟進日常各類 OS 相關故障;針對不同的業務類型,提供定向的優化支持。
記錄和(hé)管理(lǐ)運維相關的基礎物理(lǐ)信息,包括數(shù)據中心、網絡、機櫃、服務器(qì)、ACL、IP等各種資源信息,制(zhì)定有(yǒu)效的流程,确保信息的準确性;開(kāi)放API接口,為(wèi)自動化運維提供數(shù)據支持。
業務對 DNS、NTP、SYSLOG 等基礎服務的依賴非常高(gāo),需要設計(jì)高(gāo)可(kě)用架構避免單點,提供穩定的基礎服務。
應用運維負責線上(shàng)服務的變更、服務狀态監控、服務容災和(hé)數(shù)據備份等工作(zuò),對服務進行(xíng)例行(xíng)排查、故障應急處理(lǐ)等工作(zuò)。詳細的工作(zuò)職責如下所述。
在産品研發階段,參與産品設計(jì)評審,從運維的角度提出評審意見,使服務滿足運維準入的高(gāo)可(kě)用要求。
負責制(zhì)定線上(shàng)業務升級變更及回滾方案,并進行(xíng)變更實施。掌握所負責的服務及服務間(jiān)關聯關系、服務依賴的各種資源。能夠發現服務上(shàng)的缺陷,及時(shí)通(tōng)報并推進解決。
制(zhì)定服務穩定性指标及準入标準,同時(shí)不斷完善和(hé)優化程序和(hé)系統的功能、效率,提高(gāo)運行(xíng)質量。完善監控內(nèi)容,提高(gāo)報警準确度。
在線上(shàng)服務出現故障時(shí),第一時(shí)間(jiān)響應,對已知線上(shàng)故障能按流程進行(xíng)通(tōng)報并按預案執行(xíng),未知故障組織相關人(rén)員聯合排障。
對各服務的服務器(qì)資産進行(xíng)管理(lǐ),梳理(lǐ)服務器(qì)資源狀況、數(shù)據中心分布情況、網絡專線及帶寬情況,能夠合理(lǐ)使用服務器(qì)資源,根據不同服務的需求,分配不同配置的服務器(qì),确保服務器(qì)資源的充分利用。
制(zhì)定服務例行(xíng)排查點,并不斷完善。根據制(zhì)定的服務排查點,對服務進行(xíng)定期檢查。對排查過程中發現的問題,及時(shí)進行(xíng)追查,排除可(kě)能存在的隐患。
确定服務所需的各項監控、系統指标的阈值或臨界點,以及出現該情況後的處理(lǐ)預案。
建立和(hé)更新服務預案文檔,并根據日常故障情況不斷補充完善,提高(gāo)預案完備性。能夠制(zhì)定和(hé)評審各類預案,周期性進行(xíng)預案演練,确保預案的可(kě)執行(xíng)性。
制(zhì)定數(shù)據備份策略,按規範進行(xíng)數(shù)據備份工作(zuò)。保證數(shù)據備份的可(kě)用性和(hé)完整性,定期開(kāi)展數(shù)據恢複性測試。
數(shù)據庫運維負責數(shù)據存儲方案設計(jì)、數(shù)據庫表設計(jì)、索引設計(jì)和(hé)SQL優化,對數(shù)據庫進行(xíng)變更、監控、備份、高(gāo)可(kě)用設計(jì)等工作(zuò)。詳細的工作(zuò)職責如下所述。
在産品研發初始階段,參與設計(jì)方案評審,從DBA的角度提出數(shù)據存儲方案、庫表設計(jì)方案、SQL開(kāi)發标準、索引設計(jì)方案等,使服務滿足數(shù)據庫使用的高(gāo)可(kě)用、高(gāo)性能要求。
掌握所負責服務的數(shù)據庫的容量上(shàng)限,清楚地了解當前瓶頸點,當服務還(hái)未到達容量上(shàng)限時(shí),及時(shí)進行(xíng)優化、分拆或者擴容。
制(zhì)定數(shù)據備份與災備策略,定期完成數(shù)據恢複性測試,保證數(shù)據備份的可(kě)用性和(hé)完整性。
完善數(shù)據庫存活和(hé)性能監控,及時(shí)了解數(shù)據庫運行(xíng)狀态及故障。
數(shù)據庫安全建設數(shù)據庫賬号體(tǐ)系,嚴格控制(zhì)賬号權限與開(kāi)放範圍,降低(dī)誤操作(zuò)和(hé)數(shù)據洩露的風險;加強離線備份數(shù)據的管理(lǐ),降低(dī)數(shù)據洩露的風險。
對數(shù)據庫單點風險和(hé)故障設計(jì)相應的切換方案,降低(dī)故障對數(shù)據庫服務的影(yǐng)響;不斷對數(shù)據庫整體(tǐ)性能進行(xíng)優化,包括新存儲方案引進、硬件優化、文件系統優化、數(shù)據庫優化、SQL優化等,在保障成本不增加或者少(shǎo)量增加的情況下,數(shù)據庫可(kě)以支撐更多(duō)的業務請(qǐng)求。
設計(jì)開(kāi)發數(shù)據庫自動化運維系統,包括數(shù)據庫部署、自動擴容、分庫分表、權限管理(lǐ)、備份恢複、SQL審核和(hé)上(shàng)線、故障切換等功能。
運維研發負責通(tōng)用的運維平台設計(jì)和(hé)研發工作(zuò),如:資産管理(lǐ)、監控系統、運維平台、數(shù)據權限管理(lǐ)系統等。提供各種API供運維或研發人(rén)員使用,封裝更高(gāo)層的自動化運維系統。詳細的工作(zuò)職責如下所述。
記錄和(hé)管理(lǐ)服務及其關聯關系,協助運維人(rén)員自動化、流程化地完成日常運維操作(zuò),包括機器(qì)管理(lǐ)、重啓、改名、初始化、域名管理(lǐ)、流量切換和(hé)故障預案實施等。
負責監控系統的設計(jì)、開(kāi)發工作(zuò),完成公司服務器(qì)和(hé)各種網絡設備的資源指标、線上(shàng)業務運行(xíng)指标的收集、告警、存儲、分析、展示和(hé)數(shù)據挖掘等工作(zuò),持續提高(gāo)告警的及時(shí)性、準确性和(hé)智能性,促進公司服務器(qì)資源的合理(lǐ)化調配。
參與部署自動化系統的開(kāi)發,負責自動化部署系統所需要的基礎數(shù)據和(hé)信息,負責權限管理(lǐ)、API開(kāi)發、Web端開(kāi)發。結合雲計(jì)算(suàn),研發和(hé)提供PaaS相關高(gāo)可(kě)用平台,進一步提高(gāo)服務的部署速度和(hé)用戶體(tǐ)驗,提升資源利用率。
運維安全負責網絡、系統和(hé)業務等方面的安全加固工作(zuò),進行(xíng)常規的安全掃描、滲透測試,進行(xíng)安全工具和(hé)系統研發以及安全事件應急處理(lǐ)。詳細的工作(zuò)職責如下所述。
根據公司內(nèi)部的具體(tǐ)流程,制(zhì)定切實可(kě)行(xíng),且行(xíng)之有(yǒu)效的安全制(zhì)度。
定期向員工提供具有(yǒu)針對性的安全培訓和(hé)考核,在全公司內(nèi)建立安全負責人(rén)制(zhì)度。
通(tōng)過黑(hēi)白盒測試和(hé)檢查機制(zhì),定期産生(shēng)對物理(lǐ)網絡、服務器(qì)、業務應用、用戶數(shù)據等方面的總體(tǐ)風險評估結果。
根據風險評估結果,加固最薄弱的環節,包括設計(jì)安全防線、部署安全設備、及時(shí)更新補丁、防禦病毒、源代碼自動掃描和(hé)業務産品安全咨詢等。為(wèi)了降低(dī)可(kě)能洩露數(shù)據的價值,通(tōng)過加密、匿名化、混淆數(shù)據,乃至定期删除等技(jì)術(shù)手段和(hé)流程來(lái)達到目的。
為(wèi)了滿足例如支付牌照等合規性要求,安全團隊承擔着安全合規的對外接口人(rén)工作(zuò)。
建立安全報警系統,通(tōng)過安全中心收集第三方發現的安全問題,組織各部門(mén)對已經發現的安全問題進行(xíng)修複、影(yǐng)響面評估、事後安全原因追查。
早期的運維團隊在人(rén)員較少(shǎo)的情況下,主要是進行(xíng)數(shù)據中心建設、基礎網絡建設、服務器(qì)采購和(hé)服務器(qì)安裝交付工作(zuò)。幾乎很(hěn)少(shǎo)涉及線上(shàng)服務的變更、監控、管理(lǐ)等工作(zuò)。
這個(gè)時(shí)候的運維團隊更多(duō)的屬于基礎建設的角色,提供一個(gè)簡單、可(kě)用的網絡環境和(hé)系統環境即可(kě)。
随着業務産品的逐漸成熟,對于服務質量方面就有(yǒu)了更高(gāo)的要求。這個(gè)時(shí)候的運維團隊還(hái)會(huì)承擔一些(xiē)服務器(qì)監控的工作(zuò),同時(shí)會(huì)負責 LVS、Nginx 等與業務邏輯無關的 4/7 層運維工作(zuò)。
這個(gè)時(shí)候服務變更更多(duō)的是逐台的手工操作(zuò),或者有(yǒu)一些(xiē)簡單批量腳本的出現。監控的焦點更多(duō)的在服務器(qì)狀态和(hé)資源使用情況上(shàng),對服務應用狀态的監控幾乎很(hěn)少(shǎo),監控更多(duō)的使用各種開(kāi)源系統如Nagios、Cacti等。
由于業務規模和(hé)複雜度的持續增加,運維團隊會(huì)逐漸劃分為(wèi)應用運維和(hé)系統運維兩大(dà)塊。應用運維開(kāi)始接手線上(shàng)業務,逐步開(kāi)展服務監控梳理(lǐ)、數(shù)據備份以及服務變更的工作(zuò)。
随着對服務的深入,應用運維工程師(shī)有(yǒu)能力開(kāi)始對服務進行(xíng)一些(xiē)簡單的優化。同時(shí),為(wèi)了應對每天大(dà)量的服務變更,我們也開(kāi)始編寫各類運維工具,針對某些(xiē)特定的服務能夠很(hěn)方便的批量變更。
随着業務規模的增大(dà),基礎設施由于容量規劃不足或抵禦風險能力較弱導緻的故障也越來(lái)越多(duō),迫使運維人(rén)員開(kāi)始将更多(duō)的精力投入到多(duō)數(shù)據中心容災、預案管理(lǐ)的方向上(shàng)。
業務規模達到一定程度後,開(kāi)源的監控系統在性能和(hé)功能方面,已經無法滿足業務需求;大(dà)量的服務變更、複雜的服務關系,以前靠人(rén)工記錄、工具變更的方式不管在效率還(hái)是準确性方面也都無法滿足業務需求。
在安全方面也出現了各種大(dà)大(dà)小(xiǎo)小(xiǎo)的事件,迫使我們投入更多(duō)的精力在安全防禦上(shàng)。逐漸的,運維團隊形成之前提到的5個(gè)大(dà)的工作(zuò)分類,每個(gè)分類都需要有(yǒu)專精的人(rén)才。
這個(gè)時(shí)候系統運維更專注于基礎設施的建設和(hé)運維,提供穩定、高(gāo)效的網絡環境,交付服務器(qì)等資源給應用運維工程師(shī)。應用運維更專注于服務運行(xíng)狀态和(hé)效率。
數(shù)據庫運維屬于應用運維工作(zuò)的細化,更專注于數(shù)據庫領域的自動化、性能優化和(hé)安全防禦。運維研發和(hé)運維安全提供各類平台、工具,進一步提升運維工程師(shī)的工作(zuò)效率,使業務服務運行(xíng)得(de)更加穩定、高(gāo)效和(hé)安全。
我們将運維發展過程劃分為(wèi)4個(gè)階段,如圖1-2所示。
圖1-2運維發展過程
手工管理(lǐ)階段:業務流量不大(dà),服務器(qì)數(shù)量相對較少(shǎo),系統複雜度不高(gāo)。對于日常的業務管理(lǐ)操作(zuò),大(dà)家(jiā)更多(duō)的是逐台登錄服務器(qì)進行(xíng)手工操作(zuò),屬于各自為(wèi)戰,每個(gè)人(rén)都有(yǒu)自己的操作(zuò)方式,缺少(shǎo)必要的操作(zuò)标準、流程機制(zhì),比如業務目錄環境都是各式各樣的。
工具批量操作(zuò)階段:随着服務器(qì)規模、系統複雜度的增加,全人(rén)工的操作(zuò)方式已經不能滿足業務的快速發展需要。因此,運維人(rén)員逐漸開(kāi)始使用批量化的操作(zuò)工具,針對不同操作(zuò)類型出現了不同的腳本程序。
但(dàn)各團隊都有(yǒu)自己的工具,每次操作(zuò)需求發生(shēng)變化時(shí)都需要調整工具。這主要是因為(wèi)對于環境、操作(zuò)的規範不夠,導緻可(kě)程序化處理(lǐ)能力較弱。此時(shí),雖然效率提升了一部分,但(dàn)很(hěn)快又遇到了瓶頸。
操作(zuò)的質量并沒有(yǒu)太多(duō)的提升,甚至可(kě)能因為(wèi)批量執行(xíng)而導緻更大(dà)規模的問題出現。我們開(kāi)始建立大(dà)量的流程規範,比如複查機制(zhì),先上(shàng)線一台服務器(qì)觀察10分鍾後再繼續後面的操作(zuò),一次升級完成後至少(shǎo)要觀察20分鍾等。
這些(xiē)主要還(hái)是靠人(rén)來(lái)監督和(hé)執行(xíng),但(dàn)在實際過程中執行(xíng)往往不到位,反而降低(dī)了工作(zuò)效率。
平台管理(lǐ)階段:在這個(gè)階段,對于運維效率和(hé)誤操作(zuò)率有(yǒu)了更高(gāo)的要求,我們決定開(kāi)始建設運維平台,通(tōng)過平台承載标準、流程,進而解放人(rén)力和(hé)提高(gāo)質量。
這個(gè)時(shí)候對服務的變更動作(zuò)進行(xíng)了抽象,形成了操作(zuò)方法、服務目錄環境、服務運行(xíng)方式等統一的标準,如程序的啓停接口必須包括啓動、停止、重載等。通(tōng)過平台來(lái)約束操作(zuò)流程,如上(shàng)面提到的上(shàng)線一台服務器(qì)觀察10分鍾。
在平台中強制(zhì)設定暫停檢查點,在第一台服務器(qì)操作(zuò)完成後,需要運維人(rén)員填寫相應的檢查項,然後才可(kě)以繼續執行(xíng)後續的部署動作(zuò)。
系統自調度階段:更大(dà)規模的服務數(shù)量、更複雜的服務關聯關系、各個(gè)運維平台的林立,原有(yǒu)的将批量操作(zuò)轉化成平台操作(zuò)的方式已經不再适合,需要對服務變更進行(xíng)更高(gāo)一層的抽象。
将每一台服務器(qì)抽象成一個(gè)容器(qì),由調度系統根據資源使用情況,将服務調度、部署到合适的服務器(qì)上(shàng),自動化完成與周邊各個(gè)運維系統的聯動,比如監控系統、日志(zhì)系統、備份系統等。
通(tōng)過自調度系統,根據服務運行(xíng)情況動态伸縮容量,能夠自動化處理(lǐ)常見的服務故障。運維人(rén)員的工作(zuò)也會(huì)前置到産品設計(jì)階段,協助研發人(rén)員改造服務使其可(kě)以接入到自調度系統中。
在整個(gè)運維的發展過程中,希望所有(yǒu)的工作(zuò)都自動化起來(lái),減少(shǎo)人(rén)的重複工作(zuò),降低(dī)知識傳遞的成本,使我們的運維交付更高(gāo)效、更安全,使産品運行(xíng)更穩定。對于故障的處理(lǐ),也希望由事後處理(lǐ)變成提前發現,由人(rén)工處理(lǐ)變成系統自動容災。