带你读《弹性计算—无处不在的算力》第三章:计算产品和技术3.2虚拟机云服务器(二)

本文涉及的产品
阿里云百炼推荐规格 ADB PostgreSQL,4核16GB 100GB 1个月
简介: 《弹性计算—无处不在的算力》第三章:计算产品和技术3.2虚拟机云服务器(二)


3.2.4 调度技术

调度系统在整个弹性计算中发挥着资源决策的作用, 当用户创建一台虚拟机或者使用一台已有的虚拟机进行迁移时,需要调度系统能够精确选择一个可用的物理机。典型的迁移场景有以下几个。

停机迁移: 物理机停机的时候。

升降配迁移:虚拟机需要进行CPU 和内存扩容,或者升级到其他规格产品系列的时候。

主动迁移:物理机硬件隐患、资源竞争导致性能下降时,可以通过热迁移或者用户重启的方式触发主动迁移。


调度系统不光在云平台,也在日常生活的很多场景中会遇到,比如高铁、电梯等。

回归本质,调度系统就是资源分配的决策过程,即在合适的时间给合适的对象分配合适的资源。因资源不同,所以出现了各式各样的调度系统。如果资源是 CPU 68


时间片,那么它可能是操作系统内部的进程调度;如果资源是用于创建虚拟机的一台台物理机,那么它是云上的虚拟机调度系统,如阿里云的后羿调度系统。

当用户通过控制台或者 Open API 创建一台虚拟机时,调度系统会在数以万计的物理机中,寻找一台较符合用户需求的机器承载用户的虚拟机实例。对照上面的描述,在这个场景下,合适的时间即用户创建虚拟机的时候,合适的对象指用户设定的虚拟机的属性,比如规格、售卖类型、网络类型等,而合适的资源其实就是云平台的物理机集群了。

调度系统在不同平台的实现存在一些差异,业界也有很多文章对其进行分析总结,比如 Google 发布的关于 Omega 调度系统的论文,把调度的架构分成了集中式调度、双层调度及共享状态调度。目前主流的一些分布式调度系统,包括 YarnMesosSpark 等都可以归到这几大类。它们在扩展性、并发度、容错性等方面各有优缺点, 此处不再赘述。

阿里云的后羿调度系统历经了十多年的发展。 2010 年,ECS 的第一个集群上线, 那时候的后羿调度系统是基于集群的调度,做的事情就是在集群内部进行静态的资源分配。但是伴随着集群规模的扩大,后羿调度系统也开始逐步演化,除了管理粒度细化到了区域,在调度流程中也引入了过滤—权重模型,同时考虑的权重策略变得逐渐丰富起来,从最初的装箱策略到后来的用户粒度分散、资源负载等。

过滤—权重模型

过滤— 权重模型是目前调度系统中使用的主流模型之一, 在 OpenStackKubernetes 中都能看到相关实现,当接受调度请求时,会依次流转到过滤器( Filter)、 权重器( Weigher) 及选择器( Selector) 这三个核心组件,如图 3-10 所示。

过滤器权重器选择器调度请求

image.png

3-10  过滤权重模型

我们以用户发起创建多个 ecs.c5.large 规格的虚拟机为例,介绍这三个组件的作用。

1)过滤器

顾名思义,过滤器的作用是过滤候选物理机。对于创建 ecs.c5.large 规格(即 CPU 是两核,内存是 4GB)的虚拟机,过滤器最典型的一个用途就是剔除当前资源不足两核 4GB 内存的物理机。实际上,在过滤器中有一个过滤器链,上文提到的剩第3 章 计算产品和技术


余资源过滤只是链路中的一环,其他比较常见的有售卖集群过滤、售卖类型过滤、网络架构过滤等。

2)权重器

所谓“吹尽狂沙始到金”,经过前置的过滤器后,到达权重器的物理机列表都是符合创建条件的,那为什么需要权重器这个组件呢?回到前面创建虚拟机的场景中, 最主要的一个考虑就是装箱策略,ecs.c5.large 的内存和 CPU 的比例是 2 1,从资源使用率的角度,我们当然期望最大化使用物理机上的所有资源,如果候选的物理机有两台,剩余的资源分别是两核 4GB 和两核 8GB,那么从配比的角度看,使用剩余资源是两核4GB 的物理机比较合算,刚好能最大化使用资源,否则会造成 4GB 资源的浪费。与过滤器中的过滤条件描述类似,权重器中考虑的权重也不止一个,除了刚才举例的资源配比,还有用户分散度、大规格资源预留等,这里部分权重甚至还会有冲突,如何去做权衡是一个大学问。

3)选择器

