云原生網關作為系統(tǒng)架構的入口,將傳統(tǒng)的流量網關和微服務網關合二為一,不僅大幅降低了網絡開銷和運維成本,還提供了豐富的流量治理能力和體系化的可觀測能力。本文以云原生網關關聯(lián)MSE Nacos中的服務來源來介紹如何配置路由策略和配置告警。
前提條件
將服務注冊到MSE Nacos,可參見在Spring Cloud應用中接入MSE Nacos作為服務注冊中心。
云原生網關不支持添加MSE Nacos、ZooKeeper注冊的本地服務。
創(chuàng)建路由
登錄MSE網關管理控制臺,并在頂部菜單欄選擇地域。
在左側導航欄,選擇云原生網關 > 網關列表,單擊目標網關名稱。
在左側導航欄,單擊路由管理,然后在路由頁簽單擊創(chuàng)建路由。
在創(chuàng)建路由頁面,填寫路由名稱為
springcloud-demo
,域名選擇*,路徑(Path)匹配規(guī)則為前綴是和/,路由指向選擇單服務,在服務名稱列表下,單擊關聯(lián)服務。在關聯(lián)服務頁面,選擇需要的內容,單擊確定。
選擇服務名稱為
nacos-service-consumer
,單擊保存并發(fā)布。
配置路由策略
未配置路由策略時
登錄MSE網關管理控制臺。
在頂部菜單欄選擇地域。
在左側導航欄,選擇云原生網關 > 網關列表,單擊目標網關名稱。
在基本概覽頁面的網關入口頁簽,查看網關的入口地址。
說明云原生網關入口地址實際是指SLB地址,您可以將關聯(lián)的SLB替換成您自有的SLB。具體操作,請參見管理網關入口SLB。
執(zhí)行以下測試請求命令:
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
配置限流策略時
在高并發(fā)訪問的情況下,如果您的應用沒有適當的限流措施,可能會導致后端服務因請求過多而過載,影響服務響應速度,甚至造成服務崩潰。通過限流,可以確保請求量保持在一個系統(tǒng)可承受的范圍內。云原生網關支持配置限流策略,更多路由策略配置信息,請參見路由策略。
登錄MSE網關管理控制臺,并在頂部菜單欄選擇地域。
在左側導航欄,選擇云原生網關 > 網關列表,單擊目標網關名稱。
在左側導航欄,選擇路由管理。
單擊需要變更的路由規(guī)則操作列下的策略配置。
在策略配置頁簽,單擊限流。
流控規(guī)則的原理是監(jiān)控路由的QPS指標,當指標達到設定的閾值時立即攔截流量,避免后端服務被瞬時的流量高峰沖垮,從而保障高可用性。
在限流區(qū)域,單擊流控規(guī)則頁簽。
在流控規(guī)則區(qū)域,進行如下配置。
配置項
說明
示例值
總體QPS閾值
設置總體QPS閾值。
1
Web fallback 行為
選擇Web fallback 行為為返回指定內容或者跳轉到指定頁面。
返回指定內容
HTTP狀態(tài)碼
設置HTTP狀態(tài)碼。默認為429。
429
返回 content-type
選擇返回 content-type為普通文本或JSON。
普通文本
HTTP 返回文本
輸入返回文本。
springcloud-demo flow limit
是否開啟
開啟后,流控規(guī)則生效。
單擊新建或保存,在提示對話框中單擊確定。
執(zhí)行以下腳本測試請求:
Windows環(huán)境
@echo off set "localUrl= http://8.136.104.xxx/echo-rest/hello" :loop curl -i -s %localUrl% goto loop
Linux環(huán)境
#!/bin/bash URL="http://8.136.104.xxx/echo-rest/hello" while true; do curl -i -s $URL done
響應結果(開啟限流策略后,HTTP狀態(tài)碼返回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
監(jiān)控報警
MSE云原生網關可以在滿足報警條件時通過郵件、短信、釘釘等渠道實時報警,幫助您主動發(fā)現異常。
添加告警聯(lián)系人
登錄MSE管理控制臺,并在頂部菜單欄選擇地域。
在左側導航欄,選擇云原生網關 > 告警管理 > 聯(lián)系人管理。
選擇聯(lián)系人頁簽,單擊新建聯(lián)系人。
在新建聯(lián)系人對話框,填寫聯(lián)系人姓名和手機號,然后單擊確認。
勾選聯(lián)系人信息,單擊批量驗證手機號,收到短信后,確認短信驗證鏈接。
配置告警規(guī)則
新建告警大約在10分鐘內生效,報警判斷會存在1 ~ 3分鐘的延時。
登錄MSE管理控制臺,并在頂部菜單欄選擇地域。
在左側導航欄,選擇云原生網關 > 告警管理 > 告警規(guī)則管理。
在云原生網關告警頁面,單擊創(chuàng)建云原生網關告警策略管理。
在創(chuàng)建云原生網關告警策略管理頁面,配置告警相關參數,完成后單擊完成。 具體操作,請參見管理告警規(guī)則。
使用壓測工具壓測
http://8.136.104.xx/echo-rest/hello
,可看到如下響應的告警信息。【阿里云】發(fā)生P3告警 告警名稱:** 集群名稱:cloud-product-prometheus_cn-hangzhou 通知策略:【默認】***_通知策略 告警時間:2024-08-30 18:22:15 告警內容: 云原生網關 實例ID **-Gateway(普通實例) 指定路由 springcloud-demo QPS高于指定值 當前值 1.67
相關文檔
如果在使用過程中出現問題,您可以參見云原生網關FAQ進行排查,或者使用云原生網關提供的問題排查功能進行排查。關于問題排查功能,請參見云原生網關AI診斷。