云计算概论:基础、技术、商务、应用(第二版)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.2 基础设施即服务(IaaS)

基础设施层使得经过虚拟化后的计算资源、存储资源和网络资源能够以基础设施即服务(IaaS)的方式通过网络被用户使用和管理。虽然不同云提供商的基础设施层在其所提供的服务上有所差异,但是作为提供底层基础资源的服务,该层一般都具有以下基本功能中国绿色数据中心,www.jifang360.com/news/2013227/n107645521.html

2.2.1 资源抽象

当要搭建基础设施层的时候,首先面对的是大规模的硬件资源,比如通过网络相互连接的服务器和存储设备等。为了能够实现高层次的资源管理逻辑,必须对资源进行抽象,也就是对硬件资源进行虚拟化。

虚拟化的过程一方面需要屏蔽掉硬件产品上的差异,另一方面需要对每一种硬件资源提供统一的管理逻辑和接口。值得注意的是,根据基础设施层实现的逻辑不同,同一类型资源的不同虚拟化方法可能存在着非常大的差异。目前,存储虚拟化方面的主流技术有IBM SAN Volume Controller、IBM Tivoli Storage Manager(TSM)、Google File System、Hadoop Distributed File System和VM Ware Virtual Machine File System等。

另外,根据业务逻辑和基础设施层服务接口的需要,基础设施层资源的抽象往往是具有多个层次的。例如,目前业界提出的资源模型中就出现了虚拟机(Virtual Machine)、集群(Cluster)、虚拟数据中心(Virtual Data Center)和云(Cloud)等若干层次分明的资源抽象。资源抽象为上层资源管理逻辑定义了操作的对象和粒度,是构建基础设施层的基础。如何对不同品牌和型号的物理资源进行抽象,以一个全局统一的资源池的方式进行管理并呈现给客户,是基础设施层必须解决的一个核心问题。

2.2.2 资源监控

资源监控是负载管理的前提,是保证基础设施层高效率工作的一个关键任务。基础设施层对不同类型的资源监控方法是不同的。对于CPU,通常监控的是CPU的使用率。对于内存和存储,除了监控使用率,还会根据需要监控读写操作。对于网络,则需要对网络实时的输入、输出及路由状态进行监控。

基础设施层首先需要根据资源的抽象模型建立一个资源监控模型,用来描述资源监控的内容及其属性。例如Amazon公司的Cloud watch是一个提供给用户来监控Amazon EC2实例并负责负载均衡的Web服务,该服务定义了一组监控模型,使得用户可以基于模型使用监控工具对ECZ实例进行实时监测,并在此基础上进行负载均衡决策。同时,资源监控还具有不同的粒度和抽象层次。典型的资源监控是对某个具体的解决方案整体进行监控。一个解决方案往往由多个虚拟资源组成,整体监控结果是对解决方案各个部分监控结果的整合。通过对结果进行分析,用户可以更加直观地监控到资源的使用情况及其对性能的影响,从而采取必要的操作对解决方案进行调整。

2.2.3 负载管理

在基础设施层这样大规模的资源集群环境中,任何时刻所有节点的负载都不是均匀的,如图2-3(a)所示。

图2-3 基础设施负载管理示意图

如果节点的资源利用率合理,即使它们的负载在一定程度上不均匀也不会导致严重的问题。可是,当太多节点资源利用率过低或者节点之间负载差异过大时,就会造成一系列突出的问题。如果太多节点负载较低,会造成资源上的浪费,就需要基础设施层提供自动化的负载平衡机制将负载进行合并,提高资源使用率并且关闭负载整合后闲置的资源;如果资源利用率差异过大,则会造成有些节点的负载过高,上层服务的性能受到影响,而另外一些节点的负载太低,资源没能充分利用,这时就需要基础设施层的自动化负载平衡机制将负载进行转移,即从负载过高节点转移到负载过低节点,从而使得所有的资源在整体负载和整体利用率上面趋于平衡,如图2-3(b)所示。

2.2.4 数据管理

在云计算环境中,现实中软件系统经常处理的数据分为很多不同的种类,如结构化的XML数据、非结构化的二进制数据及关系型的数据库数据等。不同的基础设施层所提供的功能不同,会使得数据管理的实现有着非常大的差异。由于基础设施层由数据中心中大规模的服务器集群所组成,甚至由若干不同数据中心的服务器集群组成,因此数据的完整性、可靠性和可管理性是对基础设施层数据管理的基本要求。

