您可以為部署在EDAS K8s環境中的Spring Cloud和Dubbo微服務應用配置全鏈路流量控制,將具有一定特征的流量路由到目標版本應用。
前提條件
為應用配置全鏈路流量控制,需要提前完成以下工作:
部署新版本應用或升級應用。具體操作,請參見升級和回滾應用概述(K8s)。
如果入口應用是Spring Cloud Gateway或Netflix Zuul微服務網關,需提前創建微服務網關并綁定EDAS微服務空間。具體操作,請參見新建云原生網關或Zuul網關用戶指南。
使用Spring Cloud Gateway作為入口網關時,需要Spring Cloud Gateway的版本在2.1.x及以上。
如果您有其他網關的需求,歡迎您使用釘釘掃描搜索釘釘群號31723701加入釘釘群聯系我們。
背景信息
本文以電商架構中的下單場景為例介紹全鏈路流控功能。
客戶下單后流量從入口應用(或者微服務網關)進來,調用交易中心,交易中心再調用商品中心,商品中心調用下游的庫存中心。
交易中心和商品中心各有兩個新版本(1和2)在運行,需要對這兩個新版本進行灰度驗證。此時在入口應用(或者微服務網關)上期望將滿足特定流控規則的請求流量路由到新版本,其余流量全部路由到線上(正式)版本。
視頻教程
本視頻介紹全鏈路流控的基本功能,幫助您理解和使用。
創建泳道組
登錄EDAS控制臺。
在左側導航欄選擇 。
在全鏈路流量控制頁面頂部菜單欄選擇地域,在頁面中選擇目標微服務空間。
在全鏈路流量控制頁面,單擊創建。
如果您選擇的微服務空間內已經創建過泳道組,則在選擇泳道組文本框右側,單擊創建。
說明一個微服務空間內,最多創建2個泳道組。
在創建泳道對話框設置泳道組相關參數,然后單擊確定。
配置項
描述
微服務空間
在全鏈路流量控制頁面所選目標微服務空間,不可編輯。
泳道組名稱
自定義設置泳道組的名稱。支持大小寫字母、數字、短劃線(-)和下劃線(_),長度不超過64個字符。
入口類型
選擇入口應用(在EDAS部署應用/網關)。
入口應用
根據實際情況選擇目標應用。
泳道組涉及所有應用
單擊添加流控鏈路涉及應用,選擇您的入口應用或入口網關所涉及的所有相關服務。
創建泳道組完成后,在全鏈路流量控制頁面的泳道組涉及應用區域出現您所創建的泳道組。請檢查入口應用和所涉及的應用是否正確,如需變更泳道組信息,請單擊編輯并修改相關信息。
創建泳道
在全鏈路流量控制頁面上方選擇創建和泳道組時相同的微服務空間,然后底部單擊創建泳道。
重要加入全鏈路流量控制的應用,將不再支持金絲雀發布。
在創建流控泳道面板設置流控泳道相關參數,然后單擊確定。
配置項
描述
微服務空間
默認為在全鏈路流量控制頁面選擇的微服務空間,而且需要保證該微服務空間之前已經創建了泳道組,不可編輯。
流控泳道名稱
自定義設置流控泳道的名稱。支持大小寫字母、數字、短劃線(-)和下劃線(_),長度不超過64個字符。
接收打標流量應用
單擊添加泳道應用,在所屬泳道組內選擇應用。
說明您可以在同一個流控泳道選擇多個應用,也可以為每個應用創建一個流控泳道。
不同規格的EDAS,泳道組和泳道的配額不一樣。更多內容,請參見全鏈路流量控制簡介。
創建泳道時,支持不設置接收打標流量應用,可在編輯泳道時設置接受打標流量應用。
流控規則
開關
流控路由開關,默認打開。
Path
HTTP相對路徑,置空表示任意路徑。請根據實際情況設置。
條件模式
請根據實際需要選擇條件模式,包含同時滿足下列條件和滿足下列任一條件:
同時滿足下列條件:必須同時滿足設置的所有條件才能生效。
滿足下列任一條件:只需滿足任一條件即可生效。
條件列表
單擊添加規則條件,可根據需要添加多項條件。您可以設置Cookie、Header、Parameter和等不同類型的條件。
本示例中添加的條件為:
參數類型為Parameter,參數env=red,即滿足該條件時,流量進入到1.0版本的服務中。
參數類型為Parameter,參數env=blue,即滿足該條件時,流量進入到2.0版本的服務中。
創建泳道成功后,在全鏈路流量控制頁面的流控分配區域出現您所創建的泳道。請檢查泳道名稱、流控規則和打標應用是否正確,如需修改泳道信息,請單擊編輯修改泳道相關信息。
可選:如需創建多條泳道,在流控分配區域,單擊創建泳道并設置泳道相關參數。
說明一個泳道組內,最多支持創建5條泳道。
驗證特征流量路由到目標應用
獲取入口應用或者入口網關的負載均衡SLB的地址。
在應用管理>應用列表頁面,單擊入口應用的名稱。
在應用總覽頁面的訪問方式配置區域,復制并記錄負載均衡SLB的地址。
在瀏覽器或者其他工具上多次訪問泳道組內的打標應用。
假設在瀏覽器中輸入http://ip:port/**?env=red訪問交易中心應用,返回結果只會有一種,即表示實現了將特征流量路由到目標應用。
其中**是流控規則中的Path,env=red是流控規則中的條件。
A2[172.20.**.**] -> B2[172.20.**.**] -> C[172.20.**.**]
如何配置兩個版本的相同應用
用相同的包創建兩個相同的應用,且注冊相同服務。
將其中一個應用拉入泳道,該應用即為灰度環境中的應用。然后用灰度版本的包在灰度環境中部署應用即得到兩個版本的相同應用。