全部產品
Search
文件中心

Alibaba Cloud Service Mesh:使用ASM網關的流量路由功能

更新時間:Dec 04, 2024

Service Mesh (ASM)為網關提供了直觀的圖形化介面,您可以直接在控制台建立目標規則和虛擬服務,而無需編寫YAML檔案,大幅簡化了流量管理操作。本文介紹如何使用圖形化的方式建立流量策略和路由策略。

前提條件

樣本說明

本文以Reviews服務為例,使用圖形化的方式設定服務的負載平衡、串連池等流量策略,流量策略建立成功後,將自動產生對應目標規則的YAML檔案。以Bookinfo服務為例,使用圖形化的方式為Bookinfo服務建立/productpage/login等路由策略,從而可以通過/productpage等路徑訪問到Bookinfo服務。

建立網域名稱

  1. 登入ASM控制台,在左側導覽列,選擇服務網格 > 網格管理

  2. 網格管理頁面,單擊目標執行個體名稱,然後在左側導覽列,選擇ASM網關 > 入口網關

  3. 入口網關頁面,單擊目標網關的名稱。在網關概覽頁面左側導覽列,單擊網域名稱/認證

  4. 建立網域名稱頁面,按照以下內容進行配置。單擊建立

    配置項

    樣本

    網域名稱

    *

    協議

    HTTP

    命名空間

    default

    連接埠名稱

    http

    連接埠

    80

    image

匯入上遊服務

在ASM網關中匯入服務,以關連網關與服務。

  1. 入口網關頁面,單擊目標網關的名稱。在網關概覽頁面左側導覽列,單擊上遊服務

  2. 上遊服務頁面,單擊匯入服務。在匯入服務頁面,選擇命名空間,選中reviewsproductpage服務,單擊上遊服務表徵圖,然後單擊確認

    匯入服務

建立流量策略

  1. 對服務進行版本管理。

    本文將reviews服務分為v1、v2、v3來進行分組。

    1. 上遊服務頁面,單擊reviews服務右側操作列下的版本管理

    2. 版本管理頁面,單擊添加服務版本(子集),輸入版本名稱為v1,單擊添加標籤,設定標籤名為version,標籤值為v1。

    3. 單擊添加服務版本(子集),輸入版本名稱為v2,單擊添加標籤,設定標籤名為version,標籤值為v2。

    4. 再次單擊添加服務版本(子集),輸入版本名稱為v3,單擊添加標籤,設定標籤名為version,標籤值為v3,然後單擊建立

  2. 建立流量策略。

    1. 上遊服務頁面,單擊reviews服務右側操作列下的流量策略

    2. 流量策略頁面,單擊添加策略,選擇版本流量策略,選擇v3版本,開啟負載平衡開關,選擇簡單模式,設定均衡方式隨機,然後單擊提交

      流量策略

  3. 可選)查看流量策略建立成功後產生的目標規則的YAML檔案。

    上遊服務頁面,單擊reviews服務右側操作列下的查看YAML,在預覽對話方塊,查看YAML檔案,確認無誤後,單擊確認

    說明

    您也可以在網格詳情頁面左側導覽列,選擇流量管理中心 > 目標規則。在目標規則頁面,單擊目標規則右側操作列下的查看YAML。在編輯對話方塊,查看產生的目標規則的YAML檔案。

    展開查看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

