全部產品
Search
文件中心

Alibaba Cloud Service Mesh:鏡像流量

更新時間:Aug 23, 2025

您可以通過ASM將發往某服務的流量複製到另一個服務。本文介紹如何配置鏡像流量。

前提條件

已完成準備工作,並部署mocka服務和sleep服務。具體操作,請參見準備工作

操作步驟

  1. 驗證服務配置。

    1. 在ACK叢集對應的kubeconfig環境下,執行以下命令,進入sleep環境開啟bash。

      kubectl exec -it deploy/sleep -- sh
    2. 執行以下命令, 向mocka服務發送請求。

      curl mocka:8000/mock

      預期輸出為以下兩者之一,mocka-v1和mocka-v2隨機響應。

      -> mocka(version: v1, ip: 192.168.1.246)
      -> mocka(version: v2, ip: 192.168.1.53)
  2. 構建測試情境,配置mocka應用的流量規則,佈建要求由mocka-v1接收並響應,同時鏡像發往mocka-v2。

    1. 使用以下內容,建立虛擬服務。具體操作,請參見管理虛擬服務

      apiVersion: networking.istio.io/v1beta1
      kind: VirtualService
      metadata:
        name: mocka
        namespace: default
      spec:
        hosts:
          - mocka
        http:
          - match:
              - uri:
                  exact: /mock
            mirror:
              host: mocka-v2
            route:
              - destination:
                  host: mocka-v1
  3. 驗證配置是否生效。

    1. 在ACK叢集對應的kubeconfig環境下,執行以下命令,進入sleep環境開啟bash。

      kubectl exec -it deploy/sleep -- sh
    2. 執行以下命令, 向mocka服務發送請求。

      curl mocka:8000/mock

      預期輸出始終為以下結果,由mocka-v1響應。

      -> mocka(version: v1, ip: 192.168.1.246)
    3. 執行以下命令,查看mocka-v2日誌。

      kubectl logs deployments/mocka-v2

      預期輸出:

      receive request: x-request-id: 6f11e7b9-dc6c-4e57-aa52-c2644f8d****
      receive request: x-request-id: e9cedc48-d5c1-4233-a97b-5cb88f0d****
      receive request: x-request-id: bf4e4bb2-7339-42a0-a70f-eab7905d****
      receive request: x-request-id: 4779fb9a-f9c5-47c2-b9f7-8dc097cd****
      receive request: x-request-id: f32f012a-669d-48a4-a992-473068dd****
      receive request: x-request-id: 3ef4a1e7-4301-45db-ad1c-6b35bd1d****
      ...

      預期輸出表明mocka-v2也接收到流量。持續向mocka-v1發送請求,可以看到mocka-v2中不斷出現新接收到請求的日誌。