文档

云原生网关进阶体验

更新时间:

云原生网关作为系统架构的入口,将传统的流量网关和微服务网关合二为一,不仅大幅降低了网络开销和运维成本,还提供了丰富的流量治理能力和体系化的可观测能力。本文在云原生网关入门体验基础上介绍如何配置路由策略、查看网关监控、配置告警以及集成鉴权。

前提条件

创建MSE云原生网关

添加服务

关联容器服务来源

  1. 在左侧导航栏,选择路由管理,然后选择来源页签。

  2. 单击创建来源。在创建来源面板,配置相关参数,然后单击确定

    配置项

    描述

    来源类型

    选择容器服务

    ACK/ACK Serverless 集群

    选择后端服务所在的集群。

容器服务以外,云原生网关还支持关联MSE NacosMSE ZooKeeperEDAS 内置注册中心等其他服务来源。更多信息,请参见创建服务来源

添加容器服务

  1. 在左侧导航栏,选择路由管理,然后选择服务页签。

  2. 单击创建服务。在创建服务面板,配置服务相关参数,然后单击确定

    配置项

    说明

    容器服务

    选择容器服务

    命名空间

    选择集群的命名空间。

    服务列表

    选择目标服务。

容器服务以外,云原生网关还支持MSE NacosDNS 域名固定地址EDAS 内置注册中心等服务来源添加服务。更多信息,请参见创建服务

配置路由

未配置路由

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

  2. 在左侧导航栏,选择云原生网关 > 网关列表,单击目标网关名称。

  3. 基本概览页面的网关入口页签,查看网关的入口地址

    说明

    云原生网关入口地址实际是指SLB地址,您可以将关联的SLB替换成您自有的SLB。具体操作,请参见管理网关入口SLB

  4. 执行以下测试请求命令:

    curl -I http://121.196.XX.XX

    响应结果(此时未配置任何路由,默认返回404):

    HTTP/1.1 404 Not Found
    date: Mon, 29 Nov 2021 03:36:32 GMT
    server: istio-envoy
    transfer-encoding: chunked

为网关配置Mock路由

云原生网关支持单服务、多服务、标签路由等路由方式。更多信息,请参见路由方式概述

  1. 在网关详情页面的左侧导航栏,单击路由管理,选择路由页签,然后单击创建路由

  2. 创建路由面板,配置相关参数,然后单击保存并发布。具体操作,请参见创建路由

    配置项

    描述

    路由名称

    设置为mock

    域名

    选择默认域名*

    路径(Path)

    选择匹配条件为前缀是,Path以/mock开头。

    使用场景

    选择Mock

  3. 执行以下测试请求命令:

    curl  http://121.196.XX.XX/mock

    响应结果:

    {code:200,data:"hello mock!"}

配置路由策略

未配置路由策略

  1. 登录MSE网关管理控制台

  2. 在顶部菜单栏选择地域。

  3. 在左侧导航栏,选择云原生网关 > 网关列表,单击目标网关名称。

  4. 基本概览页面的网关入口页签,查看网关的入口地址

    说明

    云原生网关入口地址实际是指SLB地址,您可以将关联的SLB替换成您自有的SLB。具体操作,请参见管理网关入口SLB

  5. 执行以下测试请求命令:

    curl -I http://121.196.XX.XX/demo/item/list 
    说明

    该请求命令添加了Nacos来源的Demo服务,您可以根据实际后端服务调整请求Path进行测试。

    响应结果:

    HTTP/1.1 200 OK
    x-content-type-options: nosniff
    x-xss-protection: 1; mode=block
    cache-control: no-cache, no-store, max-age=0, must-revalidate
    pragma: no-cache
    expires: 0
    x-frame-options: DENY
    content-type: application/json
    content-length: 86
    date: Mon, 29 Nov 2021 08:28:00 GMT
    x-envoy-upstream-service-time: 4
    server: istio-envoy

配置限流策略

