《Tengine-Ingress 高性能高可用云原生網關-鄧波.pdf》由會員分享,可在線閱讀,更多相關《Tengine-Ingress 高性能高可用云原生網關-鄧波.pdf(32頁珍藏版)》請在三個皮匠報告上搜索。
1、Tengine-Ingress 高性能高可用云原生網關鄧波 阿里巴巴自我介紹阿里花名:光錐從業經驗互聯網后端技術10年+2016年加入阿里,專注淘天集團接入網關的技術演進主導推進云原生網關 Tengine-Ingress 的技術開源大綱云原生網關云原生網關設計背景設計背景超大規模網關超大規模網關設計及挑戰設計及挑戰實際應用實際應用未來未來規劃規劃132云原生網關云原生網關設計背景設計背景網關解決的核心問題連接用戶與業務的橋梁端側和業務多樣性-服務治理多種協議支持靈活的路由策略邊界控制集中式的訪問控制和流量清洗面向開發者友好交互界面/標準API統一的監控和日志采集高可用機制網關能力圖譜管控協議I
2、ngress/Gateway API/REST API產品接入流程控制可觀察性網絡協議QUIC/TLS/SSL 流量管理多維度路由/服務發現管理自定義擴展高可用機制云原生背景下網關發展標準化標準化熱更新熱更新擴展性擴展性統一API標準部署方式標準化Ingress APIGateway API支撐豐富的插件化生態配置無損熱更新Tengine-Ingress 云原生網關Tengine-Ingress 定位于支撐超大規模、復雜業務系統的,支持動態、高性能、可擴展的云原生網關。超大規模超大規模復雜業務復雜業務云原生云原生標準協議標準協議超大規模網關超大規模網關設計與挑戰設計與挑戰Tengine-Ing
3、ress云原生架構概覽高性能低延遲實現配置熱更新實現高可用機制:灰度變更高可用機制:配置一致性校驗多維度精細化路由實現云原生架構標準協議兼容Ingress API配置存儲k8s apiserver可獨立部署服務發現k8s service自定義服務發現云原生部署監控高性能低延遲實現代碼性能優化協議優化集成自研 XQUIC網絡耗時降低15%RPC場景核心鏈路使用C模塊XUDP實現卡頓率降低20%短視頻場景上傳速率提升27%上傳場景吞吐性能提升30%-50%QUIC協議配置熱更新-背景集團原有網關方案基于 tengine reload 定時生效reload 過程會導致客戶端斷鏈,影響請求平滑性生效時
4、延較長,最低 4 小時生效時延無法滿足業務訴求,需要實時無損生效開源 kubernetes/ingress-nginx技術方案上仍需要 reload 更新Tengine-Ingress 網關基于 Tengine 實現熱更新配置熱更新-實現實時無損生效配置更新交互使用共享內存,本地持久化讀寫分離:配置解析寫入過程不卡頓 worker 進程快速恢復演練-做最壞的打算k8s apiserver 異常無法更新配置,不影響存量業務Controller 進程在更新/運行過程中掛掉無法更新配置,不影響存量業務Controller 異常后 POD 被重啟啟動后 Tengine 自動拉起,使用本地持久化配置無法
5、更新配置,啟動后不影響存量業務Tengine 本地持久化文件寫壞本地持久化配置定時快照,可一鍵恢復歷史快照啟動無法更新配置,回退快照時間點之后的接入被舍棄如何保障變更過程網關的可靠性?變更過程異常如何及時感知?業務如何小規模驗證變更有效性?高可用機制高可用機制灰度變更灰度變更配置灰度更新版本管理變更過程存在兩個版本ControllerRevision資源管理版本灰度控制由管控控制灰度比例業務方可控制暫?;叶然叶壬谢叶确秶掳娓婢钄喈惓8婢钄嘧兏鞒膛渲脛摻?更新灰度推進流程配置灰度更新-annotation擴展文檔:https:/tengine.taobao.org/docume
6、nt/ingress_annotations.html是否啟用灰度nginx.ingress.kubernetes.io/ingress-rollout灰度版本控制nginx.ingress.kubernetes.io/ingress-rollout-current-revisionnginx.ingress.kubernetes.io/ingress-rollout-update-revision灰度生效范圍nginx.ingress.kubernetes.io/ingress-rollout-index-id灰度配置更新-管控流程如何保障上千機器,每臺機器十萬配置一致性?出現個別機器配置不
7、一致如何及時感知?高可用機制高可用機制一致性校驗一致性校驗超大規模配置全局一致性IngressCheckSum全量Ingress排序后計算MD5允許存在多個CheckSum運行時計算全量Ingress MD5命中其中一個CheckSum即可IngressCheckSum清理灰度周期完成后清理問題發現時延一個灰度生命周期10min級別一致性校驗流程配置一致性-CRD擴展文檔:https:/tengine.taobao.org/document/ingress_crd.htmlCheckSum CRDingresschecksums.tengine.taobao.orgsecretchecksum
8、s.tengine.taobao.orgtype IngressCheckSumSpec struct/The timestamp when the checksum was generatedTimestamp*uint64 json:timestamp/Checksum value which generated using a hash methodChecksum string json:checksum,omitempty/The IDs of all ingress are used to calculate the checksum/When the checksum is in
9、consistent,it can be used to compare the differences/+kubebuilder:validation:OptionalIds string json:ids,omitempty多維度精細化路由靈活的配置協議滿足數萬應用路由訴求路由規則匹配支持不同維度多種匹配能力規則的與/或組合業務使用場景請求條件打標灰度驗證/放量ab 測試分場景流量隔離精細化路由 annotation 擴展文檔:https:/tengine.taobao.org/document/ingress_annotations.html不同維度匹配注解nginx.ingress.k
10、ubernetes.io/canary-by-header-valuenginx.ingress.kubernetes.io/canary-by-cookie-valuenginx.ingress.kubernetes.io/canary-by-query-value命中規則Action注解nginx.ingress.kubernetes.io/canary-request-add-headernginx.ingress.kubernetes.io/canary-request-add-querynginx.ingress.kubernetes.io/canary-response-add-h
11、eader同ingress-nginx實現優勢對比功能功能Ingress-NginxTengine-Ingress數據面實現數據面實現nginxtengine配置生效配置生效Reload生效熱更新灰度變更灰度變更不支持支持一致性校驗一致性校驗不支持支持路由匹配路由匹配規則相對簡單更為精細靈活實際應用實際應用未來規劃未來規劃Tengine-Ingress 在淘天集團的應用淘天集團應用規模多場景多集群落地數萬域名接入/十萬級路由熱更新無損動態生效,無需reload生效時延 10min(灰度時延)灰度變更域名級灰度,用戶可暫?;叶葮O大降低變更風險可觀察性Prometheus 透出監控指標域名粒度監控Tengine-Ingress 開源Tengine:https:/ API 協議演進