多集群場(chǎng)景下啟用ASM本地集群內(nèi)流量保持功能
當(dāng)使用ASM管理多個(gè)集群時(shí),一個(gè)服務(wù)的工作負(fù)載可能會(huì)同時(shí)部署在多個(gè)集群中。訪問服務(wù)時(shí),流量默認(rèn)在多集群之間進(jìn)行負(fù)載均衡。若您希望訪問服務(wù)時(shí),流量只保持在本集群中,可以使用集群內(nèi)流量保持功能。以Bookinfo應(yīng)用為例,本文介紹如何在多集群場(chǎng)景下啟用ASM本地集群內(nèi)流量保持功能。
前提條件
已在同一VPC下創(chuàng)建兩個(gè)ACK集群(本文以m1c1和m1c2為例)。具體操作,請(qǐng)參見創(chuàng)建Kubernetes專有版集群。
已創(chuàng)建一個(gè)ASM實(shí)例,且版本為1.15.3.101及以上(本文以mesh1為例)。具體操作,請(qǐng)參見創(chuàng)建ASM實(shí)例。
準(zhǔn)備工作
步驟一:配置集群的互訪聯(lián)通性
(可選)修改集群的安全組名稱
將兩個(gè)集群對(duì)應(yīng)的安全組名稱修改為易于辨識(shí)的名稱,方便后續(xù)配置。本示例安全組名稱配置為m1c1-sg和m1c2-sg。
登錄ECS控制臺(tái),然后在左側(cè)導(dǎo)航欄,選擇 。
在頂部菜單欄,選擇目標(biāo)ECS實(shí)例所在的地域。
在安全組頁(yè)面,將鼠標(biāo)懸浮至目標(biāo)安全組名稱,單擊圖標(biāo),輸入名稱,然后單擊確定。
添加安全組訪問規(guī)則
為兩個(gè)集群添加安全組訪問規(guī)則,使集群可以相互訪問。在m1c1-sg安全組配置界面,添加以m1c2-sg為授權(quán)對(duì)象的訪問規(guī)則;在m1c2-sg安全組規(guī)則配置界面,添加以m1c1-sg為授權(quán)對(duì)象的訪問規(guī)則。具體操作,請(qǐng)參見添加安全組規(guī)則。
步驟二:添加集群到ASM實(shí)例并部署集群的入口網(wǎng)關(guān)
將兩個(gè)集群添加到ASM實(shí)例后,兩個(gè)集群已實(shí)現(xiàn)訪問互通,因此只需為一個(gè)集群部署入口網(wǎng)關(guān)即可。
將兩個(gè)集群添加到ASM實(shí)例。具體操作,請(qǐng)參見添加集群到ASM實(shí)例。
為m1c1集群部署入口網(wǎng)關(guān)。具體操作,請(qǐng)參見創(chuàng)建入口網(wǎng)關(guān)。
步驟三:在兩個(gè)集群中分別部署B(yǎng)ookinfo應(yīng)用
本文以在兩個(gè)集群中分別部署B(yǎng)ookinfo應(yīng)用為例,驗(yàn)證ASM集群內(nèi)流量保持功能。兩個(gè)集群中服務(wù)的區(qū)別為m1c1中Reviews組件為v1版本,m1c2中Reviews組件為v2版本,其他保持一致。
使用bookinfo-with-reviews-v1.yaml,在m1c1中部署包含v1版本的Reviews Deployment的Bookinfo應(yīng)用。具體操作,請(qǐng)參見在ASM實(shí)例關(guān)聯(lián)的集群中部署應(yīng)用。
v1版本的Reviews Deployment在網(wǎng)頁(yè)的書評(píng)區(qū)域,將不展示星形評(píng)分。
使用bookinfo-with-reviews-v2.yaml,在m1c2中部署包含v2版本的Reviews Deployment的Bookinfo應(yīng)用。
v2版本的Reviews Deployment在網(wǎng)頁(yè)的書評(píng)區(qū)域,將以黑白五角星的形式展示評(píng)分。
步驟四:在ASM中創(chuàng)建網(wǎng)關(guān)規(guī)則、虛擬服務(wù)和目標(biāo)規(guī)則
使用以下YAML,在ASM實(shí)例的default命名空間下創(chuàng)建網(wǎng)關(guān)規(guī)則。具體操作,請(qǐng)參見管理網(wǎng)關(guān)規(guī)則。
apiVersion: networking.istio.io/v1alpha3 kind: Gateway metadata: name: bookinfo-gateway spec: selector: istio: ingressgateway servers: - port: number: 80 name: http protocol: HTTP hosts: - "*"
使用以下YAML,在ASM實(shí)例的default命名空間下創(chuàng)建虛擬服務(wù)。具體操作,請(qǐng)參見管理虛擬服務(wù)。
apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: bookinfo-cluster-local spec: hosts: - "*" gateways: - bookinfo-gateway http: - match: - uri: exact: /productpage1 rewrite: uri: /productpage route: - destination: host: productpage port: number: 9080 subset: m1c1 - match: - uri: exact: /productpage2 rewrite: uri: /productpage route: - destination: host: productpage port: number: 9080 subset: m1c2 - match: - uri: prefix: /static - uri: exact: /login - uri: exact: /logout - uri: prefix: /api/v1/products route: - destination: host: productpage port: number: 9080
使用以下YAML,在ASM實(shí)例的default命名空間下創(chuàng)建目標(biāo)規(guī)則。具體操作,請(qǐng)參見管理目標(biāo)規(guī)則。
apiVersion: networking.istio.io/v1beta1 kind: DestinationRule metadata: name: productpage-cluster-local spec: host: productpage subsets: - name: m1c1 labels: cluster: m1c1 - name: m1c2 labels: cluster: m1c2
在瀏覽器訪問http://{入口網(wǎng)關(guān)IP}/productpage1或http://{入口網(wǎng)關(guān)ip}/productpage2,并刷新網(wǎng)頁(yè)。
關(guān)于如何查看入口網(wǎng)關(guān)IP,請(qǐng)參見創(chuàng)建入口網(wǎng)關(guān)。
若書評(píng)區(qū)域的星形評(píng)分交替出現(xiàn),表明Bookinfo應(yīng)用部署成功。
操作步驟
下文以按照服務(wù)級(jí)別開啟集群內(nèi)流量保持功能為例,將請(qǐng)求Reviews服務(wù)的流量保持在本集群。關(guān)于按照全局或命名空間開啟集群內(nèi)流量保持功能的具體操作,請(qǐng)參見相關(guān)操作。
登錄ASM控制臺(tái),在左側(cè)導(dǎo)航欄,選擇 。
在網(wǎng)格管理頁(yè)面,單擊目標(biāo)實(shí)例名稱,然后在左側(cè)導(dǎo)航欄,選擇 。
在基本信息頁(yè)面的配置信息區(qū)域,單擊集群內(nèi)流量保持右側(cè)的編輯。
在配置集群內(nèi)流量保持服務(wù)對(duì)話框,打開開啟保持集群內(nèi)流量的能力開關(guān),選中部分服務(wù)生效,然后單擊選擇服務(wù)。
在添加服務(wù)對(duì)話框,選中服務(wù),命名空間選擇default,在選擇服務(wù)區(qū)域,選中reviews,單擊圖標(biāo),然后單擊確定。
配置完成后,在配置集群內(nèi)流量保持服務(wù)對(duì)話框,單擊確定。
在配置信息區(qū)域,集群內(nèi)流量保持右側(cè)顯示已配置,表明集群內(nèi)流量保持功能已開啟。
驗(yàn)證集群內(nèi)流量保持功能是否生效。
在瀏覽器訪問http://{入口網(wǎng)關(guān)IP}/productpage1,并刷新網(wǎng)頁(yè)。
您可以看到書評(píng)區(qū)域始終不顯示評(píng)分。
在瀏覽器訪問http://{入口網(wǎng)關(guān)IP}/productpage2,并刷新網(wǎng)頁(yè)。
您可以看到書評(píng)區(qū)域始終只顯示包含黑白星形評(píng)分。
以上結(jié)果表明集群內(nèi)流量保持功能生效。
結(jié)果分析
集群內(nèi)流量保持功能開啟前后,網(wǎng)格中流量的調(diào)用鏈路示意圖如下。
類型 | 說明 |
未開啟集群內(nèi)流量保持功能 | 在Bookinfo應(yīng)用中,Productpage組件會(huì)調(diào)用Reviews服務(wù)以獲取書評(píng)信息。在瀏覽器訪問http://{入口網(wǎng)關(guān)IP}/productpage1時(shí),會(huì)訪問m1c1集群中的Productpage;在瀏覽器訪問http://{入口網(wǎng)關(guān)IP}/productpage2時(shí),會(huì)訪問m1c2集群中的Productpage。 在m1c1和m1c2兩個(gè)集群中都存在Reviews服務(wù)的工作負(fù)載。默認(rèn)情況下,即使訪問某個(gè)特定集群(例如m1c1集群中的Productpage),對(duì)Reviews服務(wù)的請(qǐng)求也會(huì)在兩個(gè)集群之間進(jìn)行負(fù)載均衡。您可以在Productpage頁(yè)面的書評(píng)區(qū)域交替看到星形評(píng)分信息。 |
已開啟集群內(nèi)流量保持功能 | 訪問某個(gè)特定集群時(shí)(例如m1c1集群中的Productpage),對(duì)Reviews服務(wù)的請(qǐng)求不會(huì)在兩個(gè)集群之間進(jìn)行負(fù)載均衡。您可以看到在Productpage頁(yè)面的書評(píng)區(qū)域始終不顯示評(píng)分,不會(huì)出現(xiàn)交替星形評(píng)分信息的情況。 重要 流量保持功能開啟后,如果m1c1集群中的Reviews-v1因故障等原因下線,Productpage無法通過訪問m1c2集群中的Reviews-v2來提供服務(wù)。 |
如果您為一個(gè)服務(wù)開啟了集群內(nèi)流量保持功能,當(dāng)其它服務(wù)的工作負(fù)載訪問此服務(wù)時(shí),將只能訪問到該服務(wù)在同集群內(nèi)的端點(diǎn)。即使該服務(wù)在同集群內(nèi)的端點(diǎn)不可用,訪問該服務(wù)的流量目標(biāo)也不會(huì)降級(jí)到該服務(wù)在其它集群的端點(diǎn)。
如果您希望為服務(wù)實(shí)現(xiàn)集群內(nèi)流量保持的效果,同時(shí)實(shí)現(xiàn)流量降級(jí),請(qǐng)參考基于流量規(guī)則配置實(shí)現(xiàn)流量泳道和流量降級(jí),使用流量規(guī)則為不同集群中的服務(wù)創(chuàng)建流量泳道并實(shí)現(xiàn)流量降級(jí)。
相關(guān)操作
按照全局開啟集群內(nèi)流量保持功能
在基本信息頁(yè)面的配置信息區(qū)域,單擊集群內(nèi)流量保持右側(cè)的編輯。
在配置集群內(nèi)流量保持服務(wù)對(duì)話框,打開開啟保持集群內(nèi)流量的能力開關(guān),選中全部服務(wù)生效,然后單擊確定。
開啟后,集群的流量都將保持在本集群內(nèi)。
按照命名空間開啟集群內(nèi)流量保持功能
在基本信息頁(yè)面的配置信息區(qū)域,單擊集群內(nèi)流量保持右側(cè)的編輯。
在配置集群內(nèi)流量保持服務(wù)對(duì)話框,打開開啟保持集群內(nèi)流量的能力開關(guān),選中部分服務(wù)生效,然后單擊選擇服務(wù)。
在添加服務(wù)對(duì)話框,選中命名空間,在選擇服務(wù)區(qū)域,選中目標(biāo)命名空間,單擊圖標(biāo),然后單擊確定。
在配置集群內(nèi)流量保持服務(wù)對(duì)話框,單擊確定。
開啟后,訪問目標(biāo)命名空間下服務(wù)的流量都將保持在本集群內(nèi)。