云原生网关支持配置重写策略、跨域策略、Header设置策略。更多信息,请参见路由方式概述

  1. 单击需要变更的路由规则操作列下的策略配置

  2. 策略配置页签,单击限流

    网关版本为1.2.25及以上

    • 配置流控规则

      流控规则的原理是监控路由的QPS指标,当指标达到设定的阈值时立即拦截流量,避免后端服务被瞬时的流量高峰冲垮,从而保障高可用性。

      1. 限流区域,单击流控规则页签。

      2. 流控规则区域,进行相关配置。

        限流流控规则.png

        配置项

        说明

        总体QPS阈值

        设置总体QPS阈值

        Web fallback 行为

        选择Web fallback 行为返回指定内容或者跳转到指定页面

        选择Web fallback 行为跳转到指定页面时:

        跳转地址

        输入跳转地址

        选择Web fallback 行为返回指定内容时:

        HTTP状态码

        设置HTTP状态码。默认为429。

        返回 content-type

        选择返回 content-type普通文本JSON

        HTTP 返回文本

        输入返回文本。

        是否开启

        开启后,流控规则生效。

      3. 单击新建保存,在提示对话框中单击确定

    • 配置并发规则

      并发规则的原理是统计当前网关处理中的请求数之和,当指标达到设定的阈值时立即拦截流量,可配置为后端服务的最大并发处理请求数,实现在高并发下的后端服务可用性保护。

      1. 限流区域,单击并发规则页签。

      2. 并发规则页签,进行相关配置。

        配置项

        说明

        总体并发数阈值

        设置总体并发数阈值

        Web fallback 行为

        选择Web fallback 行为返回指定内容或者跳转到指定页面

        选择Web fallback 行为跳转到指定页面时:

        跳转地址

        输入跳转地址

        选择Web fallback 行为返回指定内容时:

        HTTP状态码

        设置HTTP状态码。默认为429。

        返回 content-type

        选择返回 content-type普通文本JSON

        HTTP 返回文本

        输入返回文本。

        是否开启

        开启后,并发规则生效。

      3. 单击新建保存,在提示对话框中单击确定

    • 配置熔断规则

      熔断规则的原理是监控路由的响应时间或异常比例,当达到指定的阈值时立即降低依赖优先级。在指定的时间内,系统不会调用该不稳定的资源,避免后端服务受到影响,从而保障后端的高可用性。当指定时间过后,再重新恢复对该资源的调用。

      1. 限流区域,单击熔断规则页签。

      2. 熔断规则页签,进行相关配置。

        配置项

        说明

        统计窗口时长

        统计的时间窗口长度,取值范围为1秒~120分钟。

        最小请求数目

        触发熔断的最小请求数目,若当前统计窗口内的请求数小于此值,即使达到熔断条件规则也不会触发。

        阈值类型

        选择以慢调用比例异常比例作为阈值。

        • 选择以慢调用比例作为阈值,需要设置允许的慢调用RT(即最大的响应时间),请求的响应时间大于该值则统计为慢调用。在降级阈值中设置触发熔断的慢调用比例。规则开启后,在单位统计时长内请求数目大于设置的最小请求数目,并且慢调用的比例大于阈值,则接下来的熔断时长内请求会自动被熔断。经过熔断时长后,熔断器会进入探测恢复状态,若接下来的一个请求响应时间小于设置的慢调用RT,则结束熔断;若大于设置的慢调用RT,则会再次被熔断。

        • 选择以异常比例作为阈值,需要在降级阈值中设置触发熔断的异常比例。规则开启后,在单位统计时长内业务异常数目大于设置的最小请求数目,并且异常的比例大于阈值,则接下来的熔断时长内请求会自动被熔断。

        熔断时长(s)

        即熔断触发后持续的时间。资源进入熔断状态后,在配置的熔断时长内,请求都会快速失败。

        Web fallback 行为

        选择Web fallback 行为返回指定内容或者跳转到指定页面

        选择Web fallback 行为跳转到指定页面时:

        跳转地址

        输入跳转地址

        选择Web fallback 行为返回指定内容时:

        HTTP状态码

        设置HTTP状态码。默认为429。

        返回 content-type

        选择返回 content-type普通文本JSON

        HTTP 返回文本

        输入返回文本。

        是否开启

        开启后,熔断规则生效。

      3. 单击新建保存,在提示对话框中单击确定

    网关版本为1.1.0-1.2.24

    • 配置流控规则

      流控规则的原理是监控路由的QPS指标,当指标达到设定的阈值时立即拦截流量,避免后端服务被瞬时的流量高峰冲垮,从而保障高可用性。

      1. 限流面板,单击流控规则页签,然后单击新增流控规则配置流控规则

      2. 新增流控防护规则页面,进行相关配置。

        1. 配置防护规则页面,根据您的需要设置总体QPS阈值,并打开是否开启按钮。然后单击下一步配置限流行为。

        2. 配置限流行为页面,您可以通过单击新增行为自定义触发限流后的HTTP应答行为。新增行为

      3. 关联好限流行为后,单击新建,完成规则创建。

    • 配置并发规则

      并发规则的原理是统计当前网关处理中的请求数之和,当指标达到设定的阈值时立即拦截流量,可配置为后端服务的最大并发处理请求数,实现在高并发下的后端服务可用性保护。

      1. 限流面板,单击并发规则页签,然后单击新增并发规则

      2. 新增并发防护规则页面,进行相关配置。

        1. 配置防护规则页面,根据您的需要去设置总体并发数阈值并打开是否开启按钮。然后单击下一步

        2. 配置限流行为页面,您可以通过单击新增行为自定义触发限流后的HTTP响应行为。

      3. 关联好限流行为后,单击新建,完成规则创建。

    • 配置熔断规则

      熔断规则的原理是监控路由的响应时间或异常比例,当达到指定的阈值时立即降低依赖优先级。在指定的时间内,系统不会调用该不稳定的资源,避免后端服务受到影响,从而保障后端的高可用性。当指定时间过后,再重新恢复对该资源的调用。

      1. 限流面板,单击熔断规则页签,然后单击新增熔断规则

      2. 新增熔断防护规则页面,进行相关配置。

        1. 配置防护规则页面,根据您的需要去设置总体并发数阈值并打开是否开启按钮。然后单击下一步

          参数

          描述

          统计窗口时长

          统计的时间窗口长度,取值范围为1秒~120分钟。

          最小请求数目

          触发熔断的最小请求数目,若当前统计窗口内的请求数小于此值,即使达到熔断条件规则也不会触发。

          阈值类型

          选择以慢调用比例异常比例作为阈值。

          • 选择以慢调用比例作为阈值,需要设置允许的慢调用RT(即最大的响应时间),请求的响应时间大于该值则统计为慢调用。在降级阈值中设置触发熔断的慢调用比例。规则开启后,在单位统计时长内请求数目大于设置的最小请求数目,并且慢调用的比例大于阈值,则接下来的熔断时长内请求会自动被熔断。经过熔断时长后,熔断器会进入探测恢复状态,若接下来的一个请求响应时间小于设置的慢调用RT则结束熔断,若大于设置的慢调用RT则会再次被熔断。

          • 选择以异常比例作为阈值,需要在降级阈值中设置触发熔断的异常比例。规则开启后,在单位统计时长内业务异常数目大于设置的最小请求数目,并且异常的比例大于阈值,则接下来的熔断时长内请求会自动被熔断。

          熔断时长

          即熔断触发后持续的时间。资源进入熔断状态后,在配置的熔断时长内,请求都会快速失败。

          熔断恢复策略

          熔断器进入恢复阶段(半开启状态)的恢复策略。

          单次探测恢复:经过熔断时长后,熔断器会对接下来的一个请求进行探测,若该请求符合预期(不为慢调用或没有异常),则结束熔断;否则重新回到熔断阶段。

        2. 配置限流行为页面,您可以通过单击新增行为自定义触发限流后的HTTP响应行为。

      3. 关联好限流行为后,单击新增,完成规则创建。

  3. 执行以下测试请求命令:

    curl -I http://121.196.XX.XX/demo/item/list

    响应结果(开启限流策略后,HTTP状态码返回429):

    HTTP/1.1 429 Too Many Requests
    x-local-rate-limit: true
    content-length: 18
    content-type: text/plain
    date: Mon, 29 Nov 2021 08:28:01 GMT
    server: istio-envoy