这是整个调度链路的最后一环,从前置的权重器获取一个有序的物理机列表后, 它要做的事情就是从列表里面选择一台最终承载用户创建的虚拟机。当然,最简单的策略就是选择第一台,因为它在此时此刻是最符合用户需求的。而实际情况是,在分布式环境里,用户创建的是多台 ecs.c5.large 规格的实例,言外之意就是并发创建。每创建一次虚拟机,都需要对物理机执行资源分配、虚拟机创建等操作,为了保持在分布式环境中的资源一致性,往往需要对当前操作的物理机执行加锁操作。为了提高效率,在选择器中比较典型的做法是对在一定范围内符合条件的物理机,执行随机选择策略,降低对同一台物理机争抢加锁的概率。当然这时候选择的物理机未必就是最佳的了,这本身也存在与效率之间的平衡问题。

核心业务组件

阿里云的 ECS 后羿调度系统有哪些独特之处呢?除了过滤—权重模型,还有哪些调度相关的核心业务组件呢?接下来逐步为大家揭晓。

1) 调度的大脑——过滤器—权重器—选择器工作流

虽然说这个工作流结构相对比较通用,但是在不同平台中需要考虑的方面存在不少差异,尤其是在不同规格及业务场景的冲击下,设计上的差异更是突出,如图3-11 所示。70

image.png

3-11  过滤器权重器选择器工作流

/ 弱过滤器的引入。过滤器依据了一些规则对候选物理机列表做筛选,但是在调度的策略中常常会出现如期望这些虚拟机尽量迁移到符合某些特定条件的机器上去等需求。针对这类需求,除了在权重中引入对应的因子,还可以使用弱过滤器,即当调度系统使用过滤器过滤后的候选列表低于设定阈值时, 就会忽略掉这个过滤规则。

多重的调度权重因子。在当前的调度权重计算中,会考虑用户维度的打散、物理机健康度、调度虚拟机与目的机器上 CPU/ 内存的配比、机型的最佳匹配等。正是因为有诸多的考虑因素,最终才能在众多物理机中选择出“最”符合条件的物理机。

高度可配置化。在实际情况中,集群中资源的分布时刻都在变化,通过外部分析实时调整相关调度策略及因子,最大的挑战是一个可用区的物理机数量达到数万乃至数十万级别,如果每个物理机都走一遍过滤器—权重器—选择器的过程流,则性能开销非常巨大,无法实现高性能交付。常规的解决思路是进行物理机分组,比如1000 台服务器一组,调度系统先选择分组,然后在组内实施过滤器—权重器—选择器流程。


2)调度的基石——标签系统

随着业务的变化及技术的发展,云上机器的异构性也越来越明显,下面介绍一些典型的例子。

1)在物理机层面,Intel CPU 不断更新换代,如 HaswellBroadwellSkylakeCaslake 等,同样地,与之对应的机型也有诸多差异,如不同的内存容量、磁盘容第3 章 计算产品和技术71


量等。

2)在物理网络和虚拟网络层面,物理网络从早期的千兆网络、万兆网络演变到目前主流的 25G bit/s 网络。同样,虚拟网络也在逐步发展:从经典网络到 VPC 网络, 以及是否支持 DPDK 高速转发等。

3)存储系统的差异,包括高效云盘、SSD 云盘、ESSD 云盘及本地实例存储的区别。

4)虚拟化技术,除了大家熟知的 Xen KVM ,还有阿里云特有的神龙架构等。

调度流程中的过滤—权重工作流程,需要区分这些差异,或者说需要把这些差异用程序表达出来。在阿里云的后羿调度系统中,这是由标签系统来实现的。

在系统实现层面,标签系统其实就是为每台物理机维护了很多的 Key-Value 的配对值,如图3-12 所示,涵盖了从物理机自身的硬件配置、上面运行的软件状态、机器的实际物理位置到售卖相关的业务特性等方方面面的信息。其实,在设计之初,标签系统就并不只是供调度系统使用,我们期望它在物理机的管理控制等方面都能提供系统支撑。

有了标签系统后,无论是调度系统还是管控系统,都能通过程序化的方式感知和比较下层物理机的差异,甚至进一步,通过引入标签组等方式,更快地筛选机器,降低过滤器—权重器—选择器工作流中过滤器的压力。

3)调度的情报处——数据中台

俗话说得好,“知己知彼,百战不殆”。调度系统想做出一个好的决策,必须对所有物理机知根知底。如果要准确、高效地给如标签系统等输入信息,就离不开数据中台。

数据中台是弹性计算业务架构中用于数据收集、处理及分发的业务平台,调度系统借助数据中台的力量,实现了调度信息的收集和处理,比如以下典型的场景。

1)物理机依赖实时上报和数据回流来构建整体的机器画像。在实时上报层面, 通过运行在物理机上的Agent 实时上报,系统获取当前 CPU Model/Flags、网络组件 AVS 的大小版本及支持的特性、本地盘机型的磁盘状态等;在数据回流层面,通过离线对数据做分析处理,把物理机前一段时间的健康状态回流到调度系统中,例如当前物理机上虚拟机的争抢情况、功耗和超电情况等。72

