運維人員對公司互聯網業務所依賴的基礎設施、基礎服務、線上業務進行穩定性增強,進行平常巡檢發現服務可能存在的隱患,對總體架構進行優化以屏蔽常見的運行故障,多數據中接入提升業務的容災能力,經過監控、日誌分析等技術手段,及時發現和響應服務故障,減小服務中斷的時間,使公司的互聯網業務符合預期的可用性要求,持續穩定地爲用戶提供服務。ios
運維工做分類數據庫
運維的工做方向比較多,隨着業務規模的不斷髮展,越成熟的互聯網公司,運維崗位會劃分得越細。當前不少大型的互聯網公司,在初創時期只有系統運維,隨着 模、服務質量的 要求,也逐漸進行了工做細分。通常狀況下運維團隊的工做分類(見圖1-1)和職責以下。安全
系統運維性能優化
系統運維負責IDC、網絡、CDN和基礎服務的建設(LVS、NTP、DNS);負責資產管理,服務器選型、交付和維修。詳細的工做職責以下:服務器
IDC數據中心建設網絡
收集業務需求,預估將來數據中心的發展規模,從骨幹網的分佈,數據中心建築,以及Internet接入、網絡攻擊防護能力、擴容能力、空間預留、外接專線能力、現場服務支撐能力等方面評估選型數據中心。負責數據中心的建設、現場維護工做。架構
網絡建設負載均衡
設計及規劃生產網絡架構,這裏麪包括:數據中心網絡架構、傳輸網架構、CDN網絡架構等,以及網絡調優等平常運維工做。運維
LVS負載均衡和SNAT建設工具
LVS是整個站點架構中的流量入口,根據網絡規模和業務需求,構建負載均衡集羣;完成網絡與業務服務器的銜接,提供高性能、高可用的負載調度能力,以及統一的網絡層防攻擊能力;SNAT集中提供數據中心的公網訪問服務,經過集羣化部署,保證出網服務的高性能與高可用。
CDN規劃和建設
CDN工做劃分爲第三方和自建兩部分。創建第三方CDN的選型和調度控制;根據業務發展趨勢,規劃CDN新節點建設佈局;完善CDN業務及監控,保障CDN系統穩定、高效運行;分析業務加速頻道的文件特性和數量,制定最優的加速策略和資源匹配;負責用戶劫持等CDN平常故障排查工做。
服務器選型、交付和維護
負責服務器的測試選型,包含服務器整機、部件的基礎性測試和業務測試,下降整機功率,提高機架部署密度等。結合對公司業務的瞭解,推廣新硬件、新方案減小業務的服務器投入規模。負責服務器硬件故障的診判定位,服務器硬件監控、健康檢查工具的開發和維護。
OS、內核選型和OS相關維護工做
負責總體平臺的OS選型、定製和內核優化,以及Patch的更新和內部版本發佈;創建基礎的YUM包管理和分發中心,提供經常使用包版本庫;跟進平常各種OS相關故障;針對不一樣的業務類型,提供定向的優化支持。
資產管理
記錄和管理運維相關的基礎物理信息,包括數據中心、網絡、機櫃、服務器、ACL、IP等各類資源信息,制定有效的流程,確保信息的準確性;開放API接口,爲自動化運維提供數據支持。
基礎服務建設
業務對DNS、NTP、SYSLOG等基礎服務的依賴很是高,須要設計高可用架構避免單點,提供穩定的基礎服務。
應用運維
應用運維負責線上服務的變動、服務狀態監控、服務容災和數據備份等工做,對服務進行例行排查、故障應急處理等工做。詳細的工做職責以下所述。
設計評審
在產品研發階段,參與產品設計評審,從運維的角度提出評審意見,使服務知足運維准入的高可用要求。
服務管理
負責制定線上業務升級變動及回滾方案,並進行變動實施。掌握所負責的服務及服務間關聯關係、服務依賴的各類資源。可以發現服務上的缺陷,及時通報並推動解決。制定服務穩定性指標及准入標準,同時不斷完善和優化程序和系統的功能、效率,提升運行質量。完善監控內容,提升報警準確度。在線上服務出現故障時,第一時間響應,對已知線上故障能按流程進行通報並按預案執行,未知故障組織相關人員聯合排障。
資源管理
對各服務的服務器資產進行管理,梳理服務器資源情況、數據中心分佈狀況、網絡專線及帶寬狀況,可以合理使用服務器資源,根據不一樣服務的需求,分配不一樣配置的服務器,確保服務器資源的充分利用。
例行檢查
制定服務例行排查點,並不斷完善。根據制定的服務排查點,對服務進行按期檢查。對排查過程當中發現的問題,及時進行追查,排除可能存在的隱患。
預案管理
肯定服務所需的各項監控、系統指標的閾值或臨界點,以及出現該狀況後的處理預案。創建和更新服務預案文檔,並根據平常故障狀況不斷補充完善,提升預案完備性。可以制定和評審各種預案,週期性進行預案演練,確保預案的可執行性。
數據備份
制定數據備份策略,按規範進行數據備份工做。保證數據備份的可用性和完整性,按期開展數據恢復性測試。
數據庫運維
數據庫運維負責數據存儲方案設計、數據庫表設計、索引設計和SQL優化,對數據庫進行變動、監控、備份、高可用設計等工做。詳細的工做職責以下所述。
設計評審
在產品研發初始階段,參與設計方案評審,從DBA的角度提出數據存儲方案、庫表設計方案、SQL開發標準、索引設計方案等,使服務知足數據庫使用的高可用、高性能要求。
容量規劃
掌握所負責服務的數據庫的容量上限,清楚地瞭解當前瓶頸點,當服務還未到達容量上限時,及時進行優化、分拆或者擴容。
數據備份與災備
制定數據備份與災備策略,按期完成數據恢復性測試,保證數據備份的可用性和完整性。
數據庫監控
完善數據庫存活和性能監控,及時瞭解數據庫運行狀態及故障。
數據庫安全
建設數據庫帳號體系,嚴格控制帳號權限與開放範圍,下降誤操做和數據泄露的風險;增強離線備份數據的管理,下降數據泄露的風險。
數據庫高可用和性能優化
對數據庫單點風險和故障設計相應的切換方案,下降故障對數據庫服務的影響;不斷對數據庫總體性能進行優化,包括新存儲方案引進、硬件優化、文件系統優化、數據庫優化、SQL優化等,在保障成本不增長或者少許增長的狀況下,數據庫能夠支撐更多的業務請求。
自動化系統建設
設計開發數據庫自動化運維繫統,包括數據庫部署、自動擴容、分庫分表、權限管理、備份恢復、SQL審覈和上線、故障切換等功能。
運維研發
運維研發負責通用的運維平臺設計和研發工做,如:資產管理、監控系統、運維平臺、數據權限管理系統等。提供各類API供運維或研發人員使用,封裝更高層的自動化運維繫統。詳細的工做職責以下所述。
運維平臺
記錄和管理服務及其關聯關係,協助運維人員自動化、流程化地完成平常運維操做,包括機器管理、重啓、更名、初始化、域名管理、流量切換和故障預案實施等。
監控系統
負責監控系統的設計、開發工做,完成公司服務器和各類網絡設備的資源指標、線上業務運行指標的收集、告警、存儲、分析、展現和數據挖掘等工做,持續提升告警的及時性、準確性和智能性,促進公司服務器資源的合理化調配。
自動化部署系統
參與部署自動化系統的開發,負責自動化部署系統所須要的基礎數據和信息,負責權限管理、API開發、Web端開發。結合雲計算,研發和提供PaaS相關高可用平臺,進一步提升服務的部署速度和用戶體驗,提高資源利用率。
運維安全
運維安全負責網絡、系統和業務等方面的安全加固工做,進行常規的安全掃描、滲透測試,進行安全工具和系統研發以及安全事件應急處理。詳細的工做職責以下所述。
安全制度創建
根據公司內部的具體流程,制定切實可行,且行之有效的安全制度。
安全培訓
按期向員工提供具備針對性的安全培訓和考覈,在全公司內創建安全負責人制度。
風險評估
經過黑白盒測試和檢查機制,按期產生對物理網絡、服務器、業務應用、用戶數據等方面的整體風險評估結果。
安全建設
根據風險評估結果,加固最薄弱的環節,包括設計安全防線、部署安全設備、及時更新補丁、防護病毒、源代碼自動掃描和業務產品安全諮詢等。爲了下降可能泄露數據的價值,經過加密、匿名化、混淆數據,乃至按期刪除等技術手段和流程來達到目的。
安全合規
爲了知足例如支付牌照等合規性要求,安全團隊承擔着安全合規的對外接口人工做。
應急響應
創建安全報警系統,經過安全中心收集第三方發現的安全問題,組織各部門對已經發現的安全問題進行修復、影響面評估、過後安全緣由追查。
運維工做發展過程
早期的運維團隊在人員較少的狀況下,主要是進行數據中心建設、基礎網絡建設、服務器採購和服務器安裝交付工做。幾乎不多涉及線上服務的變動、監控、管理等工做。這個時候的運維團隊更多的屬於基礎建設的角色,提供一個簡單、可用的網絡環境和系統環境便可。
隨着業務產品的逐漸成熟,對於服務質量方面就有了更高的要求。這個時候的運維團隊還會承擔一些服務器監控的工做,同時會負責LVS、Nginx等與業務邏輯無關的4/7層運維工做。這個時候服務變動更多的是逐臺的手工操做,或者有一些簡單批量腳本的出現。監控的焦點更多的在服務器狀態和資源使用狀況上,對服務應用狀態的監控幾乎不多,監控更多的使用各類開源系統如Nagios、Cacti等。
因爲業務規模和複雜度的持續增長,運維團隊會逐漸劃分爲應用運維和系統運維兩大塊。應用運維開始接手線上業務,逐步開展服務監控梳理、數據備份以及服務變動的工做。隨着對服務的深刻,應用運維工程師有能力開始對服務進行一些簡單的優化。同時,爲了應對天天大量的服務變動,咱們也開始編寫各種運維工具,針對某些特定的服務可以很方便的批量變動。隨着業務規模的增大,基礎設施因爲容量規劃不足或抵禦風險能力較弱致使的故障也愈來愈多,迫使運維人員開始將更多的精力投入到多數據中心容災、預案管理的方向上。
業務規模達到必定程度後,開源的監控系統在性能和功能方面,已經沒法知足業務需求;大量的服務變動、複雜的服務關係,之前靠人工記錄、工具變動的方式無論在效率仍是準確性方面也都沒法知足業務需求;在安全方面也出現了各類大大小小的事件,迫使咱們投入更多的精力在安全防護上。逐漸的,運維團隊造成以前提到的5個大的工做分類,每一個分類都須要有專精的人才。這個時候系統運維更專一於基礎設施的建設和運維,提供穩定、高效的網絡環境,交付服務器等資源給應用運維工程師。應用運維更專一於服務運行狀態和效率。數據庫運維屬於應用運維工做的細化,更專一於數據庫領域的自動化、性能優化和安全防護。運維研發和運維安全提供各種平臺、工具,進一步提高運維工程師的工做效率,使業務服務運行得更加穩定、高效和安全。
咱們將運維發展過程劃分爲4個階段,如圖所示。
手工管理階段
業務流量不大,服務器數量相對較少,系統複雜度不高。對於平常的業務管理操做,你們更多的是逐臺登陸服務器進行手工操做,屬於各自爲戰,每一個人都有本身的操做方式,缺乏必要的操做標準、流程機制,好比業務目錄環境都是各式各樣的。
工具批量操做階段
隨着服務器規模、系統複雜度的增長,全人工的操做方式已經不能知足業務的快速發展須要。所以,運維人員逐漸開始使用批量化的操做工具,針對不一樣操做類型出現了不一樣的腳本程序。但各團隊都有本身的工具,每次操做需求發生變化時都須要調整工具。這主要是由於對於環境、操做的規範不夠,致使可程序化處理能力較弱。此時,雖然效率提高了一部分,但很快又遇到了瓶頸。操做的質量並無太多的提高,甚至可能由於批量執行而致使更大規模的問題出現。咱們開始創建大量的流程規範,好比複查機制,先上線一臺服務器觀察10分鐘後再繼續後面的操做,一次升級完成後至少要觀察20分鐘等。這些主要仍是靠人來監督和執行,但在實際過程當中執行每每不到位,反而下降了工做效率。
平臺管理階段
在這個階段,對於運維效率和誤操做率有了更高的要求,咱們決定開始建設運維平臺,經過平臺承載標準、流程,進而解放人力和提升質量。這個時候對服務的變動動做進行了抽象,造成了操做方法、服務目錄環境、服務運行方式等統一的標準,如程序的啓停接口必須包括啓動、中止、重載等。經過平臺來約束操做流程,如上面提到的上線一臺服務器觀察10分鐘。在平臺中強制設定暫停檢查點,在第一臺服務器操做完成後,須要運維人員填寫相應的檢查項,而後才能夠繼續執行後續的部署動做。
系統自調度階段
更大規模的服務數量、更復雜的服務關聯關係、各個運維平臺的林立,原有的將批量操做轉化成平臺操做的方式已經再也不適合,須要對服務變動進行更高一層的抽象。將每一臺服務器抽象成一個容器,由調度系統根據資源使用狀況,將服務調度、部署到合適的服務器上,自動化完成與周邊各個運維繫統的聯動,好比監控系統、日誌系統、備份系統等。經過自調度系統,根據服務運行狀況動態伸縮容量,可以自動化處理常見的服務故障。運維人員的工做也會前置到產品設計階段,協助研發人員改造服務使其能夠接入到自調度系統中。
在整個運維的發展過程當中,但願全部的工做都自動化起來,減小人的重複工做,下降知識傳遞的成本,使咱們的運維交付更高效、更安全,使產品運行更穩定。對於故障的處理,也但願由過後處理變成提早發現,由人工處理變成系統自動容災。