通过云原生网关管理MSE Nacos中的服务

云原生网关作为系统架构的入口,将传统的流量网关和微服务网关合二为一,不仅大幅降低了网络开销和运维成本,还提供了丰富的流量治理能力和体系化的可观测能力。本文以云原生网关关联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

监控报警

MSE云原生网关可以在满足报警条件时通过邮件、短信、钉钉等渠道实时报警,帮助您主动发现异常。

添加告警联系人

  1. 登录MSE管理控制台,并在顶部菜单栏选择地域。

  2. 在左侧导航栏,选择云原生网关 > 告警管理 > 联系人管理

  3. 选择联系人页签,单击新建联系人

  4. 新建联系人对话框,填写联系人姓名手机号,然后单击确认

  5. 勾选联系人信息,单击批量验证手机号,收到短信后,确认短信验证链接。

配置告警规则

说明

新建告警大约在10分钟内生效,报警判断会存在1 ~ 3分钟的延时。

  1. 登录MSE管理控制台,并在顶部菜单栏选择地域。

  2. 在左侧导航栏,选择云原生网关 > 告警管理 > 告警规则管理

  3. 云原生网关告警页面,单击创建云原生网关告警策略管理

  4. 创建云原生网关告警策略管理页面,配置告警相关参数,完成后单击完成。 具体操作,请参见管理告警规则

    image

  1. 使用压测工具压测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诊断