《通用模板課件 Sina JPool微博平臺自動化運(yùn)維實(shí)踐PPT》由會員分享,可在線閱讀,更多相關(guān)《通用模板課件 Sina JPool微博平臺自動化運(yùn)維實(shí)踐PPT(32頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、Sina JPool微博平臺自動化運(yùn)維實(shí)踐目錄 CONTENT12431.微博平臺業(yè)務(wù)背景百T+萬億+600億+53%5min15次/w3000+200+50+99.99%150ms2/季 8億8千萬1.75億2.縱觀自動化運(yùn)維發(fā)展概況自動化運(yùn)維發(fā)展概況階段1階段2階段3階段4原始階段 工具系統(tǒng)綜合運(yùn)維平臺云計算&智能運(yùn)維變更腳本化運(yùn)維標(biāo)準(zhǔn)化工具Web化運(yùn)維精細(xì)化工具平臺化數(shù)據(jù)API化運(yùn)維服務(wù)化智能化運(yùn)維DevOPS*aaS目錄 CONTENT124311.Sina Dispatch介紹l什么是Sina Dispatch?u 通用化的Shell調(diào)度與任務(wù)調(diào)度u 2012年新浪內(nèi)部自研u 基于C
2、+及Cwinux通信架構(gòu)庫開發(fā)u 主要組件:dispatch,agent,MySQLu 消息協(xié)議:PB(ProtoBuf)lDispatch主要特性u 豐富的API:控制操作接口化u 高可用:Master-Slave部署方式u 高性能:支持萬臺服務(wù)器的并發(fā)調(diào)度u 安全性強(qiáng):MD5值校驗,特殊字符過濾2.Dispatch 調(diào)度設(shè)計lShell調(diào)度u 變量:內(nèi)置Shell變量 + 自定義變量u 安全:MD5值簽名,密碼保護(hù)u 策略:可設(shè)置超時時間u 其他:同時并發(fā)執(zhí)行,輸出實(shí)時回顯l任務(wù)調(diào)度u 變量:內(nèi)置任務(wù)變量 + 自定義變量u 安全:MD5值簽名,簽名錯誤拒絕執(zhí)行u 策略:并發(fā)數(shù)控制,最大比例
3、控制,超時控制u 輸出:stdout , stderr實(shí)時回顯u 腳本:支持Shell,Python,PHP等腳本語言u 狀態(tài):執(zhí)行中,超時,失敗,完成u 操作:啟動,暫停,取消,重做,完成,回滾3.Dispatch 架構(gòu)dispatch主線程admin線程任務(wù)處理線程agent服務(wù)器集群與agent連接的通信協(xié)議層及通信線程agentagent主動連接主動連接通知master變化檢測誰是masterShell消息通知獲取shell指令定義獲取新任務(wù)更新任務(wù)執(zhí)行態(tài)發(fā)送任務(wù)接收消息 接收消息 發(fā)送shell 指令 配置數(shù)據(jù)庫主線程指令流:agent上報Shell調(diào)度任務(wù)調(diào)度4.Agent 架構(gòu)m
4、asterdispatch通信層主動連接主動連接指令流:agent上報Shell調(diào)度任務(wù)調(diào)度slaveslaveagentShell處理操作隊列Vfork 執(zhí)行shellapp pool1 Task隊列Vfork執(zhí)行任務(wù)Vfork任務(wù)處理app pool2 Task隊列執(zhí)行任務(wù)輪詢結(jié)果push任務(wù)push任務(wù)輪詢結(jié)果接收任務(wù)結(jié)果結(jié)果shell任務(wù)接收shell輪詢結(jié)果pushshellExecshellExec任務(wù)Exec任務(wù)主動連接任務(wù)調(diào)度Shell調(diào)度Shell調(diào)度Shell調(diào)度目錄 CONTENT1243311.One host的生命周期Text in hereText in hereS
5、tep1 機(jī)器初始化 - 設(shè)備錄入資源池(資源管理) - 一鍵初始化(配置管理)Step2 服務(wù)部署 - 環(huán)境部署 - 監(jiān)控部署 - 服務(wù)部署(代碼 & confs)Step3 運(yùn)維變更 - 系統(tǒng)變更,代碼發(fā)布 - 服務(wù)遷移(動態(tài)擴(kuò)容)Step4 自動報修&下架 - 服務(wù)自動上下線 - 機(jī)器置換或下架業(yè)務(wù)業(yè)務(wù)運(yùn)維可控運(yùn)維可控上架裝機(jī)Title in here服務(wù)部署新機(jī)器初始化Title in here分配給業(yè)務(wù)改管理員CMDBTitle in here運(yùn)維變更Title in here自動報修Title in here過期下架2.1 Sina JPool簡介DispatchPuppet Ma
6、steragent服務(wù)器集群puppetagent puppetWebAPPCLIAPIl什么是Sina Jpool?u 通用化集群管控平臺u 核心模塊用戶&權(quán)限資源管理設(shè)備管理APP管理配置管理部署管理任務(wù)管理Nginx變更管理降級/封殺管理日志查詢平臺公司級CMDB配置數(shù)據(jù)庫資源管理關(guān)聯(lián)系統(tǒng)API設(shè)備管理APP集群管理配置管理服務(wù)部署任務(wù)管理Shell管理Nginx管理降級封殺監(jiān)控管理dispatchpuppet master 用戶&權(quán)限&審計流程&灰度發(fā)布工單管理問題管理運(yùn)維變更窗口2.2 JPool技術(shù)框架l平臺核心需求:DB化u 設(shè)備信息-唯一性配置管理系統(tǒng)監(jiān)控。u 應(yīng)用信息-多對多
7、應(yīng)用&發(fā)布部署降級&封殺Nginx變更。u 關(guān)聯(lián)關(guān)系3.1 JPool-資源管理設(shè)備池設(shè)備列表1:n應(yīng)用應(yīng)用池1:n設(shè)備應(yīng)用設(shè)備1:n應(yīng)用1:n 設(shè)計復(fù)雜,實(shí)現(xiàn)簡單,可用性強(qiáng) 案例:Sina Jpool,BaiDu Noah基于嚴(yán)謹(jǐn)?shù)膸蛹壍年P(guān)聯(lián)關(guān)系 設(shè)計簡單,實(shí)現(xiàn)復(fù)雜,靈活多變,可擴(kuò)展性強(qiáng) 案例:小米,Jpool2基于tag形式的關(guān)系 復(fù)雜的關(guān)聯(lián)結(jié)構(gòu)模型 案例:Amazon混合型業(yè)界實(shí)踐3.2 JPool-資源管理關(guān)系圖應(yīng)用管理設(shè)備管理產(chǎn)品APPAPPAPPAPP_PoolAPP_PoolAPP_PoolN 個設(shè)備設(shè)備池子NodeNodeNode導(dǎo)入基于網(wǎng)絡(luò)拓?fù)?,設(shè)備類型JPool應(yīng)用服務(wù)拓
8、撲基礎(chǔ)配置拓?fù)渑渲霉芾鞱odeNodeNodeNodeShell操作操作腳本文件任務(wù)(子任務(wù))任務(wù)模板任務(wù)歷史任務(wù)并發(fā)&回顯比例并行執(zhí)行狀態(tài)任務(wù)操作實(shí)時回顯任務(wù)腳本4.1 Jpool-配置管理需求l hostnamel hostsl sudol repol scriptsl sysctll nrpel sys_initl all agent 基礎(chǔ)配置l routel resolverl dnsmasq機(jī)房相關(guān)l crontabl rsyncl scribel service_confsl name_pooll logtailer業(yè)務(wù)相關(guān)4.2 基于Puppet的實(shí)踐-install |-pup
9、pet.conf: 配置文件 |-fileserver.conf: file server的配置文件 |-auth.conf: 權(quán)限的配置文件 |-files: puppet的文件目錄 | |-module1 | | |-池子1 | | | |-各個資源文件的各個版本 | | |-池子2 | |-module2 |-manifests: 節(jié)點(diǎn)定義目錄 | |-variable 池子的變量目錄 | | |-池子1n | | | |-pool_env 池子參數(shù)目錄 | | | |-池子的參數(shù)文件,存在多個版本。 | | | |-pool_module_env | | | |-池子加載的各個modl
10、ue的參數(shù)文件,存在多個版本。 | |-nodes 節(jié)點(diǎn)目錄 | | |-池子1n | | | |-池子下的服務(wù)器 |-modules: 模塊定義目錄 | |-module的參數(shù)化class,一個module存在多個版本的文件 |-test: 測試目錄l 源碼目錄規(guī)劃:線上實(shí)踐4.3 Puppet DB化可視化操作界面l配置修改范圍u 變量 公共變量 module變量 池子變量u moduleu 節(jié)點(diǎn)與池l版本化管理u 版本 變量 moduleu 快照:池4.4 Puppet配置DB化架構(gòu)Puppet 模塊UIJPool配置管理庫1.Puppet配置修改2.配置入庫3.應(yīng)用配置SVN服務(wù)器Pu
11、ppet Master1NginxPuppet clientPuppet clientPuppet clientPuppet Master24.提交SVN5.修改狀態(tài)7.配置同步7.配置同步7.配置同步6.定時拉取Backup(配置同步)8.轉(zhuǎn)發(fā)請求5.1 JPool-任務(wù)管理l任務(wù)設(shè)計u 通用的腳本自動執(zhí)行平臺u 安全,可靠,可視u 任務(wù)變量:內(nèi)置變量 + 自定義變量任務(wù)腳本變量 = app變量+ app_pool變量+ 任務(wù)變量+u 任務(wù)類型&任務(wù)模板l線上某服務(wù)代碼發(fā)布Java服務(wù)代碼發(fā)布Tag輸入任務(wù)創(chuàng)建變量Init判斷應(yīng)用server判斷Tag類型增量下載Tag切走流量 停服務(wù)拷貝代
12、碼切回流量代碼上線邏輯處理輸出日志檢測服務(wù)檢測啟動服務(wù)實(shí)時任務(wù)狀態(tài)完成5.2 Jpool-任務(wù)狀態(tài)監(jiān)控tag部署路徑任務(wù)狀態(tài)超時時間步長&比例APP_Pool列表狀態(tài)分布任務(wù)實(shí)時回顯6.1 Jpool-Nginx變更管理l 變更需求u 參數(shù)調(diào)整u member修改u 規(guī)則修改l 配置拆分 : includeNginx.confupstreampool1pool2vhostserver1server2Nginx變更窗口示例6.2 Nginx變更流程N(yùn)ginx 模塊UI本地文件配置管理庫1.Nginx修改2.拉取池信息SVN服務(wù)器dispatchNginx5.任務(wù)下發(fā)5.任務(wù)下發(fā)5.任務(wù)下發(fā)Ngi
13、nxNginx3.提交4.創(chuàng)建下發(fā)任務(wù)Nginx配置變更l 主要特性u 配置文件diffu 下發(fā)版本校驗u 審批工作流u 記錄查詢u API化l 下發(fā)控制u 一鍵發(fā)布u 灰度發(fā)布配置修改應(yīng)用變更7. Jpool-降級封殺管理l 降級封殺:5000+開關(guān)u原則:覆蓋全,開關(guān)避免手輸u方案:業(yè)務(wù)代碼框架層實(shí)現(xiàn)動態(tài)修改運(yùn)行時變量值前端監(jiān)聽端口,支持check/on/off集成JPool降級封殺窗口8. 自動化變更服務(wù)降級/封禁流量切換 JPool限流Docker機(jī)動池數(shù)據(jù)修復(fù)日常其他變更策略變更手段擴(kuò)容/縮容依賴系統(tǒng)依賴系統(tǒng)分工&職責(zé)&流程工單系統(tǒng)&量化KPIchecklist & Double c
14、heck區(qū)分四種環(huán)境灰度發(fā)布代碼部署Puppet/Nginx變更目錄 CONTENT1213141. 雙實(shí)例Cgroup隔離方案lCgroup優(yōu)化u硬件配置 2CPU-12核 Mem:12Gu隔離方案 CPU分組 內(nèi)存分組 lUMA vs NUMA2.Docker單機(jī)部署方案statsdLogs1Nginx打鏡像scribecadvisorELK日志中心HOST(10.75.0.2)Jenkins8080APP18081APP2Logs2流量調(diào)度容器監(jiān)控行為日志業(yè)務(wù)日志-v-v-link-link-host-host容器存儲卷系統(tǒng)工具3.Docker集群部署l部署原則u 發(fā)布代碼一樣發(fā)布鏡像u
15、 部署時間成本:分鐘級u 快速流量轉(zhuǎn)移l部署明細(xì):5分鐘u 設(shè)備錄入及遷移u 前端鏡像發(fā)布u Nginx變更新設(shè)備遷移設(shè)備CM系統(tǒng)Jpool資源池簡易服務(wù)發(fā)現(xiàn)upstream生成&提交dispatch新擴(kuò)容快速擴(kuò)容服務(wù)同步ip:portAPIAPINginx變更鏡像發(fā)布4.JPool2-Paas平臺快速擴(kuò)容Networking toolsRPCAPPNginxMqProcessMCRedisMySQLService(ip:port)RPCNginxWserfConsulDispatchJPool Graphite & ELKCadvisor&Logstash監(jiān)控編排負(fù)載調(diào)度服務(wù)發(fā)現(xiàn)JPool2JenkinsCICD Gitlab Registry HubDEVTEST基礎(chǔ)設(shè)施5.平臺Docker化進(jìn)展l部署進(jìn)度u 前端Docker化比率:53%u 實(shí)例數(shù):1000+l春晚大考u 10次動態(tài)擴(kuò)容u 節(jié)點(diǎn)遷移數(shù):200+u 單次操作時間:5分鐘業(yè)務(wù)部署范圍InfoQinfoqchina