新浪微博平臺自動化運維演進之路

IT大咖說發表於2017-08-17

新浪微博平臺自動化運維演進之路

內容來源:2016年12月16日,微博產品資深運維架構師王關勝在“GIAC全球網際網路架構大會”進行《新浪微博平臺自動化運維演進之路》演講分享。IT大咖說作為獨家視訊合作方,經主辦方和講者審閱授權釋出。
閱讀字數: 2557 用時: 4分鐘

新浪微博平臺自動化運維演進之路

摘要

新浪微博是一個由新浪網推出,提供微型部落格服務類的社交網站。使用者可以通過網頁、WAP頁面、手機客戶端、手機簡訊、彩信釋出訊息或上傳圖片,是當下中國最火熱的社交APP。微博產品資深運維架構師王關勝給我們分享新浪微博平臺自動化運維演進之路。

嘉賓演講視訊

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

新浪微博平臺自動化運維演進之路

峰值應對:目標“無人值守”的擴縮容

由於近幾年突發的爆炸性事件增多,所以我們要做到擴縮容“無人值守”。

基於運維自動化之上再做“無人值守”就需要各種各樣的業務指標,而我們的監控可以收集所有的業務指標。有了詳細指標就可以做到“無人值守”。

總結:自動化核心——任務排程引擎

一個產品要想發展壯大,必須得有一套完整的任務通道。利用任務通道把所有運維相關的操作抽象為標準化的操作庫,加上流程引擎,然後再做統一的任務編排。

有了這四大核心內容,再做平臺或自動化思路就比較方便了。

今天要分享的就是這些,謝謝大家!

新浪微博平臺自動化運維演進之路

原文地址:t.cn/R9frEKf


相關文章