全方位保障方案应对高负载,为车主撑起“保护伞”
案例供稿:周扬帆、李长昭
文章来源:《华为云确定性运维案例集(第2期)》
一、业务背景
A公司是全球顶尖的汽车品牌,2022年X月正式与华为云开启合作之路。在A公司的众多业务系统中,B系统大数据平台是A公司核心的营销平台系统,承载A销售公司90%以上的业务。
2023年X月,B系统成功搬迁华为云,搬迁后迎来的首个挑战,就是A公司车主节活动的挑战。A公司每年的车主节,是全年最大的活动,也是业务搬迁上云后的首次重大活动,B系统作为承载流量高峰的核心系统,成为本次活动保障的重中之重。
二、业务现状
由于是业务搬迁后的首次保障,本次车主节活动保障面临着很大的业务压力以及挑战,通过分析整体架构后的风险主要有以下几点:
1.数据接入层:业务流向不明确,历史保障分析过程中仅对业务架构进行整体分析,未映射到具体的微服务或接口,从而无法系统性的对业务压力增长倍数进行估,也无法完成对业务压力传递给各服务的压力进行评估。
2.应用层:业务涉及多个开源组件,组件和应用的监控能力不明确,且B系统涉及多个业务的100+微服务,对人员的分工要求及关联的责任人必须明确。
3.数据层:历史负载未做留存,导致缺乏历史流量档案,无法建立流量预测模型和直观预测流量趋势。
三、方案实践
1、整体保障方案
B业务后端采用容器化部署,用户通过APP和小程序访问业务系统,接入层使用WAF、ELB、APIG进行流量的分配调度,应用层CCE部署了400+个微服务,数据层使用了RDS、GaussDB、DCS等云服务进行数据持久化存储。从云服务的容量保障、安全防护能力、保障措施和应急预案三大维度进行保障方案的设计,确保A公司B系统整体承接日常10+倍请求的目标顺利完成。
2、接入层
B业务接入层由APP/小程序通过WAF后经由ELB通过APIG调用,作为应用访问入口,需要加强接入层各个服务节点的容灾和高可用能力。
2.1 WAF容灾优化
作为流量入口通过的第一个云服务,首先就需要完成对WAF服务的容灾优化。原先用户访问的流量,100%流入华东的WAF共享集群。通过将用户访问的30%量切流至华北WAF集群,能够提升WAF整体性能外,也加强WAF接入的容灾能力,满足单集群故障场景下的应急逃生能力。
2.2 APIG流控
首先针对B业务核心的APIG实例进行详细分析。识别xxxx-PROD实例为核心实例,统计xxxx-PROD实例下的API数量,进行以下动作:
1)审视有调用记录的API,统计共1000+个API接口,其中有调用记录的接口共有XX个,未调用的接口XX个。
2)审视配置流控策略参与活动的API:统计未配置流控策略API共计1000+个,其中涉及活动API共XX个。
3)审视高频API流控情况:过去一个月高频(>1K/min)调用的接口中,涉及XX个接口没有配置流控,其中包括XX个活动API、XX个非活动API。
然后针对分析得出的API状态进行响应的整改措施:
1)针对参与活动的API补齐完整流控配置:统计出XX个活动相关的API补齐流控。
2)针对高频API补齐流控配置:针对统计出的XX个高频API进行流控策略补齐。
3)针对关键API调用行为进行分析:对高频和活动API展开调用肖像分析,以及CCE负载分析。API调用行为分析会发现如下的几种情况:
a.分析高频API,发现一个月内的某天,监控发现存在突增行为,日常调用次数从1/min,突增涨到47066/min,该API未在梳理的活动API范围,这类API需重点关注保障。
b.分析接口时延和错误码,对于接口触发5XX和时延高的情况,保障过程需要针对类似业务特殊情况做好监控和保障准备。
c.分析接口调用监控,针对突增的时间点分析,后端CCE容器可能出现过载风险,需要针对后端的工作负载审视容量情况,提前做好扩容预案。
2.3 APIG高可用优化
在日常的灾备环境方案中,管理南北向流量的ELB和东西向流量的ELB共同使用一个APIG灾备实例,考虑到车主节大流量场景,将原先的APIG灾备实例公用的场景改造为更加高可用的方案,即南北向ELB和东西向ELB分别建立灾备实例。
经过性能测试,南北向生产/灾备实例能够分别支撑到6k QPS,东西向生产/灾备能够分别支撑到2w QPS,合计可承载8倍的流量增长,极大地提升APIG的负载能力。
考虑到成本因素,可根据活动当天流量情况制定切换方案,具体切换方案如下:
1)将当前灾备APIG实例删除。
2)创建两个企业版APIG实例,一个作为南北APIG灾备,一个作为东西APIG灾备。
3)通过配置迁移工具,分别将南北与东西实例导入到各自的灾备实例中。
通过日常操作演练,确定以上动作的切换时间为5min,提升保障当天流量出现突增情况的风险应对。
该方案具备如下优势:
1)将原有一个灾备实例拆成两个实例,与生产的东西与南北实例一一对应,无配置冲突问题,配置比对便捷,南北东西可按需分开接入流量。
2) 原有一个铂金版与两个企业版成本一致,无需承担额外成本。
3)切换以及导入配置对生产业务无影响。
需要注意的问题:
a.建议将灾备实例提前灰度接入环境,通过ELB权重控制流量。
b.为防止不确定因素,可通过华为云后台在业务低峰时间窗对生产和新建灾备实例提前扩容至需要的实例规格。
c.南北向/东西向ELB需要提前扩容至需要承载的容量规格,避免入口出现瓶颈。
2.4 NAT业务隔离优化
在当前生产环境中,B系统NAT绑定的EIP与非B系统使用的EIP共用一个共享带宽,未做到资源隔离,此类场景会影响带宽增量的合理评估,将B系统使用的共享带宽调整为独享状态,减少非B业务的带宽出现预期外的干扰情况,便于核心业务系统容量的合理评估。
3、应用层
策略:通过梳理toC和toB的业务的核心15+个微服务的业务链接,识别保障的重点实例对象。
应用层作为承载入口流量处理、数据层交互的关键环节,需要针对确定性业务流进行分析,将虚拟化层组件/网络组件/硬件资源具象化,通过可预期的流量增长进行确定性分析和评估,确保资源的可用性达到要求。同时根据应用层不同微服务的功能交互、调用次数等信息,完成相关接口的确定性模型分析,进而能够支撑X倍流量增长场景下的可用性,避免出现常见的雪崩/预期外的过载等情况。根据关键核心微服务链路,可以识别出核心微服务关联的容器工作负载,RDS, DCS等关键实例,作为后面重点保障对象,进而根据具体资源可关联到对应底层网络组件/硬件资源,从而构建从上到下的确定性保障。
另外,根据微服务调用关系,经工具分析高频API和活动API,锁定本次重保的关键接口,提前分析和闭环客户流控隐患,并且构建实时流量监控和隐患巡检能力。如:构建APIG监控看板,实时观察客户流量情况。实时观测流量趋势、4XX、5XX、流控情况,可通过看板快速识别具体API/微服务等异常情况,快速定位定界。
4、持久化层
数据层是系统中的重中之重,其可用性/可靠性是保障期间的重点,因为业务系统往往依赖单个数据库/缓存作为在线应用的数据存储组件。单组件的分析同样继承确定性的思路,从应用层获取到的数据流作为输入可识别到具体资源,并通过业务调用关系/数据库辅助分析工具获取到对应业务的执行SQL/缓存KEY等。从具体数据到具体资源,演进到对应底层组件的确定性保障,能够支撑X倍的流量增长,同时通过构建的应急能力,能够实现分钟级别的快速扩容/限流,避免系统出现崩溃。例如,根据关键调用链识别到的数据层组件,即可从数据层完成相应分析。
四、业务提升
业务上的提升总结如下:
1)重点资源可靠性加固:通过梳理toC和toB的关键10+个微服务业务链接和关键核心微服务链路,识别出核心微服务关联的容器工作负载,关键接口以及RDS, Redis等关键实例,日后作为保障的重点实例对象,加强监控巡检,提升服务可用性。
2)接口流控分析方法:通过监控工具分析出高频API、活动API和对应的错误码及流控频率,锁定业务链路中的关键接口,提前分析流控隐患,构建实时流量监控和隐患巡检能力。
3)压力模型:通过分析入口流量(业务压力)增长1倍,下层云服务对应增长不同系数的场景,建立压力模型,再根据模型对链路上关键云服务进行容量性能优化,从而准确评估压力增长前资源扩容系数和应急预案。
4)架构优化:通过APIG高可用部署改造、WAF容灾优化、NAT业务隔离优化,优化实例的负载压力,构建业务的逃生能力,提升业务的可用性。
五、案例总结
本案例通过总体保障方案的制定和优化,接入层高可用架构改造,应用层微服务链路的细化梳理,数据层等关键云服务性能优化加固等关键活动的执行,成功顶住业务上云后首次活动的压力,活动当天业务稳定运行,WAF峰值、数据库慢SQL峰值、Redis负载均在预期水位线内,DWS零任务积压,圆满达成0故障0事故的目标。
- 点赞
- 收藏
- 关注作者
评论(0)