阿里七层流量入口 Tengine硬件加速探索之路

阿里七层流量入口 Tengine硬件加速探索之路
最新回答
思绪づ走了

2020-11-05 19:15:01

阿里七层流量入口 Tengine硬件加速探索之路

阿里集团的接入层作为全站流量的入口,承载着HTTPS卸载、流量分发等关键任务,其性能和稳定性至关重要。随着业务量的快速增长,如何在硬件层面提升性能,成为了一个亟待解决的问题。本文详细介绍了Tengine在硬件加速领域的探索之路,特别是在HTTPS卸载和Gzip卸载方面的实践。

一、接入层系统介绍

接入层是阿里巴巴全站HTTPS诞生的产物,旨在统一处理HTTPS卸载和流量分发等任务,以降低机器成本和简化证书管理。所有阿里集团的流量通过四层LVS到达统一接入层,再根据域名等维度转发到对应的后端APP,并提供智能流量分发策略。这一层还实现了安全防攻击、链路追踪等高级功能。

二、性能瓶颈分析及解决

主站接入层承载了集团90%以上的入口流量,并支持众多高级功能。然而,HTTPS和Gzip是消耗CPU资源的主要功能点,成为了性能瓶颈。为了优化性能,阿里在硬件加速领域迈出了第一步。

三、HTTPS卸载篇

全站HTTPS虽然能提升安全性,但也会降低网站访问速度和增加服务器CPU消耗。软件层面的优化方案如Session复用、OCSP Stapling等虽有一定效果,但无法满足日益增长的流量需求。因此,阿里采用了基于Intel QAT的异步加速方案。

该方案由Tengine的ssl_async指令、OpenSSL + QAT Engine及QAT Driver三部分组成。Tengine通过适配OpenSSL-1.1.0的异步接口,将私钥操作卸载至Intel提供的引擎中,引擎通过QAT驱动调用硬件完成非对称算法。该方案在Tengine2.2.2中已经开源,并显著提升了HTTPS的性能。

四、Tengine基于Intel QAT的异步加速方案效果

  • RSA套件提升3.8倍(8核时)
  • ECDHE-RSA提升2.65倍(8核时)
  • ECDHE-ECDSA(P-384) 提升2倍(16核时)
  • ECDHE-ECDSA(P-256) 8核达到QAT硬件处理峰值16k左右,只有23%的性能提升

HTTPS卸载方案不仅减少了物理机数量,还节省了CPU资源,为公司带来了显著价值。

五、Gzip卸载篇

接入层Gzip模块的CPU占比达到15-20%,卸载Gzip的CPU消耗可以进一步提升性能。阿里调研了多套硬件加速方案,最终选择了与Intel合作的QAT卡加速方案。

通过改造Tengine中的Gzip模块,使其调用QAT驱动进行硬件压缩,最终将压缩后的数据传回Tengine传输给用户。然而,在实践过程中遇到了诸多挑战,如驱动问题、系统函数CPU占比变高等。经过与Intel研发团队的多次探讨和优化,这些问题得以解决。

六、运维与监控

在上线前,阿里进行了充分的压测和演练,并制定了容灾保护方案。同时,对硬件加速相关的资源指标进行实时监控和报警。部署与发布方面,采用单rpm软件包、双二进制模式,自动识别部署机器是否开启QAT,并选择正确的二进制执行。

七、硬件加速效果

上线后,Tengine Gzip使用QAT加速后,CPU节省在15%左右,且Gzip基本上完全卸载。在2017年双11零点流量峰值附近,Tengine加速机器相比普通机器性能提升21%。

八、展望及总结

Tengine首次采用硬件加速技术卸载Gzip,不仅带来了性能上的提升,还为接入层在硬件加速领域打下了坚实的基础。在未来,Tengine将继续在软件和硬件层面进行探索,为集团和用户提供更加高可用、高性能、低成本、安全、运维自动化的系统。