疫情期间,腾讯会议作为一款非常便捷的远程协作工具,成为国内众多企业日常会议沟通交流的主要平台。殊不知,这款产品从2019年12月26日才正式推出。如何在这么短的时间内,有效撑起国内数以亿计的用户访问量,保证系统的稳定运行?本文来自腾讯云的技术人员,为你解析8天时间内完成100万核资源的扩容背后的技术,希望对大家有所借鉴。
如果需要交付100万核的计算资源,需要做什么?准备资源,然后按用户需求进行交付。如果在前面加一个定语“快速”呢?可以加班加点完成。但是如果要实现8天内完成100万核的资源交付,换算下来,每天需要交付12.5万核,这就有点苛刻。在云计算的历史上,从未出现过类似的案例。
那么,腾讯会议是如何做到的呢?
解决思路
首先,分析如此短的时间内,交付这些资源需要做哪些事情,会遇到哪些问题。
实际上,借助于当前成熟的虚拟化技术,可以基于已经制作好的镜像系统文件,快速地部署一套用于提供服务的生产环境,所以,只需要准备好足够的计算资源就能够实现服务的无限扩容,而这个过程大概需要以下四步。1.准备资源,投放物理机:作为云计算服务提供商,首先资源是第一位的,所以第一步要准备用于提供服务的物理机。这100万核心的资源,相当于约12000台物理机。以防资源不足的问题,需要快速将这些物理机全部上架,同时,保证每台物理机经过验证,并且部署了正确版本的后台组件。2.资源注册与分配:有了物理机资源,下一步就需要把初始化好的物理机资源投放到现网环境中,确保每一台物理机资源都在CVM后台服务中注册。腾讯云操作系统VStation需要维护数十万级的物理机资源,这无疑对资源调度能力提出了极大的挑战。这一步需要快速将所有计算资源找到对应的物理机承载。3.资源创建与交付:当后台调度系统选择好承载计算能力的物理机之后,下一步是到物理机上创建虚拟机资源。这一步看似简单但需要做的事情却不少,如生成用户控制数据,与存储、网络系统交互,生成对应的虚拟机配置,启动虚拟机。4.虚拟机初始化:虚拟机成功创建之后,就已经可以交付使用了。不过可能还需要进行配置,如拉取配置、加入服务集群、启动服务等。
完整历程解密
图1是腾讯云操作系统VStation架构图,腾讯云操作系统VStation,承担资源调度、请求排队的任务,已经对大批量、高并发的创建请求进行了充分优化。具体来说:
- API 部分接入用户请求,管理用户角色、CVM 机型、用户配额等;
- 云操作系统VStation,承担资源调度、请求排队,目前虚拟机每分钟吞吐可达到5000台;
- Host组件上安装用于生产和配置CVM实例的各种辅助组件。
图1:VStation云操作系统
下面从资源准备、注册与分配、创建与交付、虚拟机初始化四大部分详细介绍下其中的具体过程。
1.准备资源,投放物理机
腾讯云基于定制化腾讯TLinux、自研的虚拟化hypervisor系统,可以实现批量自动部署、自动投放,并且在投放到现网之前进行自动验证,保证软硬件不存在隐患。腾讯云Host组件管控系统,方便管理腾讯云hypervisor上的各种代理组件,易于发布,方便运维。
图2:Host初始化过程
- 安装系统:运维平台从资产管理平台CMDB拉取对应Host相关机型信息,寻找与该机型对应的TLinux操作系统控制BMC配置从pxe启动,从pxe服务器拉取系统镜像安装系统。
- 系统初始化:安装完系统后需要配置各种系统参数,调优。
- 部署Host使用的组件:每种不同机型的CVM使用的Host 会使用不同的后台Agent,以及相关配置。通过Host组件管控系统Host使用的插件进行统一管理,下发。
- 导入集群:已经初始化好的Host,需要导入到VStation 集群才能售卖和生产CVM。
图3:Host组件管控系统
Host组件管控系统用于下发Host组件、灰度版本、控制、支持并发下载、灰度发布,同时上报Host上各个组件的信息、组件健康管理、自动拉起组件、异常告警等。
2.资源注册与分配
作为整个系统的核心,腾讯云操作系统VStation需要管理10万级的物理机资源,近千万级的核数,所以需要实现快速和稳定的调度系统。VStation服务类似Google Borg/Omega 使用的分布式调度架构,对计算资源进行调度。