云原生网关作为系统架构的入口,将传统的流量网关和微服务网关合二为一,不仅大幅降低了网络开销和运维成本,还提供了丰富的流量治理能力和体系化的可观测能力。本文以云原生网关关联MSE Nacos中的服务来源来介绍如何配置路由策略和配置告警。
前提条件
将服务注册到MSE Nacos,可参见在Spring Cloud应用中接入MSE Nacos作为服务注册中心。
云原生网关不支持添加MSE Nacos、ZooKeeper注册的本地服务。
创建路由
登录MSE网关管理控制台,并在顶部菜单栏选择地域。
在左侧导航栏,选择云原生网关 > 网关列表,单击目标网关名称。
在左侧导航栏,单击路由管理,然后在路由页签单击创建路由。
在创建路由页面,填写路由名称为
springcloud-demo
,域名选择*,路径(Path)匹配规则为前缀是和/,路由指向选择单服务,在服务名称列表下,单击关联服务。在关联服务页面,选择需要的内容,单击确定。
选择服务名称为
nacos-service-consumer
,单击保存并发布。
配置路由策略
未配置路由策略时
登录MSE网关管理控制台。
在顶部菜单栏选择地域。
在左侧导航栏,选择云原生网关 > 网关列表,单击目标网关名称。
在基本概览页面的网关入口页签,查看网关的入口地址。
说明云原生网关入口地址实际是指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网关管理控制台,并在顶部菜单栏选择地域。
在左侧导航栏,选择云原生网关 > 网关列表,单击目标网关名称。
在左侧导航栏,选择路由管理。
单击需要变更的路由规则操作列下的策略配置。
在策略配置页签,单击限流。
流控规则的原理是监控路由的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 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
监控报警
MSE云原生网关可以在满足报警条件时通过邮件、短信、钉钉等渠道实时报警,帮助您主动发现异常。
添加告警联系人
登录MSE管理控制台,并在顶部菜单栏选择地域。
在左侧导航栏,选择云原生网关 > 告警管理 > 联系人管理。
选择联系人页签,单击新建联系人。
在新建联系人对话框,填写联系人姓名和手机号,然后单击确认。
勾选联系人信息,单击批量验证手机号,收到短信后,确认短信验证链接。
配置告警规则
新建告警大约在10分钟内生效,报警判断会存在1 ~ 3分钟的延时。
登录MSE管理控制台,并在顶部菜单栏选择地域。
在左侧导航栏,选择云原生网关 > 告警管理 > 告警规则管理。
在云原生网关告警页面,单击创建云原生网关告警策略管理。
在创建云原生网关告警策略管理页面,配置告警相关参数,完成后单击完成。 具体操作,请参见管理告警规则。
使用压测工具压测
http://8.136.104.xx/echo-rest/hello
,可看到如下响应的告警信息。【阿里云】发生P3告警 告警名称:** 集群名称:cloud-product-prometheus_cn-hangzhou 通知策略:【默认】***_通知策略 告警时间:2024-08-30 18:22:15 告警内容: 云原生网关 实例ID **-Gateway(普通实例) 指定路由 springcloud-demo QPS高于指定值 当前值 1.67
相关文档
如果在使用过程中出现问题,您可以参见云原生网关FAQ进行排查,或者使用云原生网关提供的问题排查功能进行排查。关于问题排查功能,请参见云原生网关AI诊断。