第1章 弹性计算
1.1 弹性计算是什么
弹性计算是一种为用户提供计算力的服务,并且用户可以根据实际需要灵活、动态地调整要购买的容量,即所谓的“弹性
1.1.1 弹性计算的状态
弹性计算提供的“计算力”是用于完成用户特定的计算任务,弹性计算提供了一种产品形态,“即云服务器”。云服务器的能力与一台传统的物理服务器差不多,并且提供与物理服务器一样的标准接口。
1.1.2 弹性计算的构成
“计算”一词含义可大可小。从广义上看,任何IT能力都离不开计算,因此云也被称为“云计算”,涵盖IaaS、PaaS、SaaS等各种服务,下一一点看,弹性计算中的“计算”可以理解为计算任务的运行,换句话说,是指执行计算机代码。
要运行一个计算任务,弹性计算不光要提供执行代码的侠义计算能力,还需要配套的存储能力和网络能力。存储为计算任务实现数据持久化,而网络让计算任务可以与外界通信、协作。计算、存储和网络加一起,形成“计算力”三要素。
从“云服务器”这一产品形态,计算主要体现为CPU和内存等资源,存储主要体现为块存储(相当于物理服务器的硬盘),而网络则主要体现为网卡和其接入的网络,它们组合在一起构成了一台真正可用的云服务器。
衡量一台云服务器的计算力要从计算、存储和网络三个指标来看。
计算:CPU的型号和主频、虚拟CPU的个数,内存的大小等。
存储:块存储的个数、容量、读写吞吐量(BPS,即每秒读写的字节数)、处理读写操作的能力(IOPS,即每秒处理的I/O数)等。
网络:网卡的个数、带宽能力、收发数据包能力(PPS,即每秒收发数据包的数量)等。
1.1.3 弹性计算的业务模式
弹性计算的业务模式本质上是计算力的租赁业务,用户购买一台云服务器后,并不拥有这台云服务器的物理所有权,而只有使用权。
1.1.4 弹性计算的使用方式
用户购买云服务器之后可以当做一台物理服务器使用。用户可以通过SSH、VNC等方式远程登录这台云服务器。
1.1.5 弹性计算的地位
弹性计算是云计算自身的基石。作为最基础的产品,弹性计算可谓是一人之下。万人之上。“一人”指的是底层的物理设施,如数据中心、物理网络、服务器等。而“万人”指的是其他云产品。
1.1.6 弹性计算的演进过程
云服务器最大的有点之一就是很容易将云霞的计算任务搬到云上,快速云化。但对于用户新构建的应用,是否有更适合云上环境的方法来构建和运行呢?云原生可以更好地利用云的各种特点,新的弹性计算产品形态也出现了,其中最重要的就是容器服务和函数计算。
容器服务通过更轻量的操作系统打包和分发方式、更轻巧的运行环境,极大地提升了计算的敏捷性,是的不可更改性(Immutability)这种充分利用云的高校自动化优势的计算范式开始流行起来。在这种计算范式下,用户将软件固话在容器的镜像中,然后使用该镜像快速拉起计算任务,出现问题时丢掉有问题的实例,再用原镜像重新拉起新的实例。如果要修改软件,则重新制作镜像,保证开发环境和生产环境的高度一致性,结合大量的自动化,让DevOps交付、线上部署和运维效率倍增。
而无服务器计算(Serverless Computing)将云原生推到极致。无服务器计算使得用户可以彻底不再管理和运维底层的计算资源,只需将要运行的软件以待定的打包方式托管给云平台来运行,云平台负责计算力资源的获取、伸缩甚至容灾。
函数计算则把无服务器计算推导了机制。函数计算将用户可以托管的计算任务缩小到一个函数的粒度,使得用户甚至不用关心该函数所需要的运行环境,启动时间以毫秒计算,扩容和缩容对用户透明,费用以调用次数计算。
1.2 弹性计算的价值
1.3 弹性计算的使用场景
1.4 弹性计算的技术架构
1.4.1 工作原理
云服务器通常以虚拟机的方式提供给用户,创建后被称为“实例”。每个实例至少需要一个块存储设备作为系统盘,用来安装操作系统。实例还需要通过虚拟的“弹性网卡"连接到虚拟网络交换机上,从而加入用户的VPC中与外部通信。图1-4描绘了云服务器的基本构成。
云服务器中包括虚拟机、虚拟的“云盘”和虚拟的“弹性网卡”等。虚拟化是云服务器的基础技术,包括计算虚拟化、存储虚拟化和网络虚拟化。虚拟化的基本原理是用软件将物理设备分隔程多个逻辑分片,这些分片提供与物理设备相同的接口和能力,相互不感知,从而实现“虚拟”的设备。这些虚拟设备与物理设备之间是多对一、多对多甚至是一对多的关系。正是依靠虚拟化技术,弹性计算才能将物理资源池化,然后按照用户的需求动态地虚拟出大小不一的设备,灵活地提供给用户使用。
计算虚拟化技术的核心部件被称为虚拟机管理器(Hypervisor),它实现了对物理服务器的CPU、内存等资源的分片,即把这些资源切分成多份,并将每一份模拟成标准的CPU、内存等设备,变成一台虚拟服务器,即虚拟机,如图1-5所示。Hypervisor还可以控制每台虚拟机能够使用的物理资源的性能容量,例如CPU时钟周期、内存大小等,从而实现虚拟机之间的性能隔离。
存储虚拟化采用的是计算和存储分离的架构,如图1-6所示,用池化的存储服务器提供虚拟的云盘,而计算服务器上的虚拟机通过网络来访问这些云盘。存储虚拟化首先利用软件把多个存储服务器上的存储介质(例如SATA硬盘或SSD盘)联合起来,形成一个巨大的存储资源池;然后把每个云盘需要存储的数据切分成一个个小块,并按照一定的映射规则分散存储到资源池的存储介质中,提升访问性能;最后将每个小块冗余存储在多个独立的物理介质中,实现极高的可靠性。
网络虚拟化一般采用SDN(Sofaware Defined Network,软件定义网络)的方式实现,解决运输局中心网络支持多租户同时使用的问题。用户可以再云上创建VPC,相当于传统的自建数据中心网络,但其中的网卡、交换机、路由器等网络设备变成了逻辑设备,一般通过软件技术来实现。不同的VPC之间是完全隔离的,除非经过特殊的互联授权,否则无法互相访问。一个VPC可以包含一台或多台虚拟网络交换机,每台虚拟网络交换机对应一个网络地址段资源,这些交换机之间通过路由器实现互联互通。而云服务器的网卡在创建时需要指定链接到某台虚拟交换机上,从中分配相应的地址资源,这样该云服务器就可以与同一个VPC中的其他云服务器进行通信了。网络虚拟化的多租户隔离逻辑可以通过网络的覆盖(Overlay)技术实现,就像物理网络中构建一个个互相隔离的隧道:虚拟机使用虚拟网卡发出的数据包会被重新封装并加上虚拟网络的信息,然后根据虚拟网络的拓扑发送到目标地址服务器上;目标物理服务器在解包后,根据其鞋带的虚拟网络信息转发给相应的虚拟机。
1.4.2 总体架构
计算、存储和网络的虚拟化技术只是弹性计算整体技术栈的冰山一角。下面从一台云服务器的创建过程探讨一下弹性计算背后的技术。如图1-7所示。
1.请求创建实例:用户创建实例的请求会被OpenAPI层 接收。
2.分配服务器:该请求被传递给管控系统。管控系统相当于弹性计算的神经系统,需要执行大量的业务逻辑,比如售卖逻辑、约束校验、库存检查等;并在计算服务器的资源池中挑选一台合适的服务器来“安顿”新的虚拟机实例,这个决策是由一个高度复杂的调度子系统来完成。
3.创建实例:管控系统正式发起新实例的创建,将命令发送给计算虚拟化、存储虚拟化和网络虚拟化的管控子系统。
4.资源虚拟化:网络资源和云盘创建就绪后,被选中的服务器上的Hypervisor创建虚拟机,挂载云盘,同时创建一张弹性网卡将该虚拟机接入指定的VPC中。至此,这台云服务器实例就创建好了。
创建只是虚拟机生命周期中的一小步,之后的运行、重启、迁移、变配、运维等数十种操作,无不依赖弹性计算背后所集成的大量技术。图1-8描绘了弹性计算的整体技术架构。下面以控制面和数据面两个切面展开介绍,引出其中的关键技术。
1.4.3 控制面
弹性计算的控制面管理着每个实例的生命周期,它暴露给用户的接触面通常包含Open API及基于API构建的Web控制台和CLI命令行工具,除简单的管控操作外,还支持实例的迁移、部署、运维和伸缩等。
在用户可见的管理界面和工具的背后,是弹性计算的核心管控技术,实现了实例生命周期管理、资源调度、库存闭环和主动运维等,对弹性计算的性能提升至关重要,特别是弹性、成本和稳定性。
弹性计算在控制面上的关键技术
1)弹性伸缩技术。弹性伸缩技术允许用户配置触发的伸或缩的规则,例如基于时间的规则、基于性能指标的规则等。预测式伸缩技术是利用机器学习来发现用户应用的负载变化规律、预测未来走势,并根据这个走势提前调整计算资源的规模,从而将弹性伸缩技术从自动化演进到智能化。
2)库存闭环技术。
3)资源调度技术。
4)异常检测和预测技术。
5)热迁移技术。热迁移技术能把一台运行中的实例或云盘从一个物理位置转移到另一个物理位置,同时不影响其运行,是支持库存优化、故障规避、轮转升级等场景的关键技术。
1.4.4 数据面
弹性计算的数据面直接支撑着用户应用的运行,它暴露给用户的标准接口是x86服务器及其上运行的客户机操作系统(Guest OS)。专用宿主机给了用户独占物理服务器来运行虚拟机或实例的选项。实现折现产品形态的核心技术是虚拟化技术;随着云原生应用的蓬勃发展,更轻量的安全沙箱技术也正变得日益重要。
下面列举弹性计算在数据面上的关键技术。
1.4.5 物理设施层
弹性计算依赖大量物理设施和硬件,包括物理网络、数据中心、芯片和服务器等,每一个领域都涉及众多关键技术。
共有 0 条评论