全部產品
Search
文件中心

Microservices Engine:通過雲原生網關管理MSE Nacos中的服務

更新時間:Dec 27, 2024

雲原生網關作為系統架構的入口,將傳統的流量網關和微服務網關合二為一,不僅大幅降低了網路開銷和營運成本,還提供了豐富的流量治理能力和體系化的可觀測能力。本文以雲原生網關關聯MSE Nacos中的服務來源來介紹如何配置路由策略和配置警示。

前提條件

重要

雲原生網關不支援添加MSE Nacos、ZooKeeper註冊的本地服務。

建立路由

  1. 登入MSE網關管理主控台,並在頂部功能表列選擇地區。

  2. 在左側導覽列,選擇云原生网关 > 网关列表,單擊目標網關名稱。

  3. 在左側導覽列,單擊路由管理,然後在路由頁簽單擊创建路由

  4. 创建路由頁面,填寫路由名稱springcloud-demo網域名稱選擇*路徑(Path)匹配規則為首碼是/,路由指向選擇單服務,在服務名稱列表下,單擊關聯服務

    image

  5. 在關聯服務頁面,選擇需要的內容,單擊確定

    image

  6. 選擇服務名稱nacos-service-consumer,單擊儲存並發布

配置路由策略

未配置路由策略時

  1. 登入MSE網關管理主控台

  2. 在頂部功能表列選擇地區。

  3. 在左側導覽列,選擇云原生网关 > 网关列表,單擊目標網關名稱。

  4. 基本概览頁面的网关入口頁簽,查看網關的入口地址

    image

    說明

    雲原生網關入口地址實際是指SLB地址,您可以將關聯的SLB替換成您自有的SLB。具體操作,請參見管理網關入口SLB

  5. 執行以下測試請求命令:

    curl -I http://8.136.104.xx/echo-rest/hello
    說明

    該請求命令添加了Nacos來源的Demo服務,您可以根據實際後端服務調整請求Path進行測試。

    響應結果:

    HTTP/1.1 200 OK
    Content-Type: text/plain;charset=UTF-8
    Content-Length: 5
    Date: Thu, 29 Aug 2024 08:21:47 GMT
    req-cost-time: 9
    req-arrive-time: 1724919707979
    resp-start-time: 1724919707988
    x-envoy-upstream-service-time: 8
    server: istio-envoy

配置限流策略時

在高並發訪問的情況下,如果您的應用沒有適當的限流措施,可能會導致後端服務因請求過多而過載,影響服務響應速度,甚至造成服務崩潰。通過限流,可以確保請求量保持在一個系統可承受的範圍內。雲原生網關支援配置限流策略,更多路由策略配置資訊,請參見路由策略

  1. 登入MSE網關管理主控台,並在頂部功能表列選擇地區。

  2. 在左側導覽列,選擇云原生网关 > 网关列表,單擊目標網關名稱。

  3. 在左側導覽列,選擇路由管理

  4. 單擊需要變更的路由規則操作列下的策略配置

  5. 策略配置頁簽,單擊限流

    流控規則的原理是監控路由的QPS指標,當指標達到設定的閾值時立即攔截流量,避免後端服務被瞬時的流量高峰衝垮,從而保障高可用性。

    1. 限流地區,單擊流控規則頁簽。

    2. 流控规则地區,進行如下配置。

      限流流控規則.png

      配置項

      說明

      樣本值

      總體QPS閾值

      設定總體QPS閾值

      1

      Web fallback 行為

      選擇Web fallback 行為返回指定內容或者跳轉到指定頁面

      返回指定內容

      HTTP狀態代碼

      設定HTTP狀態代碼。預設為429。

      429

      返回 content-type

      選擇返回 content-type普通文本JSON

      普通文本

      HTTP 返迴文本

      輸入返迴文本。

      springcloud-demo flow limit

      是否開啟

      開啟後,流控規則生效。

      image

    3. 單擊新建儲存,在提示對話方塊中單擊確定

  6. 執行以下指令碼測試請求:

    Windows環境

    @echo off
    
    set "localUrl= http://8.136.104.xxx/echo-rest/hello"
    
    :loop
    curl -i -s %localUrl%
    
    goto loop

    Linux環境

    #!/bin/bash
    
    URL="http://8.136.104.xxx/echo-rest/hello"
    
    while true; do
        curl -i -s $URL
    done

    響應結果(開啟限流策略後,HTTP狀態代碼返回429):

    helloHTTP/1.1 429 Too Many Requests
    content-type: text/plain; charset=UTF-8
    content-length: 26
    date: Thu, 29 Aug 2024 08:54:46 GMT
    server: istio-envoy
    
    springcloud-demo flow limit HTTP/1.1 200 OK
    Content-Type: text/plain;charset=UTF-8
    Content-Length: 5
    Date: Thu, 29 Aug 2024 08:54:46 GMT
    req-cost-time: 8
    req-arrive-time: 1724921686961
    resp-start-time: 1724921686970
    x-envoy-upstream-service-time: 7
    server: istio-envoy

相關文檔

如果在使用過程中出現問題,您可以參見雲原生網關FAQ進行排查,或者使用雲原生網關提供的問題排查功能進行排查。關於問題排查功能,請參見雲原生網關AI診斷