使用Ingress-sentinel实现流控

ACK提供了Ingress-sentinel流控功能,通过Ingress-sentinel流控功能可以快速接入到AHAS中。当有请求流量时,您可以在AHAS控制台中查看Nginx网关请求的实时QPS和RT等数据。本文介绍如何使用Ingress-sentinel功能实现流控。

前提条件

背景信息

应用高可用服务AHAS(Application High Availability Service)提供了应用架构探测感知,故障注入式高可用能力评测和流控降级高可用防护三大核心能力,其中针对Nginx的流控降级高可用防护功能已集成到ACK提供的Ingress-Nginx-Controller中,您可用根据实际需求开启该功能,查看流控数据。

使用限制

开启Ingress-sentinel流控功能,会消耗一定的系统资源。您使用的机器需要符合一定的配置,以下为配置说明:

  • 最低配置:CPU为1000m Core,内存为2048 MiB。

  • 建议配置:CPU为4000m Core及以上,内存为8192 MiB及以上。

开启Ingress-sentinel流控功能

  1. 登录容器服务管理控制台

  2. 在控制台左侧导航栏,单击集群

  3. 集群列表页面,单击目标集群名称或者目标集群右侧操作列下的详情

  4. 在集群管理页左侧导航栏,选择配置管理 > 配置项

  5. 在配置项页面名称搜索框中搜索nginx-configuration,找到nginx-configuration,然后单击nginx-configuration操作列的编辑

  6. 自定义应用名称。

    编辑面板单击添加,设置名称为sentinel-params ,为--app=demo-k8s-2020。

    说明

    --app=demo-k8s-2020字段中demo-k8s-2020为应用名称,您可以根据实际需求替换应用名称。

  7. 可选:如果您的集群所在地域不属于深圳、北京、上海、张家口、杭州,则还需要配置证书。

    单击添加,设置名称为sentinel-params ,为--app=demo-k8s --license=xxx。

    说明

    关于获取License的更多信息,请参见查看License

  8. 可选:如果您希望接收到超过流控配置上限的请求时,系统能够返回HTTP 429错误码(表示请求数过多)。则您可以配置流控HTTP返回码。

    单击添加,设置名称为sentinel-block-action,为=429。

    说明

    如果您想要自定义HTTP错误码,可以根据实际需求修改429。

  9. 开启Ingress-sentinel流控功能。

    说明

    接入Ingress-sentinel流控功能后默认不会触发流控,只有配置开启流控规则,并且请求流量超过流控规则限制后才会触发流控。

    单击添加,设置名称为use-sentinel,为true。然后单击确定

配置流控规则

登录AHAS控制台,在控制台左侧导航栏选择流量防护 > Ingress/Nginx防护,单击目标应用卡片,可以看到应用名称对应的流控监控窗口。具体操作请参见配置流控规则配置隔离规则配置熔断规则流控窗口

如果您需要配置更详细的流控规则,请参见请求分组管理配置流控规则。规则配置完成后,您可以在应用概览页面实时查看流控指标。