作者:光锥
AServer接入网关承载着整个阿里集团的入口流量,负责维系数十亿用户的长链,支持数万条路由策略转发。它是连接几亿用户和几十万后台服务节点的桥梁。去年的双十一需要支持数十亿在线用户、数千万QPS和数万种有效的API控制策略,实现安全可靠的转发路由,保证用户体验的流畅。
在大规模业务流程和控制的支撑背后,需要对系统的每一个细节进行精准控制,消除每一个潜在的风险点。
借助云原生架构,可以大大简化运维操作,降低潜在风险。去年双十一阿里AServer接入网上千个pod顺利过了高峰。本文主要介绍阿里AServer接入网关如何拥抱来自上一代架构的改变,云原生的演进之路是全面的。
架构背景每年的双十一促销都是对阿里所有服务最严峻的考验。尤其对于AServer接入网关,作为阿里集团的第一个网关,需要抵御大促高峰带来的流量高峰,清洗攻击流量,所需集群规模巨大。
庞大的集群规模和对机器性能的极端要求,导致运维的复杂性;随着接入业务的增多,支持的业务场景变宽,业务对路由策略的灵活性和实时性要求变高,对路由策略的动态安排能力有着强烈的需求。由于业务的多样性、业务线的闭网节奏不同、故障隔离等原因,衍生出对流量隔离稳定性的需求。
运维的复杂性、动态布局的需求、流量隔离以及对性能的极致要求,推动了AServer接入网关的不断演进和成长。在紧跟业务发展的同时,逐步降低了运维成本,增强了系统的稳定性,经得起一次又一次“双十一”的考验。
工作经历
tengine gateway作为阿里集团的AServer接入网关,承载着整个阿里集团的入口流量,并初步支持域名转发策略,根据域名转发给不同的后端服务,业务形式相对简单。
在All in wireless时代,为了优化手机端的用户体验,降低服务器人员的开发成本,集团自行开发了MTOP(手机淘宝开放平台)API网关,为客户端和服务器端提供了一致的API平台。同一个域名仅通过URI携带的API信息转发到相应的服务,接入网关需要支持根据API(URI区分)的路由转发能力,几年间迅速增加到数万条规则。
随着业务发展的日益精细化,同一API下的不同业务场景有望细分。比如对于双十一发布会的来源,手淘、支付宝等出站页面等场景要更精细的控制。为了适应业务发展,网关需要支持精细化管控能力,根据业务请求参数和请求头进行管理和分流。每一个请求都要从成千上万条灵活的配置规则中匹配出唯一的路径,同时保持极高的性能,这是一件非常具有挑战性的事情。
业务模型图
操作和维护背景
一开始基础支撑基础设施不完善,网关层基于tengine搭建。最简单快捷的解决方案是使用物理机,部署流程和配置可以完成服务构建。随着业务的增长,配置管理成为瓶颈,网关层需要一个强大的配置管理平台,以标准化的方式生成业务配置。自主开发的配置管理平台将配置分为三部分:应用配置、公共配置管理和证书配置。
初始系统部署架构:
该方案可以实现服务自助接入,通过配置管理平台的模板生成tengine配置,然后定时推送到网关机器,重新加载流程使配置生效。
通过这种运维模式,可以不依赖基础设施快速演进。然而,随着业务的增长和集群规模的增大,物理机运维模式的弊端逐渐显现。野蛮生长的时代已经过去,作为阿里服务的入口,稳定成为重中之重。物理机的二进制分发依靠手工部署,需要批量执行命令安装rpm包,批量重启进程,这些都是通过黑屏操作完成的。
这种运维模式显然不能满足目前的稳定性要求,通过人工发布容易因误操作造成系统故障。另外,很难保证物理机器运维的一致性,包括二进制系统的一致性和机器环境的一致性检查(如内核参数等。).过去的人工运维方式显然已经跟不上时代的步伐。
解决出版和环境一致性问题的最佳方案是容器化技术。随着集团基础设施的完善,接入网关的集装箱化改造扫除了障碍。不变量(系统配置和二进制)打包成一个整体进行发布,变量(应用配置、公共配置和证书)继续由配置管理平台管理,并使用容器化技术进行调整。
容器转换后的发布和配置更改流程:
容器化的架构简化了建站、扩容、收缩的操作,发布效率得到了大幅提升。增加了审批流程,卡点系统化,避免了人工操作可能带来的失败。发布过程还可以与监控系统连接,自动报警和暂停发布。
核心问题
随着电商业务发展越来越快,规模达到瓶颈后,业务会更加横向扩展,精细化程度会越来越高,迭代速度也会越来越高,网关层适应业务变化的成本也会变高。由此产生的核心问题:
近几年云原生的快速发展也为网关层提供了更好的架构选择。
针对接入网关存在的问题,云原生架构结合集团业务场景和云原生开源系统,开启了AServer接入网关的云原生演进之路。对于分步验证,分解为运维系统升级和服务治理三个阶段网关为网状,南北架构拆分。接下来,详细解释每个步骤的演变。
操作和维护系统升级
1待解决的问题
通过容器化的升级部署,大大简化了部署运维模式,可以解决当时最突出的问题。然而,仅仅转变部署模式是远远不够的:
2进化思想
随着集团内部针对云原生应用设计的统一基础架构ASI(Alibabaserver Less infra structure)的逐步完善,提供基于原生K8S API的完整云原生技术栈支持。
云原生方案编排能力强,通过自定义实现k8s扩展,很容易抹平网关层的特殊性。ASI独创的自动化运维手段可以直接应用到网关层。
通过节点池划分可以实现层对层模型的特殊性。网关机节点池可以自定义模型和内核参数,消除了网关运维的特殊性,统一管理运维。
3进化方案
通过k8s自带的控制器扩展能力,可以自定义容器布局,在扩展和收缩时监控Pod变化事件,向配置管理平台添加和删除机器,同时可以挂载/卸载VIPs,平滑运维的特殊性,所有资源都由声明式API定义,方便运维。
对于网关的运维,需要预留一个非常简单的运维平台,只用于搭建网站。与常见的应用相比,网关需要在相应的区域创建VIP进行附加域等操作,轻量级且易于维护:
通过ASI改造,将接入网关的运维整合到集团的ASI云原生系统(提高交付效率,去除专门的运维),通用能力下沉到ASI和基础系统,同时具备风险隔离、自恢复和弹性的能力。
治理和网关网状网络
1待解决的问题
随着网关层接入服务类型的增加,需要支持数万条API路由规则,路由策略也越来越精细化,tengine的原生能力无法满足业务需求。在过去的几年中,以非标准方式定义的Teengine模块的定制开发已经很好地适应了业务的发展。但随着业务需求更加精细化,Teengine模块定制开发的成本也逐渐增加。
2原始架构
3进化思想
如何动态安排和细化控制路由策略是云原生系统下首要考虑的问题。参考业界网关层做法,如孔、大使等。,主流的网关数据平面实现都是基于nginx或者envoy。不同产品的可扩展性、动态布局能力和成熟度的比较:
综合考虑动态、标准和性能,使用envoy作为数据平面更适合云原生演进方向:
动态和灵活性
标准
表演
envoy的缺点是作为一个istio标准组件,它有很强的东西向路由能力,作为一个南北向组件,它需要一些性能和稳定性的优化,但从长远来看,动态性和标准化更重要。
4进化方案
复用组导频作为统一的控制平面组件,实现网关自身的网状化;
控制平面需要为权限关闭提供一层管理和控制逻辑,以便提供每个显示的业务产品的编写。各产品通过k8s声明式api编写路由策略,然后由飞行员控制平面转换成xDS数据平面协议,实时同步到数据平面特使。南向路由网关的实现架构:
由于集团的大规模配置,几十万条路由规则,几千个应用,几十万个业务节点,开源系统很少有这样的规模。南北网关应用Pilot+Envoy方案后,需要对原生组件进行优化和定制,解决规模带来的性能和稳定性问题:
通过对开源系统的定制和优化,可以很好的匹配集团内部的需求,通过灵活的配置和组合,通过快速迭代控制平面透明传输的能力,实现集团内部不同业务的特殊需求。
南北分裂
1待解决的问题
作为网关用户和业务之间的桥梁,保持用户长链的活跃度,优化协议,让用户尽可能快速稳定的连接到群组;支持灵活的路由和融合服务限流策略,以及负载平衡。虽然连接保持活动和路由转发完全能够作为网关,但它们对迭代效率和业务特征的需求是完全不同的。
在一些大的推广场景下,即使出现意外的流量高峰,网关层作为保护业务服务的屏障,依靠高性能和水位预留,依然可以稳如磐石。考虑到保活长链,协议优化有这个长迭代周期和高性能;由于路由和流量清洗的策略灵活复杂,资源消耗自然相对较高。如果将路由和流量清洗的架构拆分,整体资源利用率可以大大提高。
2进化思路和方案
与客户端交互的模块,如协议卸载、长链保持活动等。,并能保持极高的性能,被单独分割成北向集群。由于它们性能好,只需要几台机器就能筑起高高的堤坝挡住洪水;至于服务路由策略,以及安全清理能力,更消耗性能,所以拆分到南向集群,由北向高坝保护过载。南行集群可以降低预留水位,从而提高整体资源利用率。这样既可以提高资源利用率,又可以灵活配置,满足业务快速发展的需要。
整体架构
经过三个阶段的发展,最终的架构图如下:
服务器接入网关云本地架构
未来,阿里AServer接入网关将一步步向云原生演进。每一次进化都是基于困扰我们很久的问题,但并不止步于解决问题。同时,基于当前时代的解决方案,云原生架构的转型还远未结束,云原生的优势还没有完全发挥出来。技术升级最终是为了服务产品。云原生升级后,我们有了强大的引擎。接下来我们要做的就是利用这个引擎来改造产品形态,让基于网关的开发者最终受益。
产品集成
一个网关产品最好的状态是什么样的状态?开发者每天都在用,但不需要关心网关的存在,所以存在感最低的状态可能就是最好的状态。目前从接入网关的产品形态上暴露出一些实现细节。当一个门户应用上线时,它需要几个不同的系统进行交互来完成访问。云原生改造完成后,可以更好的实现All in One,实现产品的集成和闭环。
快速弹性
ASI Pod虽然经过了升级改造,但是可以自动进行机器更换、机器迁移等操作,降低了运维成本。而尚云最重要的能力是快速弹性,比如双十一高峰前快速扩张,大促后快速收缩,可以大大减少大促预留的机器资源,从而节省巨额成本。当然还有很多问题需要解决,比如安全性、可靠性、灵活性、实时性,这些都需要配合云的基础设施,才能充分利用云的优势。
关注我们,每周3次移动技术实践为你想干货!
想了解更多关于阿里亿级长连网关的云原生演进之路的内容,请扫微信
或微信搜索jiemingpan
版权说明:本文版权由作者自行负责,如有侵权请联系本站删除。