具体的要求体现在:完整性要求关系型数据的状态在任何时间都是确定的,并且可以通过操作使得数据在正常和异常的情况下都能够恢复到一致的状态,即要求在任何时候数据都能够被正确地读取并且在写操作上进行适当同步;可靠性要求将数据的损坏和丢失的概率降到最低,即需要对数据进行冗余备份;可管理性要求数据能够被管理员及上层服务提供者以一种粗粒度和逻辑简单的方式管理,即要求基础设施层内部在数据管理上有充分、可靠的自动化管理流程。对于具体云的基础设施层,还有其他一些数据管理方面的要求,比如在数据读取性能上的要求或者数据处理规模的要求,以及如何存储云计算环境中海量的数据等。

2.2.5 资源部署

资源部署指的是通过自动化部署流程将资源交付给上层应用的过程。在应用程序环境构建初期,当所有虚拟化的硬件资源环境都已经准备就绪时,就需要进行初始化过程的资源部署。另外,在应用运行过程中,往往会进行二次甚至多次资源部署,从而满足上层服务对于基础设施层中资源的需求,也就是运行过程中的动态部署。动态部署有多种应用场景,一个典型的应用场景就是实现基础设施层的动态可伸缩性,即云的应用可以在极短的时间内根据具体用户需求和服务状况的变化而调整。当用户服务的工作负载过高时,用户可以非常容易地将自己的服务实例从数个扩展到数千个,并自动获得所需要的资源,通常这种伸缩操作不但要在极短的时间内完成,还要保证操作复杂度不会随着规模的增加而增大。另外一个典型应用场景是故障恢复和硬件维护。在云计算这样由成千上万个服务器组成的大规模分布式系统中,硬件出现故障在所难免,在硬件维护时也需要将应用暂时移走,基础设施层需要能够复制该服务器的数据和运行环境并通过动态资源部署在另外一个节点上建立起相同的环境,从而保证服务从故障中快速恢复。

资源部署的方法也会随构建基础设施层所采用技术的不同而有着巨大的差异。使用服务器虚拟化技术构建的基础设施层和未使用这些技术的传统物理环境有很大的差别,前者的资源部署更多是虚拟机的部署和配置过程,而后者的资源部署则涉及了从操作系统到上层应用整个软件堆栈的自动化部署和配置。相比之下,采用虚拟化技术的基础设施层资源部署更容易实现。

2.2.6 安全管理

安全管理的目标是保证基础设施资源被合法地访问和使用。在个人电脑上,为了防止恶意程序通过网络访问计算机中的数据或者破坏计算机,一般都会安装防火墙来阻止潜在的威胁。数据中心也设有专用防火墙,甚至会通过规划出隔离区来防止恶意程序入侵。云计算需要能够提供可靠的安全防护机制来保证云中的数据是安全的,并提供安全审查机制保证对云数据的操作都是经过授权的并且是可被追踪的。云是一个更加开放的环境,用户的程序可以被更容易地放在云中执行,这就意味着恶意代码甚至病毒程序都可以从云内部破坏其他正常的程序。由于程序在运行和使用资源的方式上都和传统的程序有着较大区别,因此如何在云计算环境里更好地控制代码的行为或者识别恶意代码和病毒代码就成为管理员面临的新挑战。同时,在云计算环境中,数据都存储在云中,如何通过安全策略阻止云的管理人员泄露数据也是一个需要着重考虑的问题。

2.2.7 计费管理

云计算倡导按量计费的计费模式。通过监控上层的使用情况,可以计算出在某个时间段内应用所消耗的存储、网络、内存等资源,并根据这些计算结果向用户收费。对于一个需要传输海量数据的任务,通过网络传输可能还不如将数据存储在移动存储设备中,再由快递公司送到目的地更有效。因为大规模数据传输一方面占用大量时间;另一方面消耗大量网络带宽,数据传输费用相当可观。可见,在具体实施的时候,云计算提供商可以采用一些适当的替代方式来保证用户业务的顺利完成,同时降低用户需要支付的费用。