1、愛奇藝CDN運維平臺實踐愛奇藝基礎架構部 研發總監01 愛奇藝CDN概況02 運維痛點分析03 運維平臺架構設計04 平臺應用&實踐05 總結&展望目錄01 愛奇藝CDN概況數據增長趨勢數據增長趨勢節點分層策略節點分層策略CDN 節點特點節點特點愛奇藝CDN數據增長趨勢201420192015201820162017CDN設備量增長8倍分布區域增長10倍帶寬增長20倍愛奇藝CDN節點分層愛奇藝CDN節點特點多多運營商運營商分布分散分布分散中心中心可連通性弱可連通性弱變更頻繁變更頻繁02 運維痛點總結軟件配置管理軟件配置管理運維數據統計運維數據統計CDN設備管理設備管理運維痛點 軟件配置連通性不
2、可保證狀態不可預知周期不可預估運維痛點 數據統計實時性差迭代低效開發繁瑣CNCCTCMNETGWBNSCCIPTV收集代理HDFS數據統計、展示SSH-Based-Tools運維痛點 設備管理三大ISP小ISP純內網 通過BGP、多線機房實現連通 管理方便 部分需要單獨打隧道 缺點:節點上線復雜、不可靠 依賴合作商網絡情況 缺點:配置復雜、登錄管理復雜,不穩定運維痛點小結 軟件配置l 配置任務狀態不可控l 連通性不可靠l 日常軟件、配置升級不可控l 一些案例:數據統計l 實時性差l 迭代效率低l 開發繁瑣 設備管理03 運維平臺設計架構演進大事記架構演進大事記整體架構設計整體架構設計通用代理服
3、務集群設計通用代理服務集群設計(Promise)運運維任務模型設計維任務模型設計應用配置管理應用配置管理權限管理權限管理運維平臺Fast 整體架構APIAPI接入層接入層通用代理服務通用代理服務(Promise)(Promise)HTTPHTTP傳輸傳輸ZMQ-ZMQ-ProxyProxyKCP-ProxyKCP-Proxy任務模板任務模板生生 成成 器器配置管理配置管理服務發現服務發現設備管理設備管理sshsshwebshellwebshellFast webFast cliFast monitor其他外部系統智能調度資產平臺監控系統云圖可視化應用層應用層基于基于APIAPI層實現的層實現的
4、WebWeb管理、命令行工具、監控管理、命令行工具、監控dashboarddashboard等等APIAPI層層提供任務管理、模板管理、設備管理、服務發現及狀態等接口提供任務管理、模板管理、設備管理、服務發現及狀態等接口核心模塊核心模塊實現通用運維任務模板、差異化配置管理、設備反向管理等功能實現通用運維任務模板、差異化配置管理、設備反向管理等功能通用代理集群服務通用代理集群服務實現多協議的實時消息、文件傳輸、設備管理、數據上報等服務實現多協議的實時消息、文件傳輸、設備管理、數據上報等服務客戶端客戶端任務管理客戶端、代理客戶端、插件庫等任務管理客戶端、代理客戶端、插件庫等Fast 運維平臺架構f
5、ast客戶端promise客戶端插件庫外部系統外部系統外部聯動可視化、資產、調度、監控等多個系統外部聯動可視化、資產、調度、監控等多個系統通用代理服務(Promise)設計目標:l 集群化:自動探測發現集群所有的服務實例l 高可用:保證每個節點有3+可用代理l 可擴展:可以任意上線下線代理設備,自動摘除l 智能路由:自動探測最佳代理節點l 接口簡單:支持HTTP、SDK方式使用l 多協議:支持控制流、數據流等場景的實時性和可靠性l 模型:數據傳輸類:標準http模式 消息控制類:sub/pub,push/pull,register/unregister 支持服務發現PromisePromise
6、集群集群CNCCTCMCDN CDN 節點節點CNCCTCM應用服務端應用服務端通用代理服務(Promise)架構及應用HTTP 接口ZMQZMQ協議協議KCPKCP協議協議應用層應用層APIAPI層層封裝底層不同協議實現封裝底層不同協議實現pub/sub,push/pull pub/sub,push/pull 等接口等接口核心模塊核心模塊協議協議目前支持目前支持zmqzmq/kcpkcp協議,協議,前者高吞吐、后者高效低延時前者高吞吐、后者高效低延時Promise 架構API:pub/sub push/pull,API:pub/sub push/pull,register/unregiste
7、r register/unregisterPingHeartbeat服務管理SDKSDK數據收集設備管理設備管理PromisedPromised/agent/agentMonitorMonitor服務服務端、客戶端,目前還有數據狀態收集、設備管理跳板服務等端、客戶端,目前還有數據狀態收集、設備管理跳板服務等路由算法核心實現基于核心實現基于Ping Ping 的?;?、路由算法,支持管理注冊的服務集群的?;?、路由算法,支持管理注冊的服務集群Promise 集群可以隨意擴展、實現CDN設備跟服務端保持實時鏈接,使運維平臺Fast可以完成實時任務下發、遠程設備管理等功能,對拓展的CDN資源設備也不再需
8、要外網需求Fast運維平臺任務設計 任務抽象名稱說明nameJob 模板名稱url下載地址,支持模板渲染md5sumMD5 值,用于下載后校驗target_dir下載目錄,timeoutJOB 超時時間,默認30spre_scripts前置腳本,默認-,將不執行任何操作post_scripts后置腳本,默認-,將不執行任何操作rollback_scripts回滾腳本,任務失敗后執行文件下載類Job定義運維操作抽象文件下載文件下載RPMRPM類類AppApp管理管理TarTar類類AppApp管理管理軟連接創建軟連接創建Shell Shell 類類配置變更類配置變更類運維平臺任務設計 模型設計運
9、維平臺任務設計 流程設計通常包括文件下載類、軟件通常包括文件下載類、軟件包類、腳本等幾類包類、腳本等幾類Job.Job.創建基礎創建基礎Job1聯動資產平臺的服務管理系聯動資產平臺的服務管理系統,間接會關聯到具體的服統,間接會關聯到具體的服務器資產務器資產關聯服務關聯服務3可以指定執行的設備列表,可以指定執行的設備列表,也可以默認引用服務所包含也可以默認引用服務所包含的所有服務器列表的所有服務器列表創建創建Task實例實例4可基于可基于Fast-WebFast-Web或或Fast-cliFast-cli查詢查詢Task執行執行5同一個同一個JobJob模板可以被應用到模板可以被應用到多個多個T
10、askTask模板,一個模板,一個TaskTask模板模板往往包含多個往往包含多個Job Job 模板模板組合組合Task模板模板2運維平臺任務設計 高級功能軟件、配置自動同步軟件、配置自動同步版本控制版本控制(Version Control)灰度計劃灰度計劃遠程管理遠程管理運維平臺-配置管理平臺采用服務端渲染、中心化管平臺采用服務端渲染、中心化管理的配置模型理的配置模型.配置可以是一個配置可以是一個壓縮壓縮包,也可以包,也可以是是單單個文件,均有個文件,均有md5md5信息和版信息和版本信息用于本信息用于設備設備本地本地驗證驗證和數據和數據上上報報基于多維度、優先級覆蓋策略設基于多維度、優先
11、級覆蓋策略設計差異化算法計差異化算法以設備、以設備、IDCIDC、運營商、運營商、全局這四全局這四個維度設定優先級進行差異化個維度設定優先級進行差異化配配置置每個每個AppApp的配置關聯一個的配置關聯一個Task Task 模板模板.配置關聯配置關聯TaskTask模板后,可以服用平模板后,可以服用平臺的基于設備、臺的基于設備、IDCIDC、運營運營商等多商等多維度的灰度機制維度的灰度機制管理模型差異化算法灰度機制運維平臺 系統聯動Fast運維平臺監控系統Hubble資產管理平臺天工智能調度平臺伏羲運維平臺 權限管理設備資源設備資源服務服務Fast TaskFast Task模板模板資產平臺
12、模板模板(Template)(Template)服務服務 (Service)(Service)關聯用戶和設備資源,用戶間接關聯有權限的設備關聯用戶和設備資源,用戶間接關聯有權限的設備用戶用戶 (User)(User)任務任務 (Task)(Task)只只允許執行自己有權限的關系的模板允許執行自己有權限的關系的模板獲取用戶權限服務列表,不允許關聯沒有權限的服務獲取用戶權限服務列表,不允許關聯沒有權限的服務可以查看所有模板,只能在有權限設備上執行任務可以查看所有模板,只能在有權限設備上執行任務運維平臺Fast 大事記2017.05產品設計研發,抽象運維任務模型、設計簡單的代理集群服務2018.02
13、Fast 2.0 支持服務發現、狀態上報報警,推進完成視頻CDN 近萬設備上線,覆蓋數百個機房2017.09Fast 1.0 上線,并完成靜態CDN 上千臺設備管理和日常配置管理2018.09Fast 3.0 上線,全新通信機制,任務實時發布,權限管理可Shell管理任何設備,包括NAT純內網設備04 應用實踐&效果軟件配置管理軟件配置管理數據統計架構數據統計架構&開發流程開發流程設備管理應用設備管理應用平臺應用 數據統計應用層應用層(Apps)(Apps)服務端服務端 (Server)(Server)處理設備經過處理設備經過PromisePromise集群上報的實時數據,打集群上報的實時數據
14、,打TagTag入入KafkaKafka隊列、隊列、RedisRedis最新數據最新數據代理集群代理集群(Promised(Promised )CDNCDN設備層設備層部署部署Fast-AgentFast-Agent用于控制用于控制Fast-PluginFast-Plugin應用插件的執應用插件的執行,將數據通過本地的行,將數據通過本地的promise-agentpromise-agent上報數據上報數據不同的應用到不同的應用到Kafka/Kafka/RedisRedis 消費自己投遞的指定消費自己投遞的指定TopicTopic數據數據多運營商、多點部署將多運營商、多點部署將CDNCDN設備上
15、報的數據上報設備上報的數據上報ServerServerPromise-AgentFast-AgentPluginsPromised代理集群智能路由心跳健康探測API/SDKPromised服務端集群TaggingReformat數據過濾AppsCDN 設備節點多維度帶寬實時統計設備狀態實 時 統 計視頻CDN服務質量統計靜態/DNS等業務關鍵關鍵指標指標實時實時性性(秒級秒級);可擴展;易開發;可擴展;易開發;平臺應用 運維開發分析任務類型,確定相關依分析任務類型,確定相關依賴項賴項:接口、命令,環境等接口、命令,環境等需求設計需求設計1開發響應的數據匯聚邏輯,開發響應的數據匯聚邏輯,直接消費
16、直接消費kafkakafka數據,執行匯數據,執行匯聚、可視化、報警投遞等邏聚、可視化、報警投遞等邏輯輯數據匯聚數據匯聚3根據需求設計,設定業務需根據需求設計,設定業務需求的維度求的維度(tag)(tag)字段和指標字字段和指標字段段(數值類數值類)可視化配置可視化配置(河圖河圖)4投遞入河圖的數據對接了公投遞入河圖的數據對接了公司司HubbleHubble系統,可以針指標系統,可以針指標進行配置監控邏輯進行配置監控邏輯監控報警配置監控報警配置5基于河圖存儲的時序數據,基于河圖存儲的時序數據,可以用任意維度組合生成日可以用任意維度組合生成日報、周報,并發給響應的郵報、周報,并發給響應的郵件組和
17、人員件組和人員日報日報/周報周報6根據不同的業務在業務機部根據不同的業務在業務機部署署Fast-PluginFast-Plugin,完成數據投遞,完成數據投遞測試測試7本部本部分基于分基于Fast Fast 靈活的版本靈活的版本控制功能,可在個別控制功能,可在個別IDCIDC、ISPISP上線上線灰度發布灰度發布8配置全網穩定版本,啟用定配置全網穩定版本,啟用定時同步功能,完成全網發布時同步功能,完成全網發布全網發布全網發布9開發開發Fast-PluginFast-Plugin,執行運維任,執行運維任務,通過務,通過Promise-AgentPromise-Agent上報上報相關數據,數據通過
18、相關數據,數據通過PromisePromise集群、服務端直接投遞到集群、服務端直接投遞到KafkaKafka插件開發插件開發2平臺應用 軟件/配置管理任務模板任務模板經過一年時間的推進完成所有經過一年時間的推進完成所有CDNCDN日常運維操作日常運維操作模板化,模板化,包含包含100+軟件模板軟件模板、7878個個配置模板配置模板業務覆蓋業務覆蓋已經對接靜態已經對接靜態CDNCDN、視頻、視頻CDNCDN、調度、調度、DNSDNS等業等業務,涵蓋務,涵蓋服務初始化、單軟件服務初始化、單軟件/配置配置升級等升級等服務指標服務指標單單季度總任務季度總任務數數1.5W1.5W,操作設備操作設備次數
19、次數2500W2500W次次,平均耗時平均耗時4141分鐘分鐘,首次首次任務成功率任務成功率9999%效率提升效率提升全網變更在全網變更在1 1小時小時左右,基于通用代理服務解左右,基于通用代理服務解決連通性問題,效率提升決連通性問題,效率提升近百倍近百倍 對接安全云堡壘機l Step 1:登錄安全云堡壘機l Step 2:根據設備ID登錄對接Fast-Web、資產等平臺實現WebConsole管理平臺應用 設備管理Fast Web資產平臺調度平臺05 總結&展望總結總結展望展望總結總結痛點、梳理日??偨Y痛點、梳理日常運維工作、輸出知識運維工作、輸出知識庫,合理設計架構庫,合理設計架構需求分析&設計單元測試、單元測試、StagingStaging環環境測試境測試、巡檢、報警、巡檢、報警開發規范無狀態、多機房、容無狀態、多機房、容器化器化部署,對接部署,對接QLBQLB實實現故障自動摘除現故障自動摘除高可用設計日常運維效率提升百日常運維效率提升百倍倍.運維效率運維任務模型化、易上運維任務模型化、易上手、可交付、加快整體運手、可交付、加快整體運營迭代效率營迭代效率運維可交付釋放運維潛力、運維釋放運維潛力、運維開發轉型開發轉型運維開發