1.6 基础设施即服务供应商
公共基础设施即服务供应商通常提供含有一个或多个CPU的虚拟服务器,运行的操作系统有多种选择并可定制软件堆栈。此外,往往还提供存储空间和通信设施。
1.6.1 特点
尽管它们都有一些共同点,但仍可通过一些特殊功能(如当迁移到云时,影响用户应用的成本效益的功能)区分这些IaaS产品。最相关的特点有:①数据中心的地理分布;②各种用户接口和访问系统的API;③专门的组件和援助特定应用(例如,负载均衡器、防火墙)的服务;④虚拟化平台和操作系统的选择;⑤不同的计费方式和周期(例 如,预付费与后付费、每小时与每月)。
地理分布。为了提高可用性和响应性,全球服务供应商通常会建立几个分布在世界各地的数据中心。例如,AmazonWeb服务(Amazon Web Services,AWS)展现了它的EC2服务的“可用性区域”(availability zone)和“地区”(region)的概念。可用性区域是“绝缘故障设计在其他可用性地区,并在同一地区提供廉价、低延迟的网络连接的其他可用性区域的不同位置”。反过来,地区是“地理上分散在不同的地理区域或国家[70]”。
用户界面和服务器访问。在理想情况下,公共IaaS供应商必须提供多种接入云的手段,从而迎合各种用户及其喜好。不同类型的用户界面(UI)提供不同层次的抽象概念,最常见的是GUI、CLI和Web服务(WS)API。
GUI是最终用户的首选。它需要启动、自定义和监控几个虚拟服务器,该过程不必重复多次。另一方面,CLI提供了更多的灵活性以及通过脚本自动执行重复任务(例如,定期启动和关闭一些虚拟服务器)的可能性。WS API使用标准的HTTP请求以编程方式访问云,从而使复杂的服务构建在IaaS云上。
提前预订的能力。提前预订允许用户请求IaaS供应商在未来特定时间内的后备资源,进而确保当时可以使用云资源。然而,大多数云只支持尽力而为型请求,也就是说,用户的请求是服务器资源[54]。
Amazon预留实例(Reserved Instance)是提前预订能力的一种形式,允许用户预先支付固定数额的钱,以保证资源在商定的期间内随时可用,然后当资源使用时再支付每小时的贴现率。然而,它只提供1~3年的时间。因此,用户不能更精细地表达其保留粒度,如几小时或几天。
自动缩放和负载均衡。正如本章提到的,富有弹性是云计算模式的主要特点。应用经常需要扩大和缩减规模以满足不同的负载条件。自动缩放是IaaS云非常可取的一项功能。当用户希望扩大和缩减他们的应用规模时,自动缩放允许用户根据应用的特定指标设置条件,如每秒交易、并发用户数量、请求延迟等。
虚拟服务器的数量通过自动缩放增加时,必须在可用的服务器之间自动分配收到的流量(incoming traffic)。这项活动使应用及时应对流量的增加,同时还实现了更大的容错。
服务水平协议。IaaS供应商提供服务水平协议表达他们对某些QoS交付的承诺,为客户提供保修。SLA通常包括可用性和性能的保证。此外,这些指标必须由各方商定。同时对违反这些期望指标的供应商必须进行处罚。
大多数IaaS供应商专注于可用性保证的SLA条款,指定系统在某一时期的最低时间百分比内是可用的。例如,Amazon EC2指出“如果客户每年的正常运行时间百分比服务年低于99.95%,即客户有资格获得服务信用等于10%的法案”。
虚拟化管理程序与操作系统的选择。传统上,大量定制了IaaS的产品以开放源码的Xen部署为基础。IaaS供应商需要具备在Linux、网络、虚拟化、计量、资源管理和许多其他低层次方面的专业知识,成功地部署和维护它们的云计算产品。最近,已经出现了一个交钥匙的IaaS平台,如VMWare vCloud和Citrix云中心(Citrix Cloud Center,C3),这降低了IaaS竞争对手的门槛,导致IaaS市场快速扩张。
1.6.2 案例研究
本节描述了最流行的公共IaaS云的主要特点。本书仅详述各自最突出的特点。IaaS产品详细的直观功能比较参见表1.2。
Amazon Web Services。Amazon WS(AWS)团队是云计算市场的主要参与者之一。AWS在2006年率先引进了IaaS云。它提供了各种云服务,主要有S3(存储)、EC2(虚拟服务器)、Cloudfront(内容交付)、Cloudfront Streaming(视频流)、SimpleDB(结构化数据存储)、RDS(关系数据库)、SQS ( 可靠的消息)和Elastic MapReduce(数据处理)。
弹性云计算(Elastic Compute Cloud,EC2)提供了基于Xen的虚拟服务器(实例),可以从Amazon机器映像(AMIs)中实例化。这些实例使用的规模、操作系统、体系结构和价格均不相同。Amazon计算单元(compute unit)是衡量CPU能力的实例。尽管固定为每个实例,实例类型在1(小实例)~20(高CPU实例)变化。每个实例都提供了一定数目的非持久性磁盘空间,一个持久磁盘服务(弹性块存储)允许附加到实例上的虚拟磁盘空间高达1TB。
结合CloudWatch、自动缩放和弹性负载均衡功能,可以实现其弹性。这允许实例数根据可定制的规则自动扩大和缩减规模,并在可用的情况下分发流量。默认情况下并未提供固定IP地址(弹性IP),但付额外费用后也可获得。
总之,Amazon EC2 提供了如下功能:在美国(东部和西部)和欧洲的多个可用数据中心;CLI、Web服务(SOAP和查询)、基于Web的控制台用户界面;主要通过SSH(Linux)和远程桌面(Windows)访问实例;确保1~3年可用的提前预订(又称保留实例)的能力;SLA 99.5%的可用性;按小时收费;Linux和Windows操作系统;自动缩放和负载均衡。
Flexiscale。Flexiscale是一个总部设在英国的为客户提供服务的供应商,其性质与Amazon Web Services类似。但是,它的虚拟服务器具有一些明显的特点,最显著的有默认持久存储、固定IP地址、专用VLAN、更广范围的服务器规模和运行时CPU容量调整(又称CPU突发/垂直缩放)。与云计算类似,这项服务也是按小时收费的。
总之,Flexiscale云供应商提供了如下功能:适用于英国、Web服务(SOAP)、基于Web的用户界面、主要通过SSH(Linux)和远程桌面(Windows)访问虚拟服务器、出现硬件故障时,SLA 100%可确保虚拟机自动恢复、按小时收费、适用于Linux和Windows操作系统、自动缩放(水平/垂直)。
Joyent。Joyent的公共云提供了基于Solaris容器的虚拟化技术的服务器。这些服务器称为加速器,它根据OpenSolaris操作系统的定制版本来部署各种专门的软件协议栈。默认情况下,包括一个基于Web的配置工具和几个预先安装的软件,例如Apache、MySQL、PHP、Ruby on Rails和Java。除了硬件负载均衡器外,还可以用作软件负载均衡加速器。
Joyent虚拟服务器的一个显著特点是CPU核的自动垂直缩放,这意味着一台虚拟服务器可以自动使用物理主机上额外的最大CPU核数。
总之,Joyent云供应商提供了如下功能:在美国的多重地理位置、基于Web的用户界面,通过SSH和基于Web的管理工具访问虚拟服务器、SLA 100%的可用性、按月定价、操作系统级虚拟化Solaris容器、适用于OpenSolaris操作系统、自动缩放(垂直)。
GoGrid。像许多其他的IaaS供应商一样,GoGrid允许其客户在一个固定实例大小范围内使用一个预先做好的Windows和Linux镜像。GoGrid还提供基于应用(例如高容量的Web服务、电子商务和数据库存储)的“增值”堆栈。
它提供了一些显著特点,如“混合托管”功能,结合能自动缩放云服务器基础架构的传统专用主机。在这种方法中,用户可以利用专用主机(这可能是由于其具体性能、安全性或者遵守法律的原因所必需的)的优势及每种计算方式的好处,结合需求作为适当的云基础设施。
作为其核心IaaS产品的一部分,GoGrid还提供免费的硬件负载均衡、自动缩放能力和持久存储。对于大多数其他的IaaS供应商而言,这些功能通常需要额外的费用。
Rackspace的云服务器(Cloud Server)。Rackspace的云服务器是IaaS的解决方案,它提供了在云中固定大小的实例。云服务器提供了一系列基于Linux的预先制作的镜像。用户可以请求不同大小的镜像,其大小是通过内存衡量的,而不是CPU。
与GoGrid一样,云服务器还提供了混合的方法。其中专用服务器和云服务器基础设施可以结合起来以便主机采用这两种风格的最佳方面。云服务器作为其默认产品的一部分,在不增加额外成本情况下提供了固定(静态)IP地址、永久存储、负载均衡(通过一个DNS)功能。