雲原生網關作為系統架構的入口,將傳統的流量網關和微服務網關合二為一,不僅大幅降低了網路開銷和營運成本,還提供了豐富的流量治理能力和體系化的可觀測能力。本文以雲原生網關關聯MSE Nacos中的服務來源來介紹如何配置路由策略和配置警示。
前提條件
-
將服務註冊到MSE Nacos,可參見在Spring Cloud應用中接入MSE Nacos作為服務註冊中心。
雲原生網關不支援添加MSE Nacos、ZooKeeper註冊的本地服務。
建立路由
-
登入MSE網關管理主控台,並在頂部功能表列選擇地區。
-
在左側導覽列,選擇云原生网关 > 网关列表,單擊目標網關執行個體ID。
-
在左側導覽列,單擊路由管理,然後在路由頁簽單擊创建路由。
-
在创建路由頁面,填寫路由名称為
springcloud-demo,域名選擇*,路径(Path)匹配規則為前缀是和/,路由指向選擇单服务,在服务名称列表下,單擊关联服务。 -
在關聯服務頁面,選擇需要的內容,單擊确定。
來源類型選擇MSE Nacos,命名空間選擇目標命名空間,在服務列表中勾選nacos-service-consumer服務。
-
選擇服务名称為
nacos-service-consumer,單擊保存并发布。
配置路由策略
未配置路由策略時
-
登入MSE網關管理主控台。
-
在頂部功能表列選擇地區。
-
在左側導覽列,選擇云原生网关 > 网关列表,單擊目標網關執行個體ID。
-
在基本概览頁面的网关入口頁簽,查看網關的入口地址。
列表中包含公網和私網 CLB 執行個體,公網執行個體對應的 入口地址(如
8.136.xxx.xxx)即為網關的公網入口。說明雲原生網關入口地址實際是指SLB地址,您可以將關聯的SLB替換成您自有的SLB。具體操作,請參見管理網關入口 SLB。
-
執行以下測試請求命令:
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
配置限流策略時
在高並發訪問的情況下,如果您的應用沒有適當的限流措施,可能會導致後端服務因請求過多而過載,影響服務響應速度,甚至造成服務崩潰。通過限流,可以確保請求量保持在一個系統可承受的範圍內。雲原生網關支援配置限流策略,更多路由策略配置資訊,請參見路由策略。
-
登入MSE網關管理主控台,並在頂部功能表列選擇地區。
-
在左側導覽列,選擇云原生网关 > 网关列表,單擊目標網關執行個體ID。
-
在左側導覽列,選擇路由管理。
-
單擊需要變更的路由規則操作列下的策略配置。
-
在策略配置頁簽,單擊限流。
流控規則的原理是監控路由的QPS指標,當指標達到設定的閾值時立即攔截流量,避免後端服務被瞬時的流量高峰衝垮,從而保障高可用性。
-
在限流地區,單擊流控规则頁簽。
-
在流控规则地區,進行如下配置。
配置項
說明
樣本值
总体QPS阈值
設定总体QPS阈值。
1
Web fallback 行为
選擇Web fallback 行为為返回指定内容或者跳转到指定页面。
返回指定內容
Http状态码
設定Http状态码。預設為429。
429
返回 content-type
選擇返回 content-type為普通文本或JSON。
普通文本
HTTP 返回文本
輸入返迴文本。
springcloud-demo flow limit
是否开启
開啟後,流控規則生效。
開啟
-
單擊新建或保存,在提示對話方塊中單擊确定。
-
-
執行以下指令碼測試請求:
Windows環境
@echo off set "localUrl= http://8.136.104.xxx/echo-rest/hello" :loop curl -i -s %localUrl% goto loopLinux環境
#!/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
相關文檔
如果在使用過程中出現問題,您可以參見雲原生網關常見問題進行排查,或者使用雲原生網關提供的問題排查功能進行排查。關於問題排查功能,請參見雲原生網關AI診斷。