《哈啰-羅濤-哈啰云原生架構落地實踐.pdf》由會員分享,可在線閱讀,更多相關《哈啰-羅濤-哈啰云原生架構落地實踐.pdf(36頁珍藏版)》請在三個皮匠報告上搜索。
1、哈啰云原生架構落地實踐哈啰云原生架構落地實踐羅羅 濤濤哈啰基礎技術運維負責人哈啰基礎技術運維負責人個人簡介個人簡介 20192019年加入哈啰,先后負責云原生、年加入哈啰,先后負責云原生、SRESRE、NOCNOC、數據、數據存儲的運維架構工作,從存儲的運維架構工作,從0 0到到1 1主導主導哈啰云原生平臺哈啰云原生平臺HKEHKE的落地實踐的落地實踐 現任職哈啰基礎技術運維負責人,專注于基于云原生的混合云架構、現任職哈啰基礎技術運維負責人,專注于基于云原生的混合云架構、DevOpsDevOps、可觀測、可觀測、應急指揮等領域應急指揮等領域分享主題分享主題彈性伸縮技術實踐彈性伸縮技術實踐A中間
2、件容器化及混部填谷中間件容器化及混部填谷BK8SK8S觀測與穩定性觀測與穩定性C未來的展望規劃未來的展望規劃D業務規模驅動技術架構業務規模驅動技術架構演進演進體量挑戰大體量挑戰大上百種系統組件,幾千上百種系統組件,幾千個應個應用,幾萬臺服務器,人工維用,幾萬臺服務器,人工維度效率低度效率低需求迭代快需求迭代快高頻更新,高頻更新,技術團隊技術團隊怎么保怎么保持保留交付軟件持保留交付軟件保障要求高保障要求高業務廣、用戶業務廣、用戶多,運營需要多,運營需要數字化、可觀測,如何提供數字化、可觀測,如何提供國民級應用運營保障能力國民級應用運營保障能力哈啰云原生發展歷程哈啰云原生發展歷程2018 2018
3、 虛擬化時代虛擬化時代公有云公有云作為基礎設施作為基礎設施業務運行在云虛擬機上業務運行在云虛擬機上2019 2019 業務試點期業務試點期 KubernetesKubernetes容器編排容器編排容器交付標準規范容器交付標準規范業務試錯,驗證容器交業務試錯,驗證容器交付模式付模式2021 2021 全面落地全面落地 云原生技術發展戰略云原生技術發展戰略推行業務全面容器化推行業務全面容器化業務池化、多維度彈性業務池化、多維度彈性資源交付效率和使用率資源交付效率和使用率2022 2022 生態發展生態發展 云原生生態能力落地云原生生態能力落地精細化資源調度精細化資源調度有狀態業務混部有狀態業務混部
4、服務治理服務治理ServerlessServerless場景實踐場景實踐2023 2023 體系化建設體系化建設業務垂直可觀測性業務垂直可觀測性FinOps FinOps 降本增效降本增效在離線混部在離線混部散點能力形成體系散點能力形成體系哈啰云原生能力關系哈啰云原生能力關系圖圖分享主題分享主題01彈性伸縮技術實踐彈性伸縮技術實踐彈性伸縮技術實踐彈性伸縮技術實踐全網容器化后全網容器化后一線研發的一線研發的使用問題使用問題時機:手動擴容要人工介入容量:每次擴容需要擴多少效率:突發洪峰來不及應對成本:低峰資源快速釋放手動擴容手動擴容 VS VS 彈性伸縮彈性伸縮彈性伸縮是云原生容器化后的必然技術選
5、擇彈性伸縮技術實踐彈性伸縮技術實踐內置內置原生不支持自定義指標原生不支持定時擴縮容使用率計算基于resources.requests使用單個Goroutine執行業務業務場景場景微服務在線實例拉出狀態特殊業務Job任務實例不能中斷要考慮下游DB層可用性使用原生彈性使用原生彈性HPAHPA遇到遇到的問題的問題彈性伸縮技術實踐彈性伸縮技術實踐基于業務實例實際水位、有效負載的彈性能力基于業務實例實際水位、有效負載的彈性能力高低雙閾值控制高低雙閾值控制最大可用最大可用原則原則擴容用Ceil向上取整縮容使用Floor向下取整數據降噪數據降噪去除實例狀態不ready的去除強業務關系的實例計算,如內置job
6、、mq消費的應用啟動毛刺問題緩解metrics空值、獲取不到值性能性能增強增強按業務namespace監聽并發度控制彈性伸縮技術實踐彈性伸縮技術實踐水位水位閾值彈性和定時彈性的融合閾值彈性和定時彈性的融合實現實現應用同時使用閾值和定時彈性應用同時使用閾值和定時彈性擴容:閾值副本數閾值副本數 大于 定時副本定時副本數數,擴容以閾值計算為準,否則以定時為準縮容:當前實例數當前實例數 大于 定時副本定時副本數數,按閾值規則縮容,否則維持定時副本數基本原則:擴容:大者取大大者取大縮容:不能低于定時副本數不能低于定時副本數業務使用彈性后的業務使用彈性后的生產效果生產效果解決的一些問題解決的一些問題代碼預
7、熱,在高峰前準備就緒周期性波動型應用變更明顯減少應用冗余減少,業務“初見原型”突發流量應對,穩定性提升告警、應用狀態可控性收益收益研發人工介入降低,彈性接入 90%以上及時感知變更,擴縮容消息觸達率 100%業務可用算力增加了 30%以上彈性伸縮技術實踐彈性伸縮技術實踐彈性伸縮技術實踐彈性伸縮技術實踐混合云混合云模式下的模式下的 ClusterAutoScale ClusterAutoScale(CACA)1.kernel升級,系統參數優化2.軟件包預裝,image鏡像pull本地3.預設配置模版4.配置開機啟動初始化腳本1.公有云 to ESS API2.自建IDC to IDC服務器管理系
8、統3.去除cloud controller manager依賴1.獲取節點lable及providerID2.IPAM分配IP地址段,宣告BGP路由3.生成kubelet、CNI配置4.啟動docker、kubelet加入集群1.無實例自動觸發+人工干預2.pod漂移支持打標3.適配自定義和三方workload4.CA控制器自動移除k8s nodeCloudProvider CloudProvider 適配適配鏡像即鏡像即服務服務節點節點回收回收節點節點初始化初始化為什么還為什么還要搞要搞CACA:集群可用資源變多,不等于整體開支降低彈性伸縮技術實踐彈性伸縮技術實踐混合云混合云模式下的模式下的
9、 ClusterAutoScale ClusterAutoScale(CACA)解決的一些問題解決的一些問題CloudProvider 對接私有云資源APIPod網段分配域路由宣告私有云可用容量評估及資源打散資源灰度回收邏輯收益收益運維省心,集群批量擴容時間從幾十分鐘降低到 3分鐘以下冗余備用資源成本降低25%左右公有云小時級計費,私有云秒級計費,壓測場景成本降低 90%以上彈性伸縮彈性伸縮技術實踐技術實踐生產環境下使用彈性伸縮技術的注意事項生產環境下使用彈性伸縮技術的注意事項嚴密關注業務池的容量:可用量、增長率、嚴密關注業務池的容量:可用量、增長率、TOPTOP用量等用量等應用維度的實例波動
10、率標準:推薦:應用維度的實例波動率標準:推薦:20%-30%20%-30%,并且有最小,并且有最小實例數標準實例數標準存活探測存活探測(Liveness)(Liveness)和和 就緒探測就緒探測(Readiness)(Readiness)的接口區別的接口區別指標閾值、彈性規則的合理性巡檢指標閾值、彈性規則的合理性巡檢【反例】實例上下限:1-100【反例】CPU閾值:10-100 彈性代碼輕邏輯:不做過多彈性代碼輕邏輯:不做過多filterfilter,不強依賴其他系統平臺,不強依賴其他系統平臺紅線:任何時候都不要出現彈不出來的情況!紅線:任何時候都不要出現彈不出來的情況!分享主題分享主題02
11、中間件容器化及混部填谷中間件容器化及混部填谷中間件容器化及混部填谷中間件容器化及混部填谷 業務獨立池業務獨立池水位與混部水位與混部預期預期050100012345678911111111112222在線業務0204060801001200:001:002:003:004:005:006:007:008:009:0010:0011:0012:0013:0014:0015:0016:0017:0018:0019:0020:0021:0022:0023:00混部02040012345678911111111112222Redis02040012345678911111111112222Flink帶來
12、帶來的問題的問題 每種業務獨占一個資源池或集群,產生大量資源碎片,成本浪費 多個集群多個對外API,數據需要多次聚合計算 各業務池服務器規格不一致,運維管理復雜原則:針對業務特性分時復用原則:針對業務特性分時復用在線業務SLO要求高,資源利用率白天高-晚上低離線業務SLO不高,資源利用率白天低-晚上高中間件容器化及混部填谷中間件容器化及混部填谷 Flink Flink 和和 Redis Redis 容器化容器化FlinkFlink資源隔離資源隔離+requests+requests推薦推薦+水位調度水位調度+PVC+PVC持久化持久化RedisCluster+authRedisCluster+
13、auth注冊發現注冊發現+打散打散+PVC+PVC持久化持久化 同一分片主從節點部署在不同物理機 有一部分需要持久化的文件不能在宕機以后丟失 redis發生切換以后,能感知節點身份,觸發主動上報SOA注冊中心 擴縮容節點主動加入集群,但不需要自動rebalance slot分片槽數據 YARN集群默認情況下無法隔離CPU,極端情況下會CPU使用溢出,極大影響其他任務 YARN支持配置的最小粒度是1G。線上很多小任務內存資源非常小,因容易造成了資源浪費中間件容器化及混部填谷中間件容器化及混部填谷 混部的混部的總體思路總體思路總體方向總體方向 服務資源保障(策略實現)服務資源保障(策略實現)應用分
14、級:區分優先級、等級標準S1-S4 資源池化:資源池隔離,重保業務獨立池,其他盡可能混部 資源分配決策(算法實現)資源分配決策(算法實現)優化資源使用率:建立應用畫像,基于應用實際負載調度 容量預測:requests推薦,提升可分配率,同時中間件資源打散需要考慮的需要考慮的因子因子實現實現抽象化抽象化中間件容器化及混部填谷中間件容器化及混部填谷 服務等級服務等級定義定義優先級權重優先級權重調度調度/驅逐驅逐S1S1主營業務核心鏈路,如單車、主營業務核心鏈路,如單車、助力車開關鎖、順風車助力車開關鎖、順風車10000001000000最先調度最先調度S2S2主要業務,主要業務,如營銷、售卡、消如
15、營銷、售卡、消息通知,息通知,對用戶或核心產品邏對用戶或核心產品邏輯有較大影響輯有較大影響900000900000S3S3邊緣業務,服務故障對用戶或邊緣業務,服務故障對用戶或核心產品邏輯影響非常小核心產品邏輯影響非常小800000800000S4S4管理后臺,服務故障對用戶沒管理后臺,服務故障對用戶沒有影響有影響700000700000最先驅逐最先驅逐資源池資源池化化應用分級應用分級打標(打標(S1-S4S1-S4)服務資源保障(策略實現)服務資源保障(策略實現)metadata.labels- 資源分配決策(算法實現)資源分配決策(算法實現)-RequestRequest推薦推薦PodPro
16、metheus1.VPA Histogram算法2.水位系數放大3.規格推薦讀取歷史數據寫入推薦數據發布系統workloadadmission webhookexportPrometheusAdapter寫入Request改變Pod資源預分配值主要實現主要實現獲取7x24小時周期的應用資源量(CPU和內存)根據P95百分位數據,再乘以水位系數放大后得到最終推薦值結合彈性、coolhealth狀態機優化毛刺問題核心算法核心算法VPA Histogram計算百分位算法中間件容器化及混部填谷中間件容器化及混部填谷 資源分配決策(算法實現)資源分配決策(算法實現)-實際負載調度實際負載調度主要實現主要
17、實現過濾掉高水位節點,避免單node資源打爆水位偏離度縮小,pod調度盡可能靠近理想水位歷史閾值計算應用負載,對節點未來水位預測兼顧單node最大pod數限制集群理想值即為箱子容量核心算法核心算法集群理想值權重算法(歷史閾值權重打分)BinPacking裝箱打分算法(多維)中間件容器化及混部填谷中間件容器化及混部填谷 資源分配決策(算法實現)資源分配決策(算法實現)-資源資源打散打散宿主機打散MDU打散混部打散策略混部打散策略中間件節點均衡可用區打散核心算法核心算法集群理想值權重算法(拓撲權重打分)問題推導問題推導-完全打散完全打散是不可能是不可能的的1000個Redis集群*2副本*3-20
18、個分片 2000個Flink任務*2-80個并行度 主要實現主要實現盡可能打散原則,私有云IDC加入MDU策略針對Redis特性,在workload上先做一層同分片主備節點打散中間件實例打標,在調度打分時增大拓撲權重思考思考?公有云底層物理機打散中間件容器化及混部填谷中間件容器化及混部填谷 成效和問題成效和問題好的方面好的方面資源使用率有明顯提高,混部池的CPU峰值使用率接近75%集群節點水位偏離度從40%降低到25%左右單集群7x24小時平均CPU使用率達到28%左右,成本賬單同比持續降低問題思考問題思考一個無法回避的問題:物理機宕機。爆炸半徑增大,穩定性怎么保障對根因下鉆和故障定位帶來挑戰
19、,如何觀測和評估影響分享主題分享主題03K8SK8S觀測與穩定性觀測與穩定性K8SK8S觀測與穩定性觀測與穩定性選擇選擇 Prometheus Prometheus 的的思考思考容器化部署快速迭代,持續集成DevOps 以K8S為核心的云原生架構多樣化的組件依賴應用依賴錯綜復雜多語言分布式的環境監控對象動態化監控對象動態化監控層次多樣化監控層次多樣化監控內容復雜化監控內容復雜化天然契合K8S架構自動發現、主動采集PromSQL函數式查詢語言監控指標標準簡單開放性,各樣的 exporter 開箱即用支持語言豐富擴展性強 多維度模型更準確描述指標挑戰挑戰 Prometheus Prometheus
20、 優勢優勢K8SK8S觀測與穩定性觀測與穩定性基于基于PrometheusPrometheus的容器監控的容器監控平臺平臺核心組件核心組件Thanos+Prometheus 持久化存儲Vertex Exporter 指標采集數據源SentryD 配置管理CheckD 告警檢測Alerts 告警系統支撐支撐量級量級監控分組 5000+總指標數 9000W+存儲用量 150T+一些經驗一些經驗做法做法新版 prom v2.39優化內存占用使用shard分片采集混合云環境盡量不跨單元采集K8SK8S觀測與穩定性觀測與穩定性監控高級模式(監控高級模式(vertexvertex日志指標日志指標)好處是好
21、處是什么什么快速生成一個metrics指標,相比ELK/EFK的方式數據分析路徑短支持用戶自定義指標名稱,方便按業務、按分組區分和exporter算力共享,每個實例 limit 2C/4G就可滿足一個物理機的采集任務支持支持類型類型jsongrokgrepK8SK8S觀測與穩定性觀測與穩定性event event 事件流事件流持久化持久化事件服務事件服務HkeEventServiceHkeEventServiceK8S全資源類型listwatch,如原生event、deploy、ns、擴展wpa、Operator等kubelet event消息全量打印部署Node Problem Detect
22、or(NPD)節點錯誤檢測HTTP探針Response信息返回事件格式統一標準化支持sink類型stdout、kafka、webhook、dingtalk等集群、namespace維度的收集策略K8SK8S觀測與穩定性觀測與穩定性logs logs 日志日志平臺平臺系統日志業務日志/var/logs/message,dmesg,secure/var/logs/kubernetes/*.log.*/var/log/containers/*.log coolhealth.report soa-*-detail.log soa-metric.log gc.log*owl/hlog-owl-err,s
23、low.log middleware/db,redis,hms,./*.logFilebeatFilebeatHangoutHangoutLogAgentLogAgent量級量級(部分降采樣)(部分降采樣)soa日志:800w/s app日志:200w/s metric日志:700w/skafkakafkaK8SK8S觀測與穩定性觀測與穩定性tracetrace鏈路鏈路traceid查詢,tags過濾進行數據檢索分析鏈路拓撲過濾,只看有錯誤的鏈路采樣鏈路搜索,鏈路分析jaeger鏈路-esessoa/hms rpc 鏈路-clickhouseclickhouse結合應用log、metric快速
24、定位異常容器容器jaeger&jaeger&SoaSoa鏈路鏈路跟蹤跟蹤tracetrace鏈路和應用鏈路和應用loglog關聯關聯K8SK8S觀測與穩定性觀測與穩定性metricmetric:K8SK8S穩定性關注的指標穩定性關注的指標etcd etcd apiserverapiserverschedulerschedulercontrollercontroller-managermanagerkubeletkubeletkubekube-proxyproxycorednscorednsingressingress-controller controller 原生組件可用性原生組件可用性集群
25、容量水位集群容量水位集群資源負載集群資源負載業務異常實例業務異常實例云平臺可用性云平臺可用性預分配水位預分配水位cpucpu預分配水位預分配水位memmem可調度可調度p podod數數csicsi磁盤水位磁盤水位gpugpu水位水位reclaimendreclaimend分配率分配率 cpucpu高負載節點高負載節點memmem高負載節點高負載節點磁盤高負載節點磁盤高負載節點底層異常節點底層異常節點垂直偏離度垂直偏離度(水位差)(水位差)水平偏離度水平偏離度(峰谷差)(峰谷差)pending podpending pod數數imagePullErrimagePullErrhealthChec
26、khealthCheck失敗失敗restartrestart過多過多OOMOOM實例實例應用總應用總cpucpu增長過多增長過多網絡通訊異常網絡通訊異常線程過多線程過多tcptcp重試較多重試較多 autoscaleautoscaleharbor harbor 自定義自定義operatoroperator云平臺云平臺apiapi自定義調度自定義調度安全審計安全審計K8SK8S觀測與穩定性觀測與穩定性穩定性穩定性大盤大盤最終的最終的目的目的云原生系統內維護的組件系統較多,一個原子管理單元(主機/庫/網絡接口等)發生問題后可能會影響多個上游鏈路系統快速論證快速論證回答回答組件域當前是否正常組件域當
27、前是否正常,對于故障分析、問題定位有重要意義L2級架構域:云原生體系(含變更、對上游業務影響、異常事件、告警)L3級架構域:K8S集群系統、云原生平臺、擴容組件系統L2級架構域L3級架構域(K8S原生組件)分享主題分享主題04未來的展望規劃未來的展望規劃未來未來規劃規劃下一階段還要持續推進哈啰內部云化中間件的混部進程,聚焦大算力應用的資源編排和成本優化數據庫、NoSQL的容器化工作,基于容器Cgroup隔離、以及類K8S資源編排模型的落地。目前哈啰內部已有部分業務開始生產化,還在持續建設中中后臺的算法模型、數據任務job場景有一定的實踐,業務大前端BFF層、無代碼工程建設上在持續探索基于時序預測模型能力,探索metrics異常指標提前發現,收斂告警系統誤報、漏報問題,提升故障發現、故障定位能力在離線的深度混部與調優在離線的深度混部與調優數據數據存儲容器化存儲容器化ServerlessServerless業務場景模式探索業務場景模式探索基于基于AIOPS&AIOPS&可觀測性可觀測性的的智能故障預測智能故障預測云原生云原生分享交流云原生分享交流云原生哈啰技術公眾號哈啰技術公眾號歡迎歡迎交流交流