符杰超 熊貓直播 基礎(chǔ)架構(gòu)部高級運維開發(fā)工程師 主要負責熊貓直播運維自動化架構(gòu)平臺建設(shè)和開發(fā) 隨著熊貓直播的業(yè)務(wù)發(fā)展越來越快,業(yè)務(wù)需求的迭代和版本更新需求越來越多,對開發(fā)和運維面臨以下4個痛點: 由此,團隊內(nèi)部決定在現(xiàn)有的發(fā)布過程上實現(xiàn)開發(fā)統(tǒng)一的發(fā)布系統(tǒng)平臺,實現(xiàn)熊貓直播的運維發(fā)布流程化、標準化、自動化為一體的統(tǒng)一發(fā)布要求,下面圍繞整個 Rancho 發(fā)布系統(tǒng)做總結(jié)梳理,總共分為9個方面: Rancho 發(fā)布系統(tǒng)流程概述架構(gòu)圖: Rancho 發(fā)布系統(tǒng)流程完整架構(gòu)圖: 隨著熊貓直播業(yè)務(wù)的迅猛發(fā)展,項目、產(chǎn)品的需求規(guī)模和版本迭代頻次是無法預(yù)估的.傳統(tǒng)的運維支持方式已漸漸無法滿足這種工程應(yīng)用現(xiàn)狀.但是如果把發(fā)布權(quán)利交付到開發(fā)人員手里控制,運維安全是比較大的隱患.當2者都無法平衡的時候,利用高效的標準化,自動化體系將2個無法逾越的問題優(yōu)化結(jié)合起來,我們結(jié)合了上述問題,實現(xiàn)了內(nèi)部的發(fā)布系統(tǒng),對于發(fā)布系統(tǒng),實現(xiàn)了2個核心目標,如下: 總結(jié):讓研發(fā)自助運維. 對于發(fā)布系統(tǒng)的登陸,我們結(jié)合了內(nèi)部開發(fā)的一套 SSO 系統(tǒng)+Rancho 系統(tǒng)并加了一層白名單策略,有以下3個方面考慮: 用戶權(quán)限,我們分為2類角色: 項目權(quán)限設(shè)計,我們當時也花很多時間去討論,最終擬定方案,項目不首先對應(yīng)用戶,而是在用戶和項目中間建立一個橋梁,我們命名為項目組. 原因:當多個用戶同時去擁有一個項目權(quán)限的時候,這個時候要全部用戶都要增加到這個項目體系中去. 如果這樣做的問題是:增加繁瑣,當項目刪除改用戶權(quán)限/或者用戶不再擁有該項目權(quán)限,還要精確的刪除,否則刪除錯了,后果很嚴重,邏輯同時還要對用戶和項目,做雙層處理操作. 解決方案: 用戶—-項目組——項目 方案優(yōu)點: 項目組圖例: 前臺用于開發(fā)人員進行發(fā)布所操作的頁面,其中功能包含: 當用戶進來某個項目的時候,Rancho 發(fā)布系統(tǒng)會同時異步獲取該項目所有的環(huán)境/主機列表,對用戶而言無需任何操作處理. ①. 發(fā)布頁面 支持機器單選,多選,全選,臨時主機添加等: ②. 發(fā)布tag種類 發(fā)布 tag 種類選擇如下: ③. tag 版本選擇頁面 如下: ④. tag 比對圖 用戶選擇的 tag 和主干,和最后一次發(fā)布 tag 比對如下: ⑤. 發(fā)布環(huán)境/機器列表選擇: 對于發(fā)布環(huán)境我們有自己的一套命名擴展規(guī)則,有3種類型: 比如某個項目命名情況: 獨立情況/整合情況,如下說明: PS:環(huán)境命名,細化,拆解,開發(fā)人員根據(jù)項目功能類型,自定義, Rancho自動識別和拆解命名體系. 每個發(fā)布環(huán)境對應(yīng)發(fā)布的機器,其中一個項目頁面如下展示: ⑥. 前臺首頁圖 用戶登陸進來看到的所擁有項目的頁面,功能有發(fā)布,查看,發(fā)布歷史,需說明(只有管理員才有展示啟用/禁用權(quán)限) 啟用:代表這個項目是正常運行發(fā)布 禁用:可以看作刪除,但是我們不作為真正刪除,臨時遷入回收站,如果哪天這個項目需要啟用發(fā)布了,我們再打開進行該項目發(fā)布. ⑦. 前臺發(fā)布確認清單 發(fā)布前讓發(fā)布用戶再次確認上線的項目,tag,發(fā)布環(huán)境,是否重啟,機器(現(xiàn)有的和臨時添加的主機): ⑧. 發(fā)布清單提交請求 避免臟數(shù)據(jù)的方法: ①. 后臺操作新項目流程頁面 新建字段說明: 名稱:代表項目的主名稱(唯一,如果重復(fù)則提示錯誤詳情),別名:代表項目的描述,可以是中文/英文,名稱可以重復(fù). git clone url地址: 開發(fā)提供,這個地址Rancho在處理的過程中,會對本身項目權(quán)限,該項目類型標識進行判斷和提取,比如我們有2種功能發(fā)布:rigger和ansible,而發(fā)布語言有:golang,php,nodejs,python,lua,c++等多種混合語言,排名不分先后. 項目組權(quán)限: 添加該項目允許哪些項目組成員進行發(fā)布. 備注:可寫/可不寫 至此,運維管理員需要做的事情已經(jīng)完成,剩下的點擊提交,剩下的事情交給 Rancho 去處理了. ②. 后臺新建頁面 ③. Rancho底層基本處理流程 ④. 項目失敗手動觸發(fā) Rancho 處理恢復(fù)流程 前期的工作:后臺新建項目完成,到發(fā)布提交申請,最后查看發(fā)布過程/結(jié)果的驗證. ①. 發(fā)布過程的處理流程概述和原理圖例展示: 描述,發(fā)布過程有3種場景負載均衡四/七層策略和無負載均衡策略/項目服務(wù)是否重啟.針對以上3種場景,分別作了不同的處理規(guī)則: 發(fā)布速度:無負載均衡策略項目相對于比有LB策略的項目快2ms-30ms,根據(jù)項目綁定的LB有關(guān)聯(lián). ②. 項目發(fā)布鎖圖例展現(xiàn) 發(fā)布鎖作用:防止同項目同發(fā)布環(huán)境多任務(wù)一起發(fā)布,會有覆蓋,沖突. ③. 項目發(fā)布歷史統(tǒng)計圖例展現(xiàn) 狀態(tài):正在發(fā)布,觸發(fā)失敗,發(fā)布成功 ④. 項目發(fā)布手工終止圖例展現(xiàn) ⑤. 發(fā)布結(jié)果成功圖例展現(xiàn) ⑥. 發(fā)布結(jié)果失敗/終止圖例展現(xiàn) 失敗單臺,未執(zhí)行的機器程序自動干預(yù)停止發(fā)布實例子 ⑦. 發(fā)布過程中,手工可以終止發(fā)布功能,說明 ⑧. 項目回滾策略 當某個項目發(fā)布失敗或者異常,想回滾到上個正常版本,可以以對應(yīng)的 tag 號來進行重新發(fā)布. ⑨. 發(fā)布結(jié)果日志截圖展現(xiàn) (自動按天生成日志,并且按天做發(fā)布日志全量匯總) Rancho 發(fā)布系統(tǒng)在熊貓直播循序漸進的優(yōu)化功能/需求,bug修復(fù)等,wiki文檔的規(guī)范化也要隨之建立起來,以下是wiki文檔建立的圖例: Rancho 發(fā)布系統(tǒng)已經(jīng)在線上運行了將近5個月的時間,目前 Rancho 系統(tǒng)功能包含了: 目前熊貓直播 Rancho 發(fā)布系統(tǒng)解決的痛點: 目前發(fā)布次數(shù)/項目總數(shù)統(tǒng)計: 2017年2月16日上線到目前,累計發(fā)布工單12000次,最多單次工單發(fā)布主機100臺+,成功96%,失敗3%,終止1%,接入發(fā)布項目將近100+. Rancho 發(fā)布系統(tǒng)未來優(yōu)化的路還有很多,優(yōu)化方向分為以下3點: 文章來自微信公眾號:高效運維 轉(zhuǎn)載請注明本頁網(wǎng)址: http://www.vephp.com/jiaocheng/2221.html