眼下自動化運維平臺的建設應當考慮的方向

天府雲創發表於2018-06-02

運維職責貫穿了產品的生命週期,需要藉助自動化、智慧化的平臺幫助運維工程師以最低的成本和最快的速度完成面向使用者的服務交付和服務質量保障。運維平臺主要由運維平臺研發工程師理解業務需求後開發,主要包括:機器管理、資源管理、網路管理、架構基礎設施、部署平臺、配置管理平臺、資料管理平臺、監控平臺、容量管理、流量管理、故障管理、業務排程平臺、工作流引擎、許可權管理、運維後設資料管理和運維統一門戶。

運維平臺概述


運維職責貫穿了產品的生命週期,需要藉助自動化、智慧化的平臺幫助運維工程師以最低的成本和最快的速度完成面向使用者的服務交付和服務質量保障。運維平臺主要由運維平臺研發工程師理解業務需求後開發。下面從產品的生命週期角度介紹運維工程師需要互動的運維平臺。

產品釋出前

產品釋出前運維工程師需要產品業務熟悉、產品架構設計評審、產品所需資源評估和申請。評審產品架構時,產品研發人員通過運維准入平臺進行運維准入評審,例如SQL語句評審,程式釋出包規範評審,程式監控方案評審等。
產品資源評估和申請時使用機器管理平臺或者資源管理平臺申請物理機或者虛擬機器/容器資源;使用網路管理平臺申請域名和IP。

產品釋出

產品釋出時使用初始化平臺進行執行環境初始化,使用部署平臺進行程式部署,使用配置管理平臺進行配置分發,使用資料配送平臺進行資料分發。總之,完成了程式/配置/資料自動化釋出,產品即可對外提供服務。產品迭代的過程中使用自動化平臺進行程式、配置和資料的變更以完成產品功能的升級。

產品執行維護

產品執行維護階段運維工程師需要處理以下事項:
  • 排查服務隱患,處理服務故障
使用監控平臺實時監測服務的執行狀況和資源消耗情況,根據日常服務執行報表評估服務整體執行狀態,發現服務隱患;接收監控平臺產出的故障報警,參考監控平臺的異常檢測事件、部署平臺變更事件、網路管理平臺產生的網路異常事件進行故障定位。故障定位後,使用故障管理平臺中針對機房、網路、程式等問題定製的預案進行自動或手動的止損。
  • 提高服務效能,優化服務成本
參考容量管理平臺依據服務CPU、記憶體、QPS、響應時間計算的容量分析資料,參考流量管理平臺的實時流量監測資料,發現服務瓶頸,優化服務效能。在保障服務質量的前提下,進行容量調整和流量調整,以最節省的機器資源,最便宜的網路頻寬為使用者提供高質量的服務。

產品下線

產品下線時需要使用部署平臺下執行緒序,使用機器管理/資源管理平臺回收資源。

運維平臺分類介紹


產品生命週期中使用的運維平臺按照其所處的層次分為如下幾類:基礎設施平臺、構建自動化平臺、資料運營平臺、業務排程平臺和業務平臺 [1]  。

基礎設施平臺

基礎設施平臺主要用於產品釋出前,包括機器管理、資源管理、網路管理以及架構基礎設施。
  • 機器管理
機器管理以自動化的流程管理機器,包括機器上架(機架)、下架(機架)、申請和故障修復等。
  • 資源管理
資源管理管理的是虛擬機器或者容器。私有云一般使用虛擬化技術例如Cgroup,LXC將物理機虛擬出若干容器,以容器為單位進行服務例項資源的分配和排程,例如docker。公有云一般使用openstackxenkvm將物理機虛擬為虛擬機器,例如AWS的EC2,阿里雲的ECS,百度開放雲的BCC等。
  • 網路管理
網路管理DNS、IP的申請和回收。
  • 架構基礎設施
架構基礎設施包括但不侷限於檔案儲存、資料庫儲存、快取服務、訊息佇列等元件。各大公司的基礎架構研發團隊一般會研發一些基礎元件,例如Google的GFSBigTableMapReduce。當然還有一些開源的基礎元件可以使用,例如分散式計算類:mapreduce、spark、storm、hive;分散式儲存類:hdfs、hbase、cassandra、MongoDB;快取類:memcached,redis;訊息佇列類:ActiveMQ。此外,公有云也會提供類似的基礎設施,例如AWS除了賣EC2還賣RDS(Relational Database Services),EMR(Elastic MapReduce),S3(Simple Storage Service),EBS(Elastic Block Service),SQS(Simple Queue service),SES(Simple Email Service)等。

構建自動化平臺

