騰訊十年運(yùn)維老兵:運(yùn)維團(tuán)隊(duì)的五個(gè)“殺手锏”
原創(chuàng)【51CTO.com原創(chuàng)稿件】回顧運(yùn)維十年,如有一次重來(lái)的機(jī)會(huì),什么才是最重要的?什么才是團(tuán)隊(duì)需要優(yōu)先做的?才能在未來(lái)支撐我們更好的前行。
“十年"不茍且的運(yùn)維之路
加入騰訊已十年的運(yùn)維老兵趙建春,回顧這十年:
-
2004年:加入騰訊,做賀卡開(kāi)發(fā);
-
2005年:加入QQ空間開(kāi)發(fā)團(tuán)隊(duì),負(fù)責(zé)留言版模塊;
-
2006年~至今:公司組織架構(gòu)調(diào)整,接觸運(yùn)維工作。
期間,他帶領(lǐng)運(yùn)維團(tuán)隊(duì)負(fù)責(zé)QQ延伸出來(lái)的各種社群的運(yùn)維和維護(hù),包括QQ空間、QQ音樂(lè)、QQ會(huì)員、QQ秀等一系列的QQ產(chǎn)品。團(tuán)隊(duì)89個(gè)人,維護(hù)了10萬(wàn)家服務(wù)器。經(jīng)歷的大事件有: 紅米在QQ空間首發(fā)時(shí),90 秒賣出 10 萬(wàn)臺(tái)設(shè)備,獲得1億點(diǎn)贊; 天津大爆炸事件,把天津 2 億多活躍用戶,從天津快速調(diào)到深圳以及上海; 春節(jié)紅包準(zhǔn)備工作,2016年比2015年的紅包訪問(wèn)量增長(zhǎng)了10倍+,快速的擴(kuò)充了 5000 臺(tái)設(shè)備,***訪問(wèn)量達(dá)到 477 萬(wàn)次/秒。 不要讓自己變成一個(gè)救火隊(duì)員 作為運(yùn)維,最重要的是先保證自己做的系統(tǒng)可靠、不會(huì)輕易出錯(cuò),不要讓自己變成一個(gè)救火隊(duì)員。可靠之后,就要用更多時(shí)間去解決效率問(wèn)題,讓工作變得更加高效,追求更高的目標(biāo)。 對(duì)團(tuán)隊(duì)工作幫助***的是什么? 資源管理:把寫出來(lái)的程序和代碼,進(jìn)行清晰劃分和分類,對(duì)每個(gè)資源采用不同形式進(jìn)行搭建; 容錯(cuò)方案:在維護(hù)海量服務(wù)、運(yùn)維過(guò)程中出現(xiàn)故障時(shí),確保不能影響項(xiàng)目服務(wù),服務(wù)器要做到及時(shí)處理; 統(tǒng)一架構(gòu) CMDBA:把一個(gè)業(yè)務(wù)模塊上所有依賴資源全部登記進(jìn)去;同時(shí)如果做快速?zèng)Q策和調(diào)度,還需要有效的監(jiān)控。 DLP:內(nèi)部定義的一個(gè)非常關(guān)鍵的監(jiān)控,這個(gè)點(diǎn)發(fā)生后,可以知道哪里出現(xiàn)故障; 入口監(jiān)控:告知出現(xiàn)故障的根源在哪兒,容錯(cuò)方案的 L5 是用來(lái)解決容錯(cuò)、灰度,路由等。 運(yùn)維團(tuán)隊(duì)的五個(gè)“殺手锏” L5 系統(tǒng) 世界上管理服務(wù)器最多的系統(tǒng) 運(yùn)營(yíng)管理系統(tǒng)管理了上億服務(wù)器,脈絡(luò)非常清晰,根本不會(huì)出現(xiàn)混亂。L5 系統(tǒng)(上圖)也類似于 DNS 系統(tǒng),有一排能提供的服務(wù)模塊,從而解決的單點(diǎn)問(wèn)題。
L5 如何做容錯(cuò)?
L5-主機(jī)/接口級(jí)的容錯(cuò)原理
L5 有由 L5、DNS 和 L5、agent 兩部分構(gòu)成。CGI 通過(guò)給模塊提 ID,根據(jù)模塊下設(shè)備的成功率和延遲情況,通過(guò) IP+PROT 給 CGI 一個(gè)反饋,訪問(wèn)之后,通過(guò)成功率和延遲情況,把數(shù)據(jù)上報(bào)給了 L5agent,然后做統(tǒng)計(jì)數(shù)據(jù)。 當(dāng)發(fā)現(xiàn)失敗率特別低的時(shí)踢掉。當(dāng)發(fā)現(xiàn)成功率和失敗率有一定下降,會(huì)把訪問(wèn)權(quán)重降低,從而達(dá)到容錯(cuò)和負(fù)載均衡的作用。 可以注冊(cè)一個(gè)模塊,加多臺(tái)設(shè)備,形成容錯(cuò)效果。如發(fā)現(xiàn)一臺(tái)機(jī)器失敗率很高,就把它踢掉。它成功率恢復(fù)過(guò)來(lái),還可以再加回來(lái)。
新加一臺(tái)服務(wù)器設(shè)計(jì)它的權(quán)重為 1,假如之前的是 100,可以逐漸上線。還可以給它一個(gè)得分,得分下降的時(shí)候,快速把它踢掉。L5 具有灰度、容錯(cuò)、路由、負(fù)載均衡的能力。
L5 對(duì)運(yùn)維團(tuán)隊(duì)有哪些幫助? 減少了 80~90% 的日常故障; 不再需要頻繁的變更 ip+port(也是故障源); 同過(guò)名字便利的服務(wù)上下線; 通過(guò)權(quán)重灰度上線; 模塊訪問(wèn)關(guān)系可幫助定位根源故障; 接口的延遲和失敗率可用來(lái)監(jiān)控; 集容錯(cuò)、負(fù)載均衡、路由、灰度、監(jiān)控能力于一身。 統(tǒng)一框架和架構(gòu) 團(tuán)隊(duì)里有上千號(hào)開(kāi)發(fā)同事,每年會(huì)有大量畢業(yè)生加入,也會(huì)有社交同事。進(jìn)來(lái)以后,都希望為平臺(tái)做更多的代碼貢獻(xiàn)、展現(xiàn)自己的技術(shù)實(shí)力,亦或是提高自己。 那么,問(wèn)題來(lái)了。在開(kāi)發(fā)過(guò)程中,如下圖,有管道、消息隊(duì)列、信息文件鎖、記錄鎖、文件影射內(nèi)存、還有迭代服務(wù)器 Select poll Io 等,這些是用各種各樣技術(shù)組合生產(chǎn)出來(lái)的代碼,交給團(tuán)隊(duì)維護(hù),數(shù)以萬(wàn)計(jì)不同性格的服務(wù)器,要掌握得非常好,了解它的工作機(jī)制和原理,更好的維護(hù)它基本上是不可能的。
那怎么辦呢?把網(wǎng)絡(luò)通訊部分列成一個(gè)標(biāo)準(zhǔn)框架,提高它的通訊效率,統(tǒng)一維護(hù)。
統(tǒng)一框架
業(yè)務(wù)邏輯部分用 SO 動(dòng)態(tài)庫(kù)方式編寫與框架分離部署,類似 Web 服務(wù)器上的CGI。接入層用 QZHTTP,邏輯層是 SPP 和 SF 的框架。
作為社區(qū)類服務(wù),雖然用戶的熱點(diǎn)并不是很集中,但數(shù)據(jù)量、訪問(wèn)量還是很大。大量用 CKV 存儲(chǔ),同時(shí)針對(duì)訪問(wèn)量非常大的問(wèn)題,如說(shuō)用戶沒(méi)有開(kāi)通空間,游戲用戶,會(huì)員等標(biāo)記,之后均做一個(gè)定位,形成一個(gè)高訪問(wèn)量的模塊即可。
如下圖,是一個(gè)架構(gòu)體系:
-
接入層是 TGW,流量從它進(jìn)、從它出;
-
中間層,利用 L5 進(jìn)行調(diào)度;
存儲(chǔ)層,因?yàn)槊恳粋€(gè)存儲(chǔ)模塊要分耗段,故加入 Access,從上到下把技術(shù)架構(gòu)進(jìn)行了統(tǒng)一規(guī)范,同時(shí)在組織上也通過(guò)接入邏輯運(yùn)維層,進(jìn)行標(biāo)準(zhǔn)化的維護(hù)。
統(tǒng)一框架對(duì)運(yùn)維有什么幫助?
網(wǎng)絡(luò)框架和業(yè)務(wù)邏輯 SO 分離管理、運(yùn)維人員學(xué)習(xí)成本大大降低、框架穩(wěn)定性極大提高、可跨業(yè)務(wù)統(tǒng)一維護(hù)、運(yùn)維效率提升***可達(dá) 10 倍。 資源打包管理 如上圖,資源打包管理是對(duì)開(kāi)發(fā)出的程序包進(jìn)行標(biāo)準(zhǔn)打包操作,一個(gè)程序開(kāi)發(fā)出來(lái)有不同特征,有需要加銀行參數(shù),有需要依賴目錄,還有需要前面準(zhǔn)備工作和后續(xù)善后工作。 把它全部放在一個(gè)類似于包里面,裝進(jìn)一個(gè)盒子里。之后提供標(biāo)準(zhǔn)的操作接口,如安裝、卸載、啟動(dòng)、停止操作等這些操作讓它們變成有關(guān)聯(lián)的。 資源打包管理對(duì)運(yùn)維有什么幫助? 部署規(guī)范統(tǒng)一,再也不擔(dān)心找不到、標(biāo)準(zhǔn)化了操作界面,極易學(xué)習(xí)掌握、支持前后置腳本做準(zhǔn)備和善、進(jìn)程級(jí)運(yùn)轉(zhuǎn)的所有資源的完整鏡像。 資源登記——CMDB 虛擬鏡像 資源登記到二級(jí) CMDB 形成服務(wù)的虛擬鏡像,除了傳統(tǒng)基礎(chǔ)配置信息,把一個(gè)模塊依賴的資源,全部記錄進(jìn) 2 級(jí) CMDB,形成一個(gè)模塊的虛擬鏡像。
CMDB+資源=虛擬鏡像
CMDB 虛擬鏡像對(duì)運(yùn)維有什么幫助? 一個(gè)模塊運(yùn)轉(zhuǎn)的所有資源的“完整鏡像”、記錄了模塊運(yùn)轉(zhuǎn)所依賴的所有資源、不再需要文檔說(shuō)明。 決策調(diào)度——織云自動(dòng)化部署平臺(tái) 在團(tuán)隊(duì)內(nèi)部有織云自動(dòng)化部署平臺(tái),從申請(qǐng)?jiān)O(shè)備獲取資源、發(fā)布部署、檢測(cè),進(jìn)行測(cè)試,上線。在每個(gè)環(huán)節(jié)還有些細(xì)節(jié)步驟,如申請(qǐng)?jiān)O(shè)備的時(shí)屏蔽告警事件,如發(fā)布時(shí)同步傳輸文件、如發(fā)布后檢測(cè)程序的包進(jìn)程是否啟動(dòng),啟動(dòng)之后進(jìn)行業(yè)務(wù)測(cè)試。
織云自動(dòng)部署流程 23 步
如下圖,是織云內(nèi)部自動(dòng)化部署的平臺(tái)。相當(dāng)于把這個(gè)進(jìn)程開(kāi)發(fā)出來(lái)以后,依賴的資源全部打包放在盒子里,把盒子里的東西放資源倉(cāng)庫(kù)中,有一些模塊全部登記在 CMDB。
騰訊織云自動(dòng)化運(yùn)維體系
如果要部署一個(gè)模塊 A 或進(jìn)行擴(kuò)容,可以人工觸發(fā)或自動(dòng)系統(tǒng)觸發(fā)。
控制人工系統(tǒng)進(jìn)行操作,把模塊邊上三個(gè)資源,由資源倉(cāng)儲(chǔ)部署在模塊 1 上,通過(guò) L5 系統(tǒng)進(jìn)行一個(gè)注冊(cè),這個(gè)模塊就可自動(dòng)上線。之后會(huì)把一個(gè)模塊登記回來(lái),對(duì)它進(jìn)行自動(dòng)化操作,每一個(gè)方塊是一個(gè)步驟,這個(gè)步驟執(zhí)行過(guò)去之后是綠色的,執(zhí)行失敗是紅色,沒(méi)有執(zhí)行是灰色。
執(zhí)行成功就可以看到,可以做自動(dòng)化的擴(kuò)容,可以做日常演習(xí),還可以回收等工作。
織云全自動(dòng)擴(kuò)縮容
運(yùn)維規(guī)范的推進(jìn)歷程
如下圖,是運(yùn)維規(guī)范的推進(jìn)歷程。看起來(lái)是自然而然的過(guò)來(lái)。但實(shí)際上這個(gè)過(guò)程并沒(méi)有那么容易。
注:本文整理自 WOT互聯(lián)網(wǎng)運(yùn)維與開(kāi)發(fā)者大會(huì) 主題分享《如果運(yùn)維可以重來(lái)一次》
趙建春 趙建春,騰訊社交網(wǎng)絡(luò)運(yùn)營(yíng)部助理總經(jīng)理、技術(shù)運(yùn)營(yíng)通道會(huì)長(zhǎng)、專家工程師。04年加入騰訊,先后從事過(guò)研發(fā)、運(yùn)維、數(shù)據(jù)方面的建設(shè)和管理工作,在海量技術(shù)運(yùn)營(yíng)方面積累了豐富的實(shí)戰(zhàn)經(jīng)驗(yàn)。 IT技術(shù)群,期待你的加入 后臺(tái)回復(fù)“入群”審核受邀
【51CTO原創(chuàng)稿件,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文作者和出處為51CTO.com】