新浪微博平台自動化運維演進之路
內容來源:2016年12月16日,微博產品資深運維架構師王關勝在“GIAC全球互聯網架構大會”進行《新浪微博平台自動化運維演進之路》演講分享。IT大咖說作為獨家視頻合作方,經主辦方和講者審閱授權發布。
閱讀字數: 2557 用時: 4分鍾
點擊嘉賓演講視頻觀看
Sina Weibo業務介紹
微博業務簡介
微博平台是屬於偏後端的一個產品,它所提供的服務就是固定量的接口,比如信息流裏的接口、用戶接口、關係接口等等。
微博核心業務
微博最核心的產品就是信息流,以信息流為中心出發,它周邊的用戶、關係以及通知等主路徑的服務都在內部平台,屬於核心服務。
微博業務部署結構
我們對於核心業務要求多機房部署,電信和聯通機房都部署了完整的鏈路。
服務保障——服務治理(開發主導)
在這樣一個複雜的架構下,運維和開發需要緊密配合。我們內部組織架構調整後,運維團隊屬於開發團隊,配合起來就非常緊密。
內部分為了兩個方向。第一個方向的部分是開發主導,運維參與。比如建立完善的SLA體係,我們這個SLA體係做在應用層上,從開發和運維層麵在代碼上做一些改造,在數據層麵上做收集。降級/封禁也是相似的方法,開發在代碼上做降級/封禁的入口,具體提供的功能和平台是在運維做的係統裏。
服務保障——防禦體係(運維主導)
第二個方向就是由運維全程主導,開發參與。例如容量、監控、幹預還有運維的部署架構。
架構要做到極簡、穩健、美麗;
監控要求具有實時性,報警快、準,覆蓋全麵;
容量的性能要好,冗餘足夠,能快速動態擴容,有壓測、容量預警;
幹預的預案要全,手段多,操作快速,方案細致,要做到幹預行之有效。
整體的防禦體係要由標準化轉化為可視化、自動化,最後升級到智能化。
微博平台運維進化曆程
微博平台的運維進化曆程大概分成四個階段。
最早是人工階段,所有的腳本都要依賴於人工,也就是所謂的腳本時代;
第二階段是工具係統。當規模有一定的成長之後,做到了工具係統化和運維標準化;
下一個階段就是綜合運維平台。要把很多運維係統做成一個運維平台,就需要讓係統平台化、數據API化和運維服務化;
目前我們比較推崇的是利用混合雲DCP的思路來做一些係統。
百台規模運維標準化
百台規模——一切皆需求
這個階段主要的工作就是日常的需求對接、完善監控警報、代碼的發布和回滾、還有服務的擴縮容以及之前的一些配管工具。
這些工作都要做到快速迭代、快速上線、快速響應。
百台規模——需求達成
當時隻需要利用Python、Perl、Shell等去寫各種腳本,日常的需求基本都能達成。
我們也在研究一些開源的工具。當時在業務部署的層麵最開始是用腳本,後來發現腳本比較麻煩,就改用配管。
百台規模——標準化梳理
配管是該階段比較核心的內容,需求經過抽象可分為三類,機器上的基礎配置、機房相關和業務相關。
所有配置要能通過標準化的配管工具管理起來,每一類服務都進行標準化梳理,就能達到我們這個階段的目標了。
百台規模——CMDB&配管
新浪在很多部門都會用到Puppet來做配置管理工作。我們當時借鑒了這樣一套配管工具,把所有能通過Puppet做的需求在標準化之後盡量用到Puppet。這樣就能基本上滿足那個階段的需求。
百台規模——配管UI化
在三大需求之上,我們也給Puppet做了完善管理的UI。與Puppet相關所有配置的需求不再需要通過手工管理,直接UI化,就可以在頁麵上修改配置,把配置管理起來,再通過Puppet的API下發。滿足了當時的需求。
千台規模平台化&可視化
千台規模——挑戰性加大
我們麵臨了很多的挑戰:服務器規模線性增長;業務單元線性增長;係統變更及代碼上線次數線性增長;大型運營活動及三節保障;每日不定時段的PUSH。所以要做一些工具來滿足需求。
但同時也出現了人力成本線性增長、差異化加劇導致認知成本線性增長的問題。
千台規模——構建運維平台
我們當時內部做了一套比較完善的運維管理係統Jpool。它是一個通用的集群管理平台,核心模塊包含了用戶權限、資源管理、配置管理、部署管理、任務管理、Nginx變更管理、降級/封殺管理和日誌查詢平台。
Dispatch和Puppet Master組成了這個平台裏最核心的部分。Puppet Master管理了配管方麵,Dispatch是一個分布式的命令通道。
千台規模——運維平台Joopl框架
千台規模——Joopl核心組件
Dispatch是一個分布式任務調度引擎。在Dispatch裏有三大任務線程,任務處理線程、與agent連接的通信協議層及通信線程和主線程。
千台規模——統一運維平台
整合工單流程變更、統一配管係統、統一負載均衡係統、持續集成和監控報警係統這些工具係統,形成完整的運維平台。
平台建成後還能在上麵做一些日常的變更手段,例如Puppet/Nginx變更、服務的部署變更、服務降級/封禁、擴容/縮容以及業務docker化。還有其它的像流量切換、限流、數據修複等等都是可以在運維平台上完成的。
萬台規模自動化&智能化
萬台規模——麵臨的核心挑戰
針對一些突發的娛樂事件,我們需要有峰值應對才能保證服務的穩定。
在這個階段我們要設置混合雲係統,主要從四個點出發。
最核心的是峰值應對,可以進行快速擴容,及時回收;
其次是成本優化,可伸縮的業務利用公有雲,私有雲的內部進行彈性部署;
打通多語言環境,全公司統一平台,做到運維統一化;
業務快速迭代,基礎設施標準化,提高發布效率。
萬台規模——峰值應對——混合雲DCP
峰值應對:目標“無人值守”的擴縮容
由於近幾年突發的爆炸性事件增多,所以我們要做到擴縮容“無人值守”。
基於運維自動化之上再做“無人值守”就需要各種各樣的業務指標,而我們的監控可以收集所有的業務指標。有了詳細指標就可以做到“無人值守”。
總結:自動化核心——任務調度引擎
一個產品要想發展壯大,必須得有一套完整的任務通道。利用任務通道把所有運維相關的操作抽象為標準化的操作庫,加上流程引擎,然後再做統一的任務編排。
有了這四大核心內容,再做平台或自動化思路就比較方便了。
今天要分享的就是這些,謝謝大家!
相關推薦
XpmJS —— 小程序後端開發思考和實踐
魅族推薦平台架構
近期活動
活動 | 區塊鏈技術如何改變我們的生活
活動 | 一起出發,吹響Container+的號角
最後更新:2017-08-19 01:32:51