万台服务器分钟级部署,探秘阿里双十一弹性扩容背后的技术故事

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 与您分享下双十一的秘密武器~ 请移步:容器镜像服务产品页,了解更多:https://www.aliyun.com/product/acr

一、写在前面

又是一年双十一,这次的购物狂欢再次刷新记录,而背后的阿里云技术也再次交上了一份不错的‘期末考卷’。

往往在大促等高峰时段都需要对流量提前预估,但实际上预先计算好的资源和应用容量,依然可能不足以支撑流量高峰,需要紧急扩容;而容器技术则非常适合这种场景,在需要时快速地、自动弹性伸缩。那么在业务需求极速上升的情况下,大量服务器资源启动时如何抗住并发部署的压力呢?

今年双十一期间,阿里云容器镜像仓库存放30万类镜像,其中包含共计1000万镜像版本,而镜像下载量高达8亿次。

(容器镜像服务产品页,移步了解更多:https://www.aliyun.com/product/acr

image

2017年天猫双十一再次刷新了记录, 交易峰值32.5万笔/秒,支付峰值25.6万次/秒,数据库处理峰值4200万次/秒。

二、指数级别增长、百亿次拉取次数,容器镜像之于容器技术

作为一种轻量级的虚拟化技术,容器技术所具备的敏捷、可移植、可控性,使得它一经推出就受到众多开发者的追捧。但其实更重要的是,容器技术定义了一种标准化的交付方式——容器镜像。

容器镜像将应用的代码以及代码环境依赖都都打包在一起,这是一个与环境无关的交付物,可以应用在软件生命周期的任何阶段。就像集装箱改变了传统的运输体系,创造了容器镜像的容器技术彻底改变了传统的软件交付模式。

纵观全球,整个容器技术在近三年得到了爆发式的增长。据统计有67%的企业在生产环节或者尝试在生产环节中使用Docker,帮助他们敏捷进化,提高研发交付的效率。据Docker Con 2017的统计,近三年应用数增长了30倍,约有百万级别的容器化应用数。而容器镜像的拉取个数,近三年更是趋于了指数级别增长,承载了约110亿次拉取。

image

三、双十一与容器镜像服务的故事

早在2015年,阿里巴巴就在尝试使用容器技术。2016年双十一就已经将所有交易核心应用容器化,几十万容器撑起了双 11 交易 17.5 万笔/秒的下单峰值。而去年双十一,阿里巴巴已在集团范围实现在线服务全部容器化,内部已达到百万级容器部署规模,其中双十一交易峰值到32.5万笔/秒并且可以实现十分钟内万台服务器的快速部署。

截止目前,容器镜像服务支撑了集团10万镜像的托管,共计2亿次的镜像下载量。

四、为了承受高压,我们做了多维度的优化

在早期的容器推行演练中,由于当时发布系统日均的发布量上万,很多应用的规模开始破万,发布失败率开始增高,影响到了业务的正常迭代流程。这个困境的根本问题在于发布过程大量大应用镜像拉取的需求,而应用镜像内容过于冗余臃肿,彼时存在大量超过5G的大镜像,文件服务器扛不住大量的请求。

为了解决多规模、并发情况下容器镜像的获取问题,我们考虑了容器镜像大小、容器内容加速及流控、镜像Registry性能等三个大维度的优化。

1) 容器镜像大小优化

Action 1:之前将所有的构建过程编写在同一个Dockerfile中,包括应用及其依赖库的编译、测试、打包等流程,这里可能会带来的一些问题:镜像臃肿、镜像层次嵌套深、也可能存在源代码泄露的风险。我们进行了多阶段镜像构建优化,将镜像制作过程中的中间产物与最终镜像构建产物分离,形成最精简的应用镜像。

image

Action 2:将功能统一的命令聚合到同一层来完成,将使用频繁的应用或环境制作成基础镜像复用,尽可能减少镜像的层数。关于容器镜像优化的最佳实践,我们也开展了很多的线下沙龙活动进行分享,可以通过《Docker 镜像优化与最佳实践》了解更多,文章链接为https://yq.aliyun.com/articles/219139

2) 容器内容加速和流控

在大规模的镜像分发场景之下,优化镜像本身的大小作用有限,我们依然需要考虑如何从系统上提升镜像拉取的性能。最初很容易想到服务器扩容,可是扩容后又发现后端存储成为瓶颈。此外,大量来自不同IDC的客户端请求消耗了巨大的网络带宽,造成网络拥堵。同时,很多业务走向国际化,大量的应用部署在海外,海外服务器下载要回源国内,浪费了大量的国际带宽,而且还很慢;如果传输大文件,网络环境差,失败的话又得重来一遍,效率极低。