構建自動化平臺服務於產品釋出,包括程式、配置和資料的變更。構建自動化平臺提供小流量或者分級釋出機制控制產品升級的風險,保障產品的持續交付。構建自動化平臺包括部署平臺、配置管理平臺和資料管理平臺。
部署平臺包括部署包版本的管理、部署執行器、部署排程平臺。常見的部署執行器例如ansible、sshpt。配置平臺包括配置版本管理,配置分發工具以及配置分發策略平臺。常見的配置分發工具包括puppet、cfengine、Chef。資料管理平臺包括資料版本管理,資料傳輸工具以及資料分發策略平臺。開源的P2P資料傳輸工具例如utorrent。

資料運營平臺

資料運營平臺服務於產品執行維護操作,包括監控平臺、容量管理、流量管理和故障管理。
  • 監控平臺
監控平臺採集、儲存、計算服務相關的業務(例如收入,流量,響應時間)、系統(cache命中率,佇列大小,程式控制程式碼等)、機器/容器(CPU,記憶體,磁碟使用量)和網路資料(機房、網段狀態),並對這些指標進行異常檢測,以儀表盤和通知(電話、簡訊、郵件)方式和運維工程師互動,幫助運維工程師進行日常排查發現服務隱患;幫助運維工程師快速發現業務異常,並藉助多維度指標分析(地域、運營商、機房多維度綜合分析)、事件關聯分析(指標異常事件、網路故障事件和變更事件等)等手段輔助故障診斷,快速定位問題。
監控管理通常和故障管理打通,為故障管理提供自動化預案執行的決策資料。業界開源的監控軟體有GangliaNagiosCactiZabbix;國內的監控產品有:監控寶OneApm、Qmonitor(側重於資料庫監控);國外的監控產品有NewRelic [2]  ,AppDynamics [3]  。
  • 容量管理
容量管理收集監控系統採集的服務相關的資源資料(例如CPU,記憶體,磁碟使用量)和效能資料(例如qps,響應時間),評估系統容量,發現系統瓶頸,並以服務擴容、縮容方式最大化服務效能,最小化服務成本。
  • 流量管理
流量管理提供統一的流量接入方案,進行流量的接入和轉發,實施全域性的流量排程(外網和內網流量排程)。流量管理還承擔產品的安全和防攻擊(黑名單,反DDoS攻擊,應用層防火牆)職責。
  • 故障管理
故障管理實現故障快速定位和止損,提升服務穩定性。故障管理一般包括預案管理和故障記錄。預案主要應對以下場景,比如突發的使用者流量、網路攻擊、大規模網路故障、大規模程式故障、資料丟失等。故障記錄便於運維工程師事後的原因分析和問題挖掘。例如某個業務、某個基礎設施、某個機器經常性故障,就需要重點關注。通過調整產品部署策略、業務架構避免故障;或者總結故障預案,在故障發生時能夠自動化快速止損。

業務排程平臺

運維平臺如此之多,在設計開發的過程中都必須以介面化、標準化、服務化的思維進行平臺研發。這樣在程式碼規範、介面規範、資料規範、穩定性高的平臺之上就可以通過搭積木的方式快速構建更復雜業務排程平臺。例如在資源管理平臺、構建自動化平臺、監控平臺、流量管理平臺、容量管理平臺之上可以搭建Paas平臺,實現服務例項的自動化擴容、縮容和故障自動遷移。各大互聯通公司都有自己的業務排程平臺。例如Google內部的Brog,Omega(borg 2.0),facebook的Corona,tencent的 typhoon。開源的業務排程平臺例如Google的Kubernetes和 Apache Mesos
  • 業務平臺
業務平臺服務於運維工程師的日常運維工作,主要包括工作流引擎、許可權管理、運維後設資料管理和運維統一門戶。
  • 工作流引擎
運維操作中需要多人協作處理的流程通常都需要發操作單。例如機器故障維修單、DNS變更操作單、資料庫訪問許可權申請單等。這些操作流程都需要工作流引擎的支援。
  • 許可權管理
許可權管理平臺,所有的運維操作都需要角色和使用者許可權管理。例如運維工程師對機器的操作許可權,對服務監控採集和報警策略的修改許可權,對服務部署變更的許可權等;例如運維經理對運維操作單的審批許可權。
  • 後設資料管理
後設資料管理,包括機房、伺服器、服務、產品、人員資訊以及他們之間的物理和業務拓撲關係等,所有的運維平臺都需要此類資訊。
  • 運維統一門戶
運維統一門戶使得運維人員不必面對眾多運維繫統,運維門戶中的任務中心收集了運維工程師要處理的工作;運維門戶中的資訊中心以儀表盤的方式收集了運維工程師需要關注的業務狀態。
參考資料

相關文章