建立路由策略

  1. 建立路由策略。

    1. 建立/productpage路由。

      1. 在網關概覽頁面左側導覽列,單擊路由管理,然後單擊建立

      2. 設定路由資訊設定精靈,進行相關配置,單擊下一步

        配置項

        樣本

        路由類型

        本文配置為http

        命名空間

        本文配置為default

        路由名稱

        本文配置為productpage-route

        描述

        本文配置為productpage路由

        優先順序

        本文配置為3

        說明

        路由配置存在優先順序關係,優先順序數字越小,表示優先順序越高,如果URI被多個路由規則都能進行匹配,優先匹配高優先順序。

        匹配規則

        設定URL匹配,只有符合要求的URL才能路由到目標服務。

        開啟匹配請求的URI開關,配置匹配方式精確匹配內容/productpage

        說明

        您也可以單擊添加Header匹配規則,設定Header匹配。

      3. 設定路由目的地設定精靈,進行相關配置,然後單擊下一步

        配置項

        樣本

        選擇上遊服務

        設定路由策略生效的服務。此處選擇productpage

        連接埠

        非必填項。設定上遊服務中暴露出來的指定連接埠。上遊服務可能暴露多個連接埠,如果有多個連接埠,需要進行指定。此處留空。

        版本

        設定路由策略生效的版本。此處留空。

        權重

        設定路由的目標服務的流量權重。此處留空。

      4. 進階選項設定精靈,開啟故障注入開關,開啟請求延時開關,設定延時值4s故障注入百分比100,單擊建立

    2. 建立/static路由。

      1. 路由管理頁面,單擊建立

      2. 設定路由資訊設定精靈,進行相關配置,單擊下一步

        配置項

        樣本

        路由類型

        本文配置為http

        命名空間

        本文配置為default

        路由名稱

        本文配置為static

        描述

        本文配置為static資源

        優先順序

        本文配置為0

        匹配規則

        設定URL匹配,只有符合要求的URL才能路由到目標服務。

        開啟匹配請求的URI開關,配置匹配方式首碼匹配內容/static

      3. 建立/static路由的後續步驟與建立/productpage路由相同,具體操作,請參見建立productpage路由

    3. 建立/login路由。

      1. 路由管理頁面,單擊建立

      2. 設定路由資訊設定精靈,進行相關配置,然後單擊下一步

        配置項

        樣本

        路由類型

        本文配置為http

        命名空間

        本文配置為default

        路由名稱

        本文配置為login

        描述

        本文配置為登入請求路由

        優先順序

        本文配置為0

        匹配規則

        設定URL匹配,只有符合要求的URL才能路由到目標服務。

        開啟匹配請求的URI開關,配置匹配方式首碼匹配內容/login

      3. 建立/login路由的後續步驟與建立/productpage路由相同,具體操作,請參見建立productpage路由

    4. 建立/logout路由。

      1. 路由管理頁面,單擊建立

      2. 設定路由資訊設定精靈,進行相關配置,然後單擊下一步

        配置項

        樣本

        路由類型

        本文配置為http

        命名空間

        本文配置為default

        路由名稱

        本文配置為logout

        描述

        本文配置為登出路由

        優先順序

        本文配置為0

        匹配規則

        設定URL匹配,只有符合要求的URL才能路由到目標服務。

        開啟匹配請求的URI開關,配置匹配方式首碼匹配內容/logout

      3. 建立/logout路由的後續步驟與建立/productpage路由相同,具體操作,請參見建立productpage路由

    5. 建立/api/v1/products路由。

      1. 路由管理頁面,單擊建立

      2. 設定路由資訊設定精靈,進行相關配置,然後單擊下一步

        配置項

        說明

        路由類型

        本文配置為http

        命名空間

        本文配置為default

        路由名稱

        本文配置為products-route

        描述

        本文配置為product資訊

        優先順序

        本文配置為0

        匹配規則

        設定URL匹配,只有符合要求的URL才能路由到目標服務。

        開啟匹配請求的URI開關,配置匹配方式首碼匹配內容/api/v1/products

      3. 建立/api/v1/products路由的後續步驟與建立/productpage路由相同,具體操作,請參見建立productpage路由

  2. 驗證路由策略是否生效。

    1. 在瀏覽器地址欄,輸入http://{入口網關的IP地址}/productpage

      樣本效果如下。訪問服務

    2. 在Bookinfo頁面右上方,單擊Sign in

    3. Please sign in輸入任意帳號和密碼,單擊Sign in

      可以看到能夠正常登入到Bookinfo。登入bookinfo

      您還可以自行使用/logout/static/api/v1/products訪問Bookinfo服務進行驗證。

    4. 開啟瀏覽器的開發人員工具,切換到網路標籤。

    5. 重新整理頁面。

      可以看到約4s的延遲。延遲

  3. (可選)查看路由策略建立成功後產生的虛擬服務的YAML檔案。

    1. 在網格詳情頁面左側導覽列,選擇流量管理中心 > 虛擬服務

    2. 虛擬服務頁面,單擊目標虛擬服務右側操作列下的查看YAML

    3. 編輯對話方塊,查看產生的虛擬服務的YAML檔案。確認無誤後,單擊確定

相關操作

查看服務詳情

查看匯入服務的是否注入Sidecar、地區等資訊。

  1. 入口網關頁面,單擊目標網關的名稱。在網關概覽頁面左側導覽列,單擊上遊服務

  2. 上遊服務頁面,單擊目標服務右側操作列下的服務詳情。在服務詳情頁面,查看服務是否注入Sidecar、地區等資訊。

路由下線

下線路由策略,使該路由策略失效。

  1. 入口網關頁面,單擊目標網關的名稱。

  2. 在網關概覽頁面左側導覽列,單擊路由管理

  3. 路由管理頁面,單擊目標路由右側操作列下的下線

  4. 確認對話方塊,單擊確定

  5. 驗證路由下線是否成功。

    1. 在瀏覽器地址欄,輸入http://{入口網關的IP地址}/productpage

    2. 在Bookinfo頁面右上方,單擊Sign in

    3. Please sign in輸入任意帳號和密碼,單擊Sign in

      路由下線

      可以看到頁面顯示找不到網頁,說明目標路由策略失效,路由下線成功。

      說明

      您也可以通過以下方式上線路由策略,使路由策略中重新生效:

      路由管理頁面,單擊目標路由右側操作列下的上線,然後在確認對話方塊,單擊確定