简介:微服务的稳定性一直是开发者非常关心的话题。随着业务从单一架构向分布式架构的演进和部署模式的改变,服务之间的依赖性变得越来越复杂,业务系统也面临着巨大的高可用性挑战。
作者:涂鸦
微服务的稳定性一直是开发者非常关心的话题。随着业务从单一架构向分布式架构的演进和部署模式的改变,服务之间的依赖性变得越来越复杂,业务系统也面临着巨大的高可用性挑战。应用程序高可用性服务(AHAs)是阿里巴巴高可用性系统多年来推出的云产品。它以流量和容错为出发点,从流量控制、不稳定呼叫隔离、熔丝降级、热点流量保护、系统自适应保护、集群流量控制等多个维度帮助确保服务和网关的稳定性,同时,它提供二级流量监测和分析功能。AHAS不仅广泛应用于淘宝、天猫等阿里巴巴内部电商领域,在互联网金融、在线教育、游戏、直播行业等大型央企也有大量实践。
流量漏斗保护原理在分布式系统体系结构中,每个请求都将经过许多层的处理,例如从入口网关到web服务器,到服务之间的调用,再到服务访问缓存或dB和其他存储。在高可用性流量保护系统中,我们通常遵循流量漏斗原理进行高可用性流量保护。在流量链路的每一层,我们都需要有针对性的流量保护和容错手段来保证服务的稳定性;同时,我们应该尽最大努力推进交通保护。例如,我们应该将一些HTTP请求的流量控制提前到网关层,并提前控制一些流量,以避免过多的流量击中后端,造成后端压力和资源浪费。
入口/nginx网关流量控制Nginx是一款流行的高性能开源服务器,ingress是kubernetes集群的实际流量门户。AHASsentinel为ingress/nginx网关提供本机入口流量控制功能,可以提前进行流量保护,拦截多余流量,确保后端服务的稳定性。最近发布的新版AHASnginx流量保护插件基于sentinelC++的本机版本。与旧版sidecar相比,它进行了很多性能优化。在数万个QP的情况下,它还可以确保准确的流量控制,不会对网关本身的性能产生太大影响。
AHASnginx/ingressprotection具有以下核心功能和优势:
- 使用成本低:只需配置即可将nginx/ingress网关快速连接到AHAS流量保护,并在控制台上配置可视监控、规则和返回行为
- 流量控制规则在控制台上动态配置,并在不重新加载nginx的情况下实时生效
- 精确的总入口流量控制:AHASnginx/ingressprotection支持数万个QP的精确总入口流量控制,并支持用户定义的流量控制粒度(例如一组主机和URL维度,甚至可以细化到参数和IP维度)
- 支持实时了解网关流量和保护规则有效性的可观察能力
让我们用一个例子来介绍如何将kubernetes集群中的入口网关快速连接到AHAS,以发挥流量控制能力并确保服务稳定性。
快速播放AHAS进度流保护首先,假设我们已经有了阿里云容器服务的ACK集群(如果集群没有进展,可以在ACK组件管理中手动安装)。我们只需要将以下两个字段添加到NicholasTse-系统名称空间的nginx配置项(configmap):
使用哨兵:正确
sentinel参数:--app=ahas入口演示
可以完成nginx/ingress流量保护的访问。此时,打开AHAS控制台,您可以看到名为AHASingressdemo的入口网关。
在成功访问AHAS流量保护后,我们需要首先定义一个请求包。单击请求分组管理的选项卡页面,创建一个名为test1的新请求分组。我们将主机配置为精确匹配类型,值为127.0.0.1;将路径配置为前缀匹配类型,值为/测试/。具体配置如下图所示:
此时,我们可以预见所有请求的主机是127.0.0.1,请求路径是/测试/最初的请求被分组到一个名为test1的组中。此时,我们访问与请求组匹配的URL,例如http://127.0.0.1/test/demo,在AHAS控制台-界面详细信息监控页面上,您可以看到test1组的流量监控。
接下来,我们需要控制名为test1的请求包的流。我们可以在界面详细信息的页签或规则管理的页签中添加流量控制规则:
也就是说,test1请求包的流控制配置完成。这个流控制规则意味着在一秒钟内,包中超过10个请求的请求将被拦截,阈值有效维度是单机维度。默认情况下,拦截请求后将返回429个过多请求状态代码。我们还可以通过configmap或直接在控制台上配置流控制触发后的返回逻辑。
如果我们使用压力测量工具在QPS大于10的情况下启动流量,具体效果如下图所示(界面细节监控):
如果我们想要准确地控制请求数据包的集群访问总量,我们可以配置集群流控制规则并配置总阈值,而不需要考虑网关实例的数量和负载平衡。
综上所述,对于ingress/nginx网关的流量控制,我们需要首先定义一个请求包,然后为该包配置相应的流量控制规则。完整流程请参考以下流程图:
以上是阿里云容器服务ack集群进度流控制实践的一个例子。对于自建的progress或nginx,您还可以参考以下两篇文章以快速访问:
- https:/帮助阿丽云。com/document_u;detail/178827。html
- https:/帮助阿丽云。com/document_uudetail/209640。html
原始链接:301永久移动
本文为阿里云原创内容,未经许可不得转载。
最新评论