为了解决这些问题,阿里推出了蜻蜓这个产品。蜻蜓通过使用P2P技术同时结合智能压缩、智能流控等多种创新技术,解决大规模文件下载以及跨网络隔离等场景下各种文件分发难题,大幅提高数据预热、大规模容器镜像分发等业务能力。

在本地机器使用了分层的方式来下载镜像,下面介绍下Docker Pull的执行过程:
image

 *Docker 镜像分层下载图*

Docker Daemon调用Registry API得到镜像的Manifest,从Manifest中能算出每层的URL,Daemon随后把所有镜像层从Registry并行下载到Host本地仓库。

所以最终,镜像传输的问题变成了各镜像层文件的并行下载的问题。而蜻蜓擅长的正是将每层镜像文件从Registry用P2P模式传输到本地仓库中。

那么具体又是如何做到的呢?

事实上蜻蜓会在Host上启动proxy,Docker Engine的所有命令请求都会通过这个proxy,我们看下图:
image

首先,docker pull命令,会被dfget proxy截获。然后,由dfget proxy向CM发送调度请求,CM在收到请求后会检查对应的下载文件是否已经被缓存到本地,如果没有被缓存,则会从Registry中下载对应的文件,并生成种子分块数据(种子分块数据一旦生成就可以立即被使用);如果已经被缓存,则直接生成分块任务,请求者解析相应的分块任务,并从其他peer或者supernode中下载分块数据,当某个Layer的所有分块下载完成后,一个Layer也就下载完毕了,同样,当所有的Layer下载完成后,整个镜像也就下载完成了。

蜻蜓支持多种容器技术,对容器本身无需做任何改造,镜像分发比natvie方式提速可高达57倍,Registry网络出流量降低99.5%以上。为阿里巴巴业务的极速扩张和双十一大促保驾护航。

3) 镜像Registry性能优化

蜻蜓利用P2P的模式解决了从Registry获取镜像层并传输到本地的问题,不过当镜像拉取规模在几万并发的量级的时候,从Registry获取镜像的Manifest也会成为性能瓶颈。容器镜像服务从代码层面、基础设施层面做了很多定制化的增强:

在代码层面:容器镜像服务增加了对于Docker Registry优化,根据之前的镜像请求,自动分析热点数据并增加了热点数据的缓存,从容应对大规模并发下镜像Manifest的拉取。增加了对镜像下载源的动态判断,根据镜像下载请求的不同来源,自动返回离镜像下载最近的Registry地址。

在基础设施层面:为了应对流量的突发,容器镜像服务加强了针对Registry流量、存储的多维度监控,定时进行监控探活,并且实时收集监控数据,当达到监控阈值,Registry会自动进行报警和基础设施的弹性扩容。

五、容器技术惠及云上用户

为了将阿里在容器技术上的积累带给云上的用户使用,我们在2017年10月公测了阿里云容器服务。容器镜像服务(Container Registry)提供安全的镜像托管能力,稳定的国内外镜像构建服务,便捷的镜像授权功能,方便用户进行容器镜像全生命周期管理。容器镜像服务简化了Registry的搭建运维工作,支持多地域的镜像托管,并联合容器服务、CodePipeline等云产品,为用户打造云上使用Docker的一体化体验。

1)全球多地域支持及镜像加速器:

阿里云容器镜像服务提供了全球多地域支持,用户可以在自己业务地就近托管容器镜像,保障应用镜像的极速上传、下载操作。我们也为每一位用户提供了新一代专属镜像加速器,通过镜像加速器可以快速获取国外优秀的镜像。镜像加速器采用了自主研发的智能路由及动态缓存技术,极大提升了镜像的下载速度和用户体验。并且完全兼容 Docker 原生参数配置方式,支持 Linux、MacOS、Windows 三大平台。目前,容器镜像服务已经加速了千万次的镜像拉取,帮助用户节省192kh。

2)多阶段构建:

阿里云容器镜像服务提供了丰富稳定的镜像构建功能,包含自动构建、海外构建、多阶段构建(multi-stage build)支持,方便打造云上容器DevOps最佳实践。用户可以将应用代码托管在阿里云Code、Github、Bitbucket或者自建的GitLab之上,通过容器镜像服务多阶段构建功能或者阿里云CodePipline进行代码编译测试,构建完成后的镜像将推送至容器镜像服务托管。最后通过容器镜像服务上的webhook,动态通知容器服务集群上相应的应用重新部署。

通过整个解决方案,用户在将代码提交至线上之后,可以实现自动的代码测试,测试通过后应用自动构建成镜像,最终部署到测试、预发或者生产环境的集群上。

image

3) 镜像安全扫描

镜像已经成为企业的核心资产,企业软件交付流水线的中心,线上的应用的安全问题也是至关重要的。容器镜像服务提供了便捷的镜像安全扫描功能,提供多维度的镜像漏洞报告。镜像漏洞报告中包含漏洞的CVE编号、漏洞的等级、漏洞位置及官方和社区提供的漏洞修复方案。

