當使用ASM管理多個叢集時,一個服務的工作負載可能會同時部署在多個叢集中。訪問服務時,流量預設在多叢集之間進行負載平衡。若您希望訪問服務時,流量只保持在本叢集中,可以使用叢集內流量保持功能。以Bookinfo應用為例,本文介紹如何在多叢集情境下啟用ASM本地叢集內流量保持功能。
前提條件
準備工作
步驟一:配置叢集的互訪聯通性
(可選)修改叢集的安全性群組名稱
將兩個叢集對應的安全性群組名稱修改為易於辨識的名稱,方便後續配置。本樣本安全性群組名稱配置為m1c1-sg和m1c2-sg。
添加安全性群組訪問規則
為兩個叢集添加安全性群組訪問規則,使叢集可以相互訪問。在m1c1-sg安全性群組配置介面,添加以m1c2-sg為授權對象的訪問規則;在m1c2-sg安全性群組規則配置介面,添加以m1c1-sg為授權對象的訪問規則。具體操作,請參見添加安全性群組規則。
步驟二:添加叢集到ASM執行個體並部署叢集的入口網關
將兩個叢集添加到ASM執行個體後,兩個叢集已實現訪問互連,因此只需為一個叢集部署入口網關即可。
將兩個叢集添加到ASM執行個體。具體操作,請參見添加叢集到ASM執行個體。
為m1c1叢集部署入口網關。具體操作,請參見建立入口網關。
步驟三:在兩個叢集中分別部署Bookinfo應用
本文以在兩個叢集中分別部署Bookinfo應用為例,驗證ASM叢集內流量保持功能。兩個叢集中服務的區別為m1c1中Reviews組件為v1版本,m1c2中Reviews組件為v2版本,其他保持一致。
使用bookinfo-with-reviews-v1.yaml,在m1c1中部署套件含v1版本的Reviews Deployment的Bookinfo應用。具體操作,請參見在ASM執行個體關聯的叢集中部署應用。
v1版本的Reviews Deployment在網頁的書評地區,將不展示星形評分。
使用bookinfo-with-reviews-v2.yaml,在m1c2中部署套件含v2版本的Reviews Deployment的Bookinfo應用。
v2版本的Reviews Deployment在網頁的書評地區,將以黑白五角星的形式展示評分。
步驟四:在ASM中建立網關規則、虛擬服務和目標規則
操作步驟
下文以按照服務等級開啟叢集內流量保持功能為例,將請求Reviews服務的流量保持在本叢集。關於按照全域或命名空間開啟叢集內流量保持功能的具體操作,請參見相關操作。
登入ASM控制台,在左側導覽列,選擇 。
在網格管理頁面,單擊目標執行個體名稱,然後在左側導覽列,選擇 。
在基本資料頁面的配置資訊地區,單擊叢集內流量保持右側的編輯。
在配置叢集內流量保持服務對話方塊,開啟開啟保持叢集內流量的能力開關,選中部分服務生效,然後單擊選擇服務。
在添加服務對話方塊,選中服務,命名空間選擇default,在選擇服務地區,選中reviews,單擊表徵圖,然後單擊確定。
配置完成後,在配置叢集內流量保持服務對話方塊,單擊確定。
在配置資訊地區,叢集內流量保持右側顯示已配置,表明叢集內流量保持功能已開啟。
驗證叢集內流量保持功能是否生效。
在瀏覽器訪問http://{入口網關IP}/productpage1,並重新整理網頁。
您可以看到書評地區始終不顯示評分。
在瀏覽器訪問http://{入口網關IP}/productpage2,並重新整理網頁。
您可以看到書評地區始終只顯示包含黑白星形評分。
以上結果表明叢集內流量保持功能生效。
結果分析
叢集內流量保持功能開啟前後,網格中流量的調用鏈路示意圖如下。
類型 | 說明 |
未開啟叢集內流量保持功能 | 在Bookinfo應用中,Productpage組件會調用Reviews服務以擷取書評資訊。在瀏覽器訪問http://{入口網關IP}/productpage1時,會訪問m1c1叢集中的Productpage;在瀏覽器訪問http://{入口網關IP}/productpage2時,會訪問m1c2叢集中的Productpage。 在m1c1和m1c2兩個叢集中都存在Reviews服務的工作負載。預設情況下,即使訪問某個特定叢集(例如m1c1叢集中的Productpage),對Reviews服務的請求也會在兩個叢集之間進行負載平衡。您可以在Productpage頁面的書評地區交替看到星形評分資訊。 |
已開啟叢集內流量保持功能 | 訪問某個特定叢集時(例如m1c1叢集中的Productpage),對Reviews服務的請求不會在兩個叢集之間進行負載平衡。您可以看到在Productpage頁面的書評地區始終不顯示評分,不會出現交替星形評分資訊的情況。 重要 流量保持功能開啟後,如果m1c1叢集中的Reviews-v1因故障等原因下線,Productpage無法通過訪問m1c2叢集中的Reviews-v2來提供服務。 |
如果您為一個服務開啟了叢集內流量保持功能,當其它服務的工作負載訪問此服務時,將只能訪問到該服務在同叢集內的端點。即使該服務在同叢集內的端點不可用,訪問該服務的流量目標也不會降級到該服務在其它叢集的端點。
如果您希望為服務實現叢集內流量保持的效果,同時實現流量降級,請參考基於流量規則配置實現流量泳道和流量降級,使用流量規則為不同叢集中的服務建立流量泳道並實現流量降級。
相關操作
按照全域開啟叢集內流量保持功能
在基本資料頁面的配置資訊地區,單擊叢集內流量保持右側的編輯。
在配置叢集內流量保持服務對話方塊,開啟開啟保持叢集內流量的能力開關,選中全部服務生效,然後單擊確定。
開啟後,叢集的流量都將保持在本叢集內。
按照命名空間開啟叢集內流量保持功能
在基本資料頁面的配置資訊地區,單擊叢集內流量保持右側的編輯。
在配置叢集內流量保持服務對話方塊,開啟開啟保持叢集內流量的能力開關,選中部分服務生效,然後單擊選擇服務。
在添加服務對話方塊,選中命名空間,在選擇服務地區,選中目標命名空間,單擊表徵圖,然後單擊確定。
在配置叢集內流量保持服務對話方塊,單擊確定。
開啟後,訪問目標命名空間下服務的流量都將保持在本叢集內。