TG客服:@SSjiejie — 官方频道:@SSwangluo
三生网络 © 2009-2023 超15年出海经验,跨境项目专家
业务介绍
自2019年,腾竞整个电竞赛事数据服务完全由腾讯云TKE容器服务承载。腾竞赛事数据开放平台目前主要提供职业赛事数据的授权与查询,随着斗鱼、虎牙、企鹅、掌盟、微信直播、微博等平台的相继接入,平台整体流量有了爆发式的增长。
此前2021英雄联盟全球总决赛(以下简称S11)期间更是创下了平台流量新高,达到了百万级QPS、百亿级调用量。面对电竞赛事此类周期性强、并发高的业务场景,有效快速的自动扩缩容、提升资源利用率,是满足业务高速发展、合理控制成本的关键所在。
这里将介绍LOL S11赛事期间,腾竞赛事数据开放平台如何通过虚拟节点弹性调度+VPC-CNI架构,轻松应对爆发的百万流量。
业务特性
电竞赛事具备明显的业务特性,其对服务的自动伸缩能力有非常高的要求。
·周期性
电竞赛事具有明显的周期性,比赛时段是流量高峰期,其余时间流量骤减,流量相差数百倍,需要通过弹性扩缩能力,减少波谷时的冗余资源,降低成本。
·高并发
比赛期间,服务需要承载百万级QPS,需要快速的扩容时间、及库存充足的资源池。
·突增快
比赛开始时,玩家开始大量涌入直播间,需要保证服务稳定性,避免突增流量过大引发集群雪崩。
架构介绍
整体架构
集群采用Istio作为服务网格框架进行微服务治理,流量经由多条CLB(解决单条CLB带宽上限)进入Istio Ingress(直连Pod)后进行流量分发,依托于Istio的Sidecar模式,能够对各服务之间进行非常精细化的流量管理,例如:灰度、限流、熔断等等。
普通节点+虚拟节点
开启VPC-CNI采用直连Pod模式后,集群不再受NodePort网络转发能力的限制,少量常规节点应对业务日常低负载场景,利用虚拟节点弹性扩缩容能力应对赛事期间业务超高负载场景。
DevOps
基于Docker的CI/CD服务,支持多环境(云端、本地)、多集群编排服务,满足业务的不同部署需求。
弹性扩容方案演变
基于上述的业务特性,针对弹性扩容的方案,经历了【手动扩容=>节点池=>虚拟节点】的一系列演变历程,目前的弹性扩容方案可以完美满足业务需求。
业务初期:手动扩容
业务初期,负载较低,根据业务特征,手动扩缩容基本可以满足需求。
由于手动扩缩容需要一定的时间窗口,因此需要放置一定数量的冗余资源应对突增流量,资源利用率较低,只有6%左右。
业务发展中:节点池
随着业务发展,周期性的高低峰流量特征愈发明显,面对高频的扩缩容需求时,手动扩缩容不仅人力成本较高,而且无法避免人为失误。
在突增流量速度较慢的场景下,节点池可以较好满足业务需求,不过需配置服务器,扩容速度较慢,冗余资源仍存在,资源利用率较低。另外,缩容时对节点进行封锁、驱逐等操作,不利于服务的稳定性。
业务高速发展:虚拟节点,秒级扩容,节省30%成本
业务高速发展阶段,高低峰流量相差悬殊、并发逐渐增高、突增流量时间达到秒级,节点池的扩容速度不足以满足业务需求,还有购置服务器时库存不足的风险。
虚拟节点是TKE提供的一种弹性调度能力,提供了近乎无限资源的扩容能力,可以直接将Pod调度至弹性容器服务EKS维护的云上资源中,无需扩容节点。相比节点池,虚拟节点的扩容、缩容流程简化了购买、初始化、退还服务器的流程,大大提升了弹性的速度,尽可能降低在扩容流程中可能出现的失败,使得弹性更快、更高效、更节省成本。
在弹性效率层面,虚拟节点可在数十秒内启动数以百计的Pod,能够很好的应对S11这类高爆发业务场景。在成本层面,避免了普通节点由于无法完美分配Pod申请的资源而产生的buffer资源,节省了资源成本。
在此基础上,我们结合业务侧数据,采取自动化资源预热的方式应对高频的突增流量场景;运营类业务场景则需要和运营部门紧密结合做好手动扩容的准备。
网络转发方案优化
存在的问题
集群提供公网访问入口时,默认情况下外部流量经由集群节点NodePort转发至集群内部,当虚拟节点中部署的Pod数量较少,集群整体负载较低时,该模式不会有网络转发性能瓶颈。不过随着部署在虚拟节点中的Pod数量增大,集群整体负载升高,就需要添加更多的节点用于网络转发,这与自动伸缩、快速扩容、降低成本的目标背道而驰。
优化方案
开启VPC-CNI后采用直连Pod模式,容器与节点分布在同一网络平面,每个Pod分配有固定IP,网络直接由CLB转入Istio Ingress,不再经由NodePort转发,提高了网络转发效率,集群也不在需要网络转发节点,大大提高了集群的扩容能力。该模式下,集群扩容上限受到集群所分配网段可用IP数的限制,因此需要提前做好规划,避免集群扩容受限。
最终效果
通过虚拟节点和VPC-CNI模式下直连Pod的结合,目前集群整体承载能力有了很大的提升,在成本控制方面也有了长足的进步。
秒级扩缩容
通过虚拟节点+K8s HPA能力,集群可在数十秒内启动数以百计的承载百万级流量的Pod,可以轻松应对快速扩缩容需求。再结合业务侧数据,自动化进行资源预热,提升集群抗突增流量能力。缩容时也不再需要对节点进行封锁、驱逐等操作,提高了服务的稳定性。
百万承载
VPC-CNI直连Pod解决了NodePort流量转发瓶颈的问题,加上虚拟节点近乎无限资源的扩容能力大大提高了集群水平扩容的上限,像腾竞赛事数据开放平台这样大量读的场景能轻松扩容至百万乃至千万级QPS。
降低成本
虚拟节点的高效扩缩容,配合K8s的HPA自动伸缩机制,减少了资源的准备和闲置时间,避免普通节点中的碎片化资源问题,有效的提高了资源利用率,最终为业务节省了30%的成本。
参考文档
容器服务TKE:
【https://cloud.tencent.com/document/product/457/6759】
虚拟节点概述:
【https://cloud.tencent.com/document/product/457/53027】
弹性集群:
【https://cloud.tencent.com/document/product/457/39804】
VPC-CNI模式介绍:
【https://cloud.tencent.com/document/product/457/50355】
TG客服:@SSjiejie — 官方频道:@SSwangluo
三生网络 © 2009-2023 超15年出海经验,跨境项目专家