使用ASM網(wǎng)關(guān)的流量路由功能
服務(wù)網(wǎng)格 ASM(Service Mesh)為網(wǎng)關(guān)提供了直觀的圖形化界面,您可以直接在控制臺(tái)創(chuàng)建目標(biāo)規(guī)則和虛擬服務(wù),而無(wú)需編寫YAML文件,大幅簡(jiǎn)化了流量管理操作。本文介紹如何使用圖形化的方式創(chuàng)建流量策略和路由策略。
前提條件
已添加集群到ASM實(shí)例。具體操作,請(qǐng)參見添加集群到ASM實(shí)例。
已為命名空間注入Sidecar。具體操作,請(qǐng)參見啟用自動(dòng)注入。
已部署入口網(wǎng)關(guān)。具體操作,請(qǐng)參見創(chuàng)建入口網(wǎng)關(guān)。
已部署應(yīng)用到ASM實(shí)例關(guān)聯(lián)的集群。具體操作,請(qǐng)參見在ASM實(shí)例關(guān)聯(lián)的集群中部署應(yīng)用。
已獲取ASM網(wǎng)關(guān)地址。具體操作,請(qǐng)參見獲取入口網(wǎng)關(guān)地址。
示例說明
本文以Reviews服務(wù)為例,使用圖形化的方式設(shè)置服務(wù)的負(fù)載均衡、連接池等流量策略,流量策略創(chuàng)建成功后,將自動(dòng)生成對(duì)應(yīng)目標(biāo)規(guī)則的YAML文件。以Bookinfo服務(wù)為例,使用圖形化的方式為Bookinfo服務(wù)創(chuàng)建/productpage
、/login
等路由策略,從而可以通過/productpage
等路徑訪問到Bookinfo服務(wù)。
創(chuàng)建域名
登錄ASM控制臺(tái),在左側(cè)導(dǎo)航欄,選擇 。
在網(wǎng)格管理頁(yè)面,單擊目標(biāo)實(shí)例名稱,然后在左側(cè)導(dǎo)航欄,選擇 。
在入口網(wǎng)關(guān)頁(yè)面,單擊目標(biāo)網(wǎng)關(guān)的名稱。在網(wǎng)關(guān)概覽頁(yè)面左側(cè)導(dǎo)航欄,單擊域名/證書。
在新建域名頁(yè)面,按照以下內(nèi)容進(jìn)行配置。單擊創(chuàng)建。
配置項(xiàng)
示例
域名
*
協(xié)議
HTTP
命名空間
default
端口名稱
http
端口
80
導(dǎo)入上游服務(wù)
在ASM網(wǎng)關(guān)中導(dǎo)入服務(wù),以關(guān)聯(lián)網(wǎng)關(guān)與服務(wù)。
在入口網(wǎng)關(guān)頁(yè)面,單擊目標(biāo)網(wǎng)關(guān)的名稱。在網(wǎng)關(guān)概覽頁(yè)面左側(cè)導(dǎo)航欄,單擊上游服務(wù)。
在上游服務(wù)頁(yè)面,單擊導(dǎo)入服務(wù)。在導(dǎo)入服務(wù)頁(yè)面,選擇命名空間,選中reviews和productpage服務(wù),單擊圖標(biāo),然后單擊確認(rèn)。
創(chuàng)建流量策略
對(duì)服務(wù)進(jìn)行版本管理。
本文將reviews服務(wù)分為v1、v2、v3來進(jìn)行分組。
在上游服務(wù)頁(yè)面,單擊reviews服務(wù)右側(cè)操作列下的版本管理。
在版本管理頁(yè)面,單擊添加服務(wù)版本(子集),輸入版本名稱為v1,單擊添加標(biāo)簽,設(shè)置標(biāo)簽名為version,標(biāo)簽值為v1。
單擊添加服務(wù)版本(子集),輸入版本名稱為v2,單擊添加標(biāo)簽,設(shè)置標(biāo)簽名為version,標(biāo)簽值為v2。
再次單擊添加服務(wù)版本(子集),輸入版本名稱為v3,單擊添加標(biāo)簽,設(shè)置標(biāo)簽名為version,標(biāo)簽值為v3,然后單擊創(chuàng)建。
創(chuàng)建流量策略。
在上游服務(wù)頁(yè)面,單擊reviews服務(wù)右側(cè)操作列下的流量策略。
在流量策略頁(yè)面,單擊添加策略,選擇版本流量策略,選擇v3版本,打開負(fù)載均衡開關(guān),選擇簡(jiǎn)單模式,設(shè)置均衡方式為隨機(jī),然后單擊提交。
(可選)查看流量策略創(chuàng)建成功后生成的目標(biāo)規(guī)則的YAML文件。
在上游服務(wù)頁(yè)面,單擊reviews服務(wù)右側(cè)操作列下的查看YAML,在預(yù)覽對(duì)話框,查看YAML文件,確認(rèn)無(wú)誤后,單擊確認(rèn)。
說明您也可以在網(wǎng)格詳情頁(yè)面左側(cè)導(dǎo)航欄,選擇
。在目標(biāo)規(guī)則頁(yè)面,單擊目標(biāo)規(guī)則右側(cè)操作列下的查看YAML。在編輯對(duì)話框,查看生成的目標(biāo)規(guī)則的YAML文件。apiVersion: networking.istio.io/v1beta1 kind: DestinationRule metadata: name: reviews namespace: default labels: provider: asm spec: host: reviews subsets: - name: v1 labels: version: v1 - name: v2 labels: version: v2 - name: v3 labels: version: v3 trafficPolicy: loadBalancer: simple: RANDOM
創(chuàng)建路由策略
創(chuàng)建路由策略。
創(chuàng)建
/productpage
路由。在網(wǎng)關(guān)概覽頁(yè)面左側(cè)導(dǎo)航欄,單擊路由管理,然后單擊創(chuàng)建。
在設(shè)置路由信息配置向?qū)ВM(jìn)行相關(guān)配置,單擊下一步。
配置項(xiàng)
示例
路由類型
本文配置為http。
命名空間
本文配置為default。
路由名稱
本文配置為
productpage-route
。描述
本文配置為
productpage路由
。優(yōu)先級(jí)
本文配置為
3
。說明路由配置存在優(yōu)先級(jí)關(guān)系,優(yōu)先級(jí)數(shù)字越小,表示優(yōu)先級(jí)越高,如果URI被多個(gè)路由規(guī)則都能進(jìn)行匹配,優(yōu)先匹配高優(yōu)先級(jí)。
匹配規(guī)則
設(shè)置URL匹配,只有符合要求的URL才能路由到目標(biāo)服務(wù)。
打開匹配請(qǐng)求的URI開關(guān),配置匹配方式為精確,匹配內(nèi)容為
/productpage
。說明您也可以單擊添加Header匹配規(guī)則,設(shè)置Header匹配。
在設(shè)置路由目的地配置向?qū)ВM(jìn)行相關(guān)配置,然后單擊下一步。
配置項(xiàng)
示例
選擇上游服務(wù)
設(shè)置路由策略生效的服務(wù)。此處選擇productpage。
端口
非必填項(xiàng)。設(shè)置上游服務(wù)中暴露出來的指定端口。上游服務(wù)可能暴露多個(gè)端口,如果有多個(gè)端口,需要進(jìn)行指定。此處留空。
版本
設(shè)置路由策略生效的版本。此處留空。
權(quán)重
設(shè)置路由的目標(biāo)服務(wù)的流量權(quán)重。此處留空。
在高級(jí)選項(xiàng)配置向?qū)В蜷_故障注入開關(guān),打開請(qǐng)求延時(shí)開關(guān),設(shè)置延時(shí)值為4s,故障注入百分比為100,單擊創(chuàng)建。
創(chuàng)建
/static
路由。在路由管理頁(yè)面,單擊創(chuàng)建。
在設(shè)置路由信息配置向?qū)ВM(jìn)行相關(guān)配置,單擊下一步。
配置項(xiàng)
示例
路由類型
本文配置為http。
命名空間
本文配置為default。
路由名稱
本文配置為
static
。描述
本文配置為
static資源
。優(yōu)先級(jí)
本文配置為
0
。匹配規(guī)則
設(shè)置URL匹配,只有符合要求的URL才能路由到目標(biāo)服務(wù)。
打開匹配請(qǐng)求的URI開關(guān),配置匹配方式為前綴,匹配內(nèi)容為
/static
。創(chuàng)建
/static
路由的后續(xù)步驟與創(chuàng)建/productpage
路由相同,具體操作,請(qǐng)參見創(chuàng)建productpage路由 。
創(chuàng)建
/login
路由。在路由管理頁(yè)面,單擊創(chuàng)建。
在設(shè)置路由信息配置向?qū)ВM(jìn)行相關(guān)配置,然后單擊下一步。
配置項(xiàng)
示例
路由類型
本文配置為http
命名空間
本文配置為default。
路由名稱
本文配置為
login
。描述
本文配置為
登錄請(qǐng)求路由
。優(yōu)先級(jí)
本文配置為
0
。匹配規(guī)則
設(shè)置URL匹配,只有符合要求的URL才能路由到目標(biāo)服務(wù)。
打開匹配請(qǐng)求的URI開關(guān),配置匹配方式為前綴,匹配內(nèi)容為
/login
。創(chuàng)建
/login
路由的后續(xù)步驟與創(chuàng)建/productpage
路由相同,具體操作,請(qǐng)參見創(chuàng)建productpage路由 。
創(chuàng)建
/logout
路由。在路由管理頁(yè)面,單擊創(chuàng)建。
在設(shè)置路由信息配置向?qū)ВM(jìn)行相關(guān)配置,然后單擊下一步。
配置項(xiàng)
示例
路由類型
本文配置為http。
命名空間
本文配置為default。
路由名稱
本文配置為
logout
。描述
本文配置為
登出路由
。優(yōu)先級(jí)
本文配置為
0
。匹配規(guī)則
設(shè)置URL匹配,只有符合要求的URL才能路由到目標(biāo)服務(wù)。
打開匹配請(qǐng)求的URI開關(guān),配置匹配方式為前綴,匹配內(nèi)容為/logout。
創(chuàng)建/logout路由的后續(xù)步驟與創(chuàng)建/productpage路由相同,具體操作,請(qǐng)參見創(chuàng)建productpage路由 。
創(chuàng)建
/api/v1/products
路由。在路由管理頁(yè)面,單擊創(chuàng)建。
在設(shè)置路由信息配置向?qū)ВM(jìn)行相關(guān)配置,然后單擊下一步。
配置項(xiàng)
說明
路由類型
本文配置為http。
命名空間
本文配置為default。
路由名稱
本文配置為
products-route
。描述
本文配置為
product信息
。優(yōu)先級(jí)
本文配置為
0
。匹配規(guī)則
設(shè)置URL匹配,只有符合要求的URL才能路由到目標(biāo)服務(wù)。
打開匹配請(qǐng)求的URI開關(guān),配置匹配方式為前綴,匹配內(nèi)容為
/api/v1/products
。創(chuàng)建
/api/v1/products
路由的后續(xù)步驟與創(chuàng)建/productpage
路由相同,具體操作,請(qǐng)參見創(chuàng)建productpage路由 。
驗(yàn)證路由策略是否生效。
在瀏覽器地址欄,輸入
http://{入口網(wǎng)關(guān)的IP地址}/productpage
。示例效果如下。
在Bookinfo頁(yè)面右上角,單擊Sign in。
在Please sign in輸入任意賬號(hào)和密碼,單擊Sign in。
可以看到能夠正常登錄到Bookinfo。
您還可以自行使用/logout、/static、/api/v1/products訪問Bookinfo服務(wù)進(jìn)行驗(yàn)證。
打開瀏覽器的開發(fā)人員工具,切換到網(wǎng)絡(luò)標(biāo)簽。
刷新頁(yè)面。
可以看到約4s的延遲。
(可選)查看路由策略創(chuàng)建成功后生成的虛擬服務(wù)的YAML文件。
在網(wǎng)格詳情頁(yè)面左側(cè)導(dǎo)航欄,選擇 。
在虛擬服務(wù)頁(yè)面,單擊目標(biāo)虛擬服務(wù)右側(cè)操作列下的查看YAML。
在編輯對(duì)話框,查看生成的虛擬服務(wù)的YAML文件。確認(rèn)無(wú)誤后,單擊確定。
相關(guān)操作
查看服務(wù)詳情
查看導(dǎo)入服務(wù)的是否注入Sidecar、地域等信息。
在入口網(wǎng)關(guān)頁(yè)面,單擊目標(biāo)網(wǎng)關(guān)的名稱。在網(wǎng)關(guān)概覽頁(yè)面左側(cè)導(dǎo)航欄,單擊上游服務(wù)。
在上游服務(wù)頁(yè)面,單擊目標(biāo)服務(wù)右側(cè)操作列下的服務(wù)詳情。在服務(wù)詳情頁(yè)面,查看服務(wù)是否注入Sidecar、地域等信息。
路由下線
下線路由策略,使該路由策略失效。
在入口網(wǎng)關(guān)頁(yè)面,單擊目標(biāo)網(wǎng)關(guān)的名稱。
在網(wǎng)關(guān)概覽頁(yè)面左側(cè)導(dǎo)航欄,單擊路由管理。
在路由管理頁(yè)面,單擊目標(biāo)路由右側(cè)操作列下的下線。
在確認(rèn)對(duì)話框,單擊確定。
驗(yàn)證路由下線是否成功。
在瀏覽器地址欄,輸入
http://{入口網(wǎng)關(guān)的IP地址}/productpage
。在Bookinfo頁(yè)面右上角,單擊Sign in。
在Please sign in輸入任意賬號(hào)和密碼,單擊Sign in。
可以看到頁(yè)面顯示找不到網(wǎng)頁(yè),說明目標(biāo)路由策略失效,路由下線成功。
說明您也可以通過以下方式上線路由策略,使路由策略中重新生效:
在路由管理頁(yè)面,單擊目標(biāo)路由右側(cè)操作列下的上線,然后在確認(rèn)對(duì)話框,單擊確定。