image.png

3-12  标签系统

2ECS 的后羿资源调度本质是一个黑盒调度,换言之,调度系统没有办法知道当前虚拟机的用途,但是我们可以通过检测物理机上的负载情况、用户创建和释放的周期等去建立画像信息,做到料敌于先机。

4)后羿调度的训练师——调度模拟器

上面提到后羿调度系统考虑了多重的调度权重因子及高度可配置化,这就引入了另外一个问题:不同区域存在差异性,这么多因子的权重如何配置?初期可以依赖线上数据定性分析,但是随着业务的更加复杂和更多因子的引入,显然需要一个比人脑更高效的“训练师”来做决策,这个训练师就是调度模拟器。

3-13 描述了调度模拟器的工作流程。我们通过设定调度目标,并使用线上实际的创建记录数据,在模拟器平台上结合机器学习模块反复播放,按照用户购买习惯,找到当前区域产品最佳权重分配策略,通过配置化接口设置到调度系统,并以此形成一个自闭环的反馈机制,逐步优化线上资源分配。

在介绍调度系统之后,不得不提到库存供给系统。如果说调度系统是厨师,负责把各种不同的物理机食材做资源分配,并通过管控系统创建出符合用户需求的虚拟机,那么库存供给系统就是准备食材的人。显而易见,调度系统想要烧出一道好菜, 如果食材不好或者不符合预期,是万万不能的。

比如阿里云售卖的同一款产品,在不用的区域,购买用户不同,应用场景也不同,诸如创建的虚拟机平均 CPU 值、内存和 CPU 的配比、单位时间的并发创建量等也不同。在资源调度时需要适配这些“不同”,最典型的就是针对下层物理机构成的第3 章 计算产品和技术73


不同,在虚拟机内存和 CPU 配比较小的区域,尽量补充数量合适的物理机,以更好地分配虚拟机资源,甚至在差异性较大时,还可能需要适当调整装箱的策略权重参数等。

image.png

3-13  调度模拟器的工作流程

相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
监控 中间件 Java
后端技术:构建高效、稳定的服务器端应用
【10月更文挑战第5天】后端技术:构建高效、稳定的服务器端应用
79 0
|
1月前
|
监控 关系型数据库 Serverless
探索后端技术:构建高效、可靠的服务器端应用
本文将深入探讨后端开发的核心概念和关键技术,从服务器架构到数据库管理,再到安全防护,为读者提供全面的后端技术指南。无论是初学者还是经验丰富的开发者,都能从中汲取灵感,提升自己的技术水平。
|
1月前
|
存储 监控 网络协议
服务器压力测试是一种评估系统在极端条件下的表现和稳定性的技术
【10月更文挑战第11天】服务器压力测试是一种评估系统在极端条件下的表现和稳定性的技术
112 32
|
22天前
|
存储 持续交付 虚拟化
|
1月前
|
存储 固态存储 安全
阿里云服务器X86计算架构解析与X86计算架构云服务器收费价格参考
阿里云服务器架构分为X86计算、Arm计算、高性能计算等多种架构,其中X86计算是用户选择最多的一种架构,本文将深入探讨阿里云X86计算架构的云服务器,包括其技术特性、适用场景、性能优势以及最新价格情况。
|
1月前
|
编解码 弹性计算 应用服务中间件
阿里云服务器Arm计算架构解析:Arm计算架构云服务器租用收费标准价格参考
阿里云服务器架构分为X86计算、Arm计算、高性能计算等多种架构,其中Arm计算架构以其低功耗、高效率的特点受到广泛关注。本文将深入解析阿里云Arm计算架构云服务器的技术特点、适用场景以及包年包月与按量付费的收费标准与最新活动价格情况,以供选择参考。
|
1月前
|
网络安全 虚拟化 Docker
SSH后判断当前服务器是云主机、物理机、虚拟机、docker环境
结合上述方法,您可以对当前环境进行较为准确的判断。重要的是理解每种环境的特征,并通过系统的响应进行综合分析。如果在Docker容器内,通常会有明显的环境标志和受限的资源视图;而在云主机或虚拟机上,虽然它们也可能是虚拟化的,但通常提供更接近物理机的体验,且可通过硬件标识来识别虚拟化平台。物理机则直接反映硬件真实信息,较少有虚拟化痕迹。通过这些线索,您应该能够定位到您所处的环境类型。
32 2
|
20天前
|
存储 弹性计算 调度
如何选适合的云服务器?双十一弹性计算爆品推荐
弹性计算双十一爆品清单,每一款产品都带来了超值优惠!精彩不容错过!
|
27天前
|
NoSQL PHP Redis
布谷语音app源码服务器环境配置及技术开发语言
布谷语音app源码服务器环境配置及技术语言研发。。

热门文章

最新文章

下一篇
无影云桌面