监控报警

MSE云原生网关支持查看网关监控数据,包含监控中心和日志中心。同时基于应用实时监控服务ARMS提供的应用监控报警功能,可以在满足报警条件时通过邮件、短信、钉钉等渠道实时报警,帮助您主动发现异常。

查看监控数据

  1. 登录MSE网关管理控制台

  2. 在顶部菜单栏选择地域。

  3. 在左侧导航栏,选择云原生网关 > 网关列表,单击目标网关名称。

  4. 在左侧导航栏,选择观测分析 > 业务监控,根据需要查看监控数据。具体操作,请参见查看网关监控数据

添加告警联系人

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

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

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

  4. 新建联系人对话框,编辑联系人信息,然后单击确认。具体操作,请参见管理告警联系人

配置告警规则

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

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

  3. MSE告警列表页面,单击创建MSE告警规则

  4. 创建MSE告警规则页面,配置告警相关参数,完成后单击保存。 具体操作,请参见管理告警规则

灰度发布

云原生网关支持单服务、多服务、标签路由等路由方式。更多信息,请参见路由方式概述

配置单服务多版本权重灰度

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

  2. 在左侧导航栏,选择云原生网关 > 网关列表,单击目标网关名称。

  3. 在左侧导航栏,选择路由管理,然后选择服务页签。

  4. 单击需要变更的服务名称。在服务版本区域,单击右侧的添加新版本。在服务版本列表中输入版本名称标签名以及标签值,然后单击操作列下的完成图标。部署v1、v2两个版本的服务。具体操作,请参见管理服务版本

    服务版本

  5. 路由页签,将目标服务的使用场景调整为按标签(标签路由),然后单击保存并发布。具体操作,请参见管理路由

  6. 执行以下测试请求命令:

    curl http://121.196.XX.XX/version

    响应结果:

    version:v2(百分二十概率返回)
    version:v1(百分八十概率返回)

