「云计算」1分钟创建6000台云服务器,云函数是如何做到的?


文章转载自腾讯开发者
云函数(Serverless Cloud Function , SCF)是腾讯云为企业和开发者们提供的无服务器执行环境 , 帮助用户在无需购买和管理服务器的情况下运行代码 。 而随着方便快捷的云原生服务愈发受人青睐 , 业务量与日俱增 , 作为提供云函数SCF底层支持的云服务器 , 也承受着越来越大的压力 。 鲜为人知的是 , 承担云服务器创建任务的 , 是CBS云硬盘快照服务 。 当云函数SCF团队需要业务扩容或版本变更 , 云服务器创建并发量会增长为平常业务系统的数十倍 。
通过不断优化服务 , 在云函数SCF业务高峰期 , 云硬盘快照系统扛住了1分钟内并发创建6000台云服务器的压力 。那么 , 云硬盘快照是如何做到的?
一、SCF与CBS的协作之路 由于CVM云服务器和CBS云硬盘在弹性扩容、资源管理工作中便捷性突出 , 云函数SCF团队逐步使用CVM云服务器和CBS云硬盘搭建底层系统 。 当云函数SCF云函数需要发布新版本时 , 会使用新版本的系统镜像批量创建云服务器 , 逐步替换旧版本镜像云服务器 。 云硬盘团队和云函数SCF团队反复协商沟通 , 在不影响现网其他用户的正常业务 , 初步的整体目标为:1分钟内并发创建6000台CVM , 且服务器启动后IO延时抖动稳定 。
二、云服务创建 当说到云服务器创建 , 就不得不提CBS云硬盘快照服务 , 它是云硬盘某个时刻的数据备份 。 用户可以使用快照记录云硬盘不同时刻的数据 , 用于满足系统恢复、容灾以及云硬盘复制等需要 。
那么 , 云硬盘的备份 , 和云服务器创建有什么关系?
别急 , 我们先为大家介绍下云服务器创建的两种方式 , 即通过镜像下载或云硬盘快照回滚创建 。
1、云服务器创建方式对比
镜像下载:通过宿主机下载完整镜像文件并写入CBS云硬盘后 , 才能启动云服务器 。
云硬盘快照回滚创建:先将镜像文件以快照数据的形式存储 , 当需要创建CVM云服务器时 , 利用云硬盘快照系统的秒级回滚能力 , 将镜像文件批量回滚至指定的CBS云硬盘 。
它们之间的对比如下表所示 , 利用快照回滚创建云服务器 , 拥有很多传统创建方案不具备的能力:
「云计算」1分钟创建6000台云服务器,云函数是如何做到的?
本文插图
2、云硬盘快照回滚创建云服务器
通过快照回滚创建云服务器 , 具备秒级并发创建 , 不占用宿主机资源等特点 , 整体的流程如下:
1.镜像数据存储于cos对象存储中:创建云服务器时 , 云硬盘快照系统将镜像数据从COS拷贝至目标云硬盘上 , 数据传输不经过宿主机 。
2.云服务器启动只需访问一小部分数据:云硬盘快照系统优先拷贝关键数据 , 用户启动云服务器后 , 后台异步完成剩余数据拷贝工作 。 CBS存储系统对用户IO和云硬盘快照系统IO做了隔离处理 , 分配固定带宽用于云硬盘快照系统的写入 , 整体流程对用户的云硬盘性能无影响 。
云硬盘快照系统优先搬迁关键数据 , 让用户在数秒内启动云服务器正常访问,那么 , 如果用户启动云服务器后 , 访问了未完成拷贝的数据 , 数据访问是不是就会失败?
其实 , 由于云硬盘快照系统具备优先拷贝关键数据的能力 , 正常情况下 , 云硬盘快照系统会按磁盘扇区位置顺序拷贝数据 。 若一旦用户访问了未完成拷贝的数据 , 会触发云硬盘快照系统的优先拷贝机制 , 优先拷贝用户需要访问的数据 。
「云计算」1分钟创建6000台云服务器,云函数是如何做到的?
本文插图
图一. 快照回滚创建服务器图示
示意图说明:
①当用户需要访问待拷贝数据块 , 宿主机通知云硬盘快照系统优先从COS对象存储搬迁指定数据②云硬盘快照系统将数据写入CBS云硬盘中③快照系统返回写入成功信息④宿主机下发读请求IO正常访问云硬盘数据 。