運維平台
運維平台
運維職徠責貫穿了產品的生命周期,需要藉助自動化、智能化的平台幫助運維工程師以最低的成本和最快的速度完成面向用戶的服務交付和服務質量保障。運維平台主要由運維平台研發工程師理解業務需求后開發,主要包括:機器管理、資源管理、網路管理、架構基礎設施、部署平台、配置管理平台、數據管理平台、監控平台、容量管理、流量管理、故障管理、業務調度平台、工作流引擎、許可權管理、運維元數據管理和運維統一門戶。
下面從產品的生命周期角度介紹運維工程師需要交互的運維平台。
產品發布前運維工程師需要產品業務熟悉、產品架構設計評審、產品所需資源評估和申請。評審產品架構時,產品研發人員通過運維准入平台進行運維准入評審,例如SQL語句評審,程序發布包規範評審,程序監控方案評審等。
產品資源評估和申請時使用機器管理平台或者資源管理平台申請物理機或者虛擬機/容器資源;使用網路管理平台申請域名和IP。
產品發布時使用初始化平台進行運行環境初始化,使用部署平台進行程序部署,使用配置管理平台進行配置分發,使用數據配送平台進行數據分發。總之,完成了程序/配置/數據自動化發布,產品即可對外提供服務。產品迭代的過程中使用自動化平台進行程序、配置和數據的變更以完成產品功能的升級。
產品運行維護階段運維工程師需要處理以下事項:
• 排查服務隱患,處理服務故障
使用監控平台實時監測服務的運行狀況和資源消耗情況,根據日常服務運行報表評估服務整體運行狀態,發現服務隱患;接收監控平台產出的故障報警,參考監控平台的異常檢測事件、部署平台變更事件、網路管理平台產生的網路異常事件進行故障定位。故障定位后,使用故障管理平台中針對機房、網路、程序等問題定製的預案進行自動或手動的止損。
• 提高服務性能,優化服務成本
參考容量管理平台依據服務CPU、內存、QPS、響應時間計算的容量分析數據,參考流量管理平台的實時流量監測數據,發現服務瓶頸,優化服務性能。在保障服務質量的前提下,進行容量調整和流量調整,以最節省的機器資源,最便宜的網路帶寬為用戶提供高質量的服務。
產品下線時需要使用部署平台下線程序,使用機器管理/資源管理平台回收資源。
運維平台
基礎設施平台主要用於產品發布前,包括機器管理、資源管理、網路管理以及架構基礎設施。
• 機器管理
機器管理以自動化的流程管理機器,包括機器上架(機架)、下架(機架)、申請和故障修復等。
• 資源管理
資源管理管理的是虛擬機或者容器。私有雲一般使用虛擬化技術例如Cgroup,LXC將物理機虛擬出若干容器,以容器為單位進行服務實例資源的分配和調度,例如docker。公有雲一般使用openstack、xen、kvm將物理機虛擬為虛擬機,例如AWS的EC2,阿里雲的ECS,百度開放雲的BCC等。
• 網路管理
網路管理DNS、IP的申請和回收。
• 架構基礎設施
架構基礎設施包括但不局限於文件存儲、資料庫存儲、緩存服務、消息隊列等組件。各大公司的基礎架構研發團隊一般會研發一些基礎組件,例如Google的GFS,BigTable,MapReduce。當然還有一些開源的基礎組件可以使用,例如分散式計算類: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,內存,磁碟使用量)和網路數據(機房、網段狀態),並對這些指標進行異常檢測,以儀錶盤和通知(電話、簡訊、郵件)方式和運維工程師交互,幫助運維工程師進行日常排查發現服務隱患;幫助運維工程師快速發現業務異常,並藉助多維度指標分析(地域、運營商、機房多維度綜合分析)、事件關聯分析(指標異常事件、網路故障事件和變更事件等)等手段輔助故障診斷,快速定位問題。
監控管理通常和故障管理打通,為故障管理提供自動化預案執行的決策數據。業界開源的監控軟體有Ganglia,Nagios,Cacti,Zabbix;國內的監控產品有:監控寶、OneApm、Qmonitor(側重於資料庫監控);國外的監控產品有NewRelic ,AppDynamics。
• 容量管理
容量管理收集監控系統採集的服務相關的資源數據(例如CPU,內存,磁碟使用量)和性能數據(例如qps,響應時間),評估系統容量,發現系統瓶頸,並以服務擴容、縮容方式最大化服務性能,最小化服務成本。
• 流量管理
流量管理提供統一的流量接入方案,進行流量的接入和轉發,實施全局的流量調度(外網和內網流量調度)。流量管理還承擔產品的安全和防攻擊(黑名單,反DDoS攻擊,應用層防火牆)職責。
• 故障管理
故障管理實現故障快速定位和止損,提升服務穩定性。故障管理一般包括預案管理和故障記錄。預案主要應對以下場景,比如突發的用戶流量、網路攻擊、大規模網路故障、大規模程序故障、數據丟失等。故障記錄便於運維工程師事後的原因分析和問題挖掘。例如某個業務、某個基礎設施、某個機器經常性故障,就需要重點關注。通過調整產品部署策略、業務架構避免故障;或者總結故障預案,在故障發生時能夠自動化快速止損。
運維平台如此之多,在設計開發的過程中都必須以介面化、標準化、服務化的思維進行平台研發。這樣在代碼規範、介面規範、數據規範、穩定性高的平台之上就可以通過搭積木的方式快速構建更複雜業務調度平台。例如在資源管理平台、構建自動化平台、監控平台、流量管理平台、容量管理平台之上可以搭建Paas平台,實現服務實例的自動化擴容、縮容和故障自動遷移。各大互聯通公司都有自己的業務調度平台。例如Google內部的Brog,Omega(borg 2.0),facebook的Corona,tencent的 typhoon。開源的業務調度平台例如Google的Kubernetes和 Apache Mesos。
• 業務平台
業務平台服務於運維工程師的日常運維工作,主要包括工作流引擎、許可權管理、運維元數據管理和運維統一門戶。
• 工作流引擎
運維操作中需要多人協作處理的流程通常都需要發操作單。例如機器故障維修單、DNS變更操作單、資料庫訪問許可權申請單等。這些操作流程都需要工作流引擎的支持。
• 許可權管理
許可權管理平台,所有的運維操作都需要角色和用戶許可權管理。例如運維工程師對機器的操作許可權,對服務監控採集和報警策略的修改許可權,對服務部署變更的許可權等;例如運維經理對運維操作單的審批許可權。
• 元數據管理
元數據管理,包括機房、伺服器、服務、產品、人員信息以及他們之間的物理和業務拓撲關係等,所有的運維平台都需要此類信息。
• 運維統一門戶
運維統一門戶使得運維人員不必面對眾多運維繫統,運維門戶中的任務中心收集了運維工程師要處理的工作;運維門戶中的信息中心以儀錶盤的方式收集了運維工程師需要關注的業務狀態。