为网关配置全局认证鉴权

MSE云原生网关集成了多种认证鉴权方式,包括JWT、OIDC、IDaaS以及自建认证鉴权等。更多信息,请参见全局认证鉴权

配置JWT认证鉴权

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

  2. 在左侧导航栏,选择云原生网关 > 网关列表,单击目标网关名称。

  3. 在左侧导航栏,选择安全管理 > 全局认证鉴权

  4. 全局认证鉴权页面,单击创建鉴权。在创建鉴权面板,配置网关鉴权相关参数,然后单击确定。具体操作,请参见配置JWT认证鉴权

  5. 执行以下测试请求命令(不带Token请求):

    curl -I  http://121.196.XX.XX/

    响应结果(开启JWT认证后,不带Token的请求被拦截返回403):

    HTTP/1.1 403 Forbidden
    content-length: 19
    content-type: text/plain
    date: Tue, 30 Nov 2021 09:35:09 GMT
    server: istio-envoy
  6. 执行以下测试请求命令(携带Token请求):

    curl -I -H "Authorization: Bearer $TOKEN"  http://121.196.XX.XX/

    响应结果:

    HTTP/1.1 200 OK
    content-type: text/html; charset=utf-8
    content-length: 1683
    server: istio-envoy
    date: Tue, 30 Nov 2021 09:35:59 GMT
    x-envoy-upstream-service-time: 5

相关文档

如果在使用过程中出现问题,您可以参见云原生网关FAQ进行排查,或者使用云原生网关提供的问题排查功能进行排查。关于问题排查功能,请参见云原生网关AI诊断