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