image

六、写在后面

容器镜像服务通过Registry性能优化,蜻蜓通过P2P技术结合智能压缩和流控等方案,共同解决了大规模文件下载以及跨网络隔离等场景下各种文件分发难题,在阿里已然成为重要的基础设施之一,为业务的极速扩张和双十一大促保驾护航。

为了将阿里巴巴在容器技术上的积累带给云上用户,在2017年10月阿里巴巴推出了容器镜像服务(公测版)。容器镜像服务(Container Registry)免费提供了安全的镜像托管能力,稳定的国内外镜像构建服务,便捷的镜像授权功能,方便用户在云上进行容器镜像全生命周期管理,体验容器技术带来的敏捷变革。
此外,还有一个重大预告,容器镜像服务即将推出企业版,支持在用户自己的OSS上进行镜像托管,提供P2P镜像插件支撑大规模镜像拉取能力,提供自定义域名配置,镜像实例级别同步,镜像安全扫描等企业级功能。敬请期待!

相关实践学习
通过workbench远程登录ECS,快速搭建Docker环境
本教程指导用户体验通过workbench远程登录ECS,完成搭建Docker环境的快速搭建,并使用Docker部署一个Nginx服务。
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
22天前
|
定位技术
GPS北斗卫星同步时钟(时间同步服务器)建设施工部署方案
GPS北斗卫星同步时钟(时间同步服务器)建设施工部署方案
GPS北斗卫星同步时钟(时间同步服务器)建设施工部署方案
|
1月前
|
机器学习/深度学习 弹性计算 运维
ECS阿里云监控服务
ECS阿里云监控服务
73 3
|
1月前
|
存储 边缘计算 监控
【MODBUS】Modbus主站云端服务器和边缘设备部署区别
【MODBUS】Modbus主站云端服务器和边缘设备部署区别
35 0
|
1月前
|
存储 资源调度 应用服务中间件
浅谈本地开发好的 Web 应用部署到 ABAP 应用服务器上的几种方式
浅谈本地开发好的 Web 应用部署到 ABAP 应用服务器上的几种方式
24 0
|
29天前
|
弹性计算 运维 安全
2024年阿里云一键搭建部署幻兽帕鲁服务器解决方案
幻兽帕鲁火了,为了确保畅快体验游戏,构建高效、稳定的游戏服务器至关重要。幸运的是,阿里云为您提供了快速、简便的服务器搭建解决方案,即使您对技术知识了解有限,也能在短短一分钟内轻松完成《幻兽帕鲁》游戏的联机服务器搭建!
1444 4
|
22小时前
|
NoSQL 关系型数据库 MySQL
阿里云服务器部署项目流程
本文主要讲解阿里云服务器的部署,如何选择配置等
|
4天前
|
Java 应用服务中间件 Linux
阿里云服务器部署多个tomcat
阿里云服务器部署多个tomcat
|
28天前
|
域名解析 弹性计算 数据可视化
如何使用云服务器ECS搭建网站?阿里云云服务器ECS部署网站新手教程
本文介绍了在阿里云ECS上自助建站的流程。建站方式包括自助建站、模板建站和定制建站,适合个人或小企业用户。建站步骤涉及准备服务器、配置安全组规则、部署网站、购买和备案域名以及解析域名。此外,文章还提及了产品计费和常见问题,提供相关服务如架构设计、迁云服务和基础设置服务等。
376 0
|
29天前
|
弹性计算 运维 安全
手把手教你入门部署幻兽帕鲁服务器:2024年阿里云搭建幻兽帕鲁Palworld联机服务器新手教程
手把手教你入门部署幻兽帕鲁服务器:2024年阿里云搭建幻兽帕鲁Palworld联机服务器新手教程。对于热衷《幻兽帕鲁》这款开放世界生存制作游戏的粉丝而言,拥有个人游戏服务器无疑是令人心动的。这款由Pocketpair开发的游戏,在2024年1月18日推出了其抢先体验版,它凭借广阔的游戏世界和丰富的玩法——如收集神奇的生物“帕鲁”,让它们参与战斗、建造、农耕和工业生产等——赢得了大量玩家的喜爱。现在,我将为大家详细指导如何在阿里云服务器上轻松一键部署《幻兽帕鲁》的联机服务器。
1082 2
|
30天前
|
机器学习/深度学习 API 网络安全
视觉智能平台常见问题之服务部署在pdd的服务器上调用会报错如何解决
视觉智能平台是利用机器学习和图像处理技术,提供图像识别、视频分析等智能视觉服务的平台;本合集针对该平台在使用中遇到的常见问题进行了收集和解答,以帮助开发者和企业用户在整合和部署视觉智能解决方案时,能够更快地定位问题并找到有效的解决策略。
175 4