《云计算:企业实施手册》中将云计算的基础设施即服务划分为3个类别:服务器服务、存储服务和网络连接服务。 服务提供商可能会提供虚拟服务器实例,在这些实例上,用户可以安装和运行一个自定义的映像。持久性的存储是一种单独的服务,客户可以单独购买。最后,还会有一些用于扩展网络连接的产品。
亚马逊是基础设施即服务的事实标准。虽然他们并没有自己独特的产品,但几乎所有的基础设施即服务业务要么被认为是亚马逊Web服务的补充,要么就被看做其竞争对手。因此,本书中对基础设施即服务的架构分析采用了亚马逊的产品结构。
在深入讨论之前,本书希望提请读者注意的是,有一个相当于亚马逊Web服务的开源软件,并且两者在接口上也大致兼容,称为Eucalyptus。Eucalyptus的全称是用于连接应用程序到实际可用系统的弹性效用计算架构(Elastic Utility Computing Architecture for Linking Your Programs To Useful Systems),其可以作为源代码包、远程数据包管理程序以及磁盘映像文件使用。Eucalyptus也是随着Ubuntu一起下载的软件,实际上Ubuntu 9.04版是其默认的云计算工具软件。
3.2.1 服务器服务
服务器实际上代表了随着计算资源一起分配的最小存储空间和输入/输出信道的资源集合。云计算可以被看做是如Savvis、Navisite、Terremark这样的虚拟托管服务提供商的演进。虚拟托管服务提供商提供主机托管服务以及安装在机架上的服务器资源池。其虚拟主机托管能力通常包括提供在专用基础设施上的虚拟资源,并通过控制台进行配置。
服务器外包可以分为3种配置模式:物理资源、虚拟专用资源、共享虚拟资源。物理资源配置模式是指将特定的硬件资源分配给客户,如同上一段提到的例子。虚拟专用服务器提供专用的硬件,但提供了在物理机上的管理程序,因此客户可以运行多个操作系统,并且最大限度地提高了服务器的利用率。共享的虚拟服务器都是以虚拟机池的形式提供给客户。这种情况下,不能明显地区分一个特定的实例运行在某一个物理设备上,也不能区分同一机器上是否还有其他应用程序运行。
除了这些区别,一些关键的区别还包括支持的操作系统类型(通常仅限于Windows和Linux的一些版本)和现成可用的软件包(如应用程序框架)。
有许多服务提供商都能够提供多种组合配置、操作系统和文件包的选择。其中一些最知名提供商如下:
亚马逊属于共享虚拟机的服务提供商,而且可能是最有名的一家。每个虚拟机都基于亚马逊主机映像文件(Amazon Machine Image,AMI)。客户可以使用亚马逊预封装的主机映像文件或者第三方提供的映像文件,也可以自己建立的一个映像文件。这些映像文件在资源配置上各有不同,包括内存、计算单元、本地磁盘大小;在操作系统配置上也不同,包括多个不同的Windows版本和Linux发行版;在安装的应用框架的配置上就更不一样,包括可能安装的Jboss、MySQL和甲骨文数据库系统。
AppNexus提供的是基于戴尔(Dell)计算机和Ipsilon存储的专用虚拟服务器。不同之处在于其提供对服务器位置的高度可见性,同时保证数据中心以及机架位置的透明性。
LayeredTech提供主机托管服务和专用的以及虚拟化的服务器产品。他们雇用底层的操作系统厂家VMware和3Tera Applogic为自己提供虚拟化解决方案,并建立了一套名为Virtuozzo Containers的私有技术。这个技术与通常的管理程序不同。在该方案中,管理程序在提供虚拟机隔离的同时,还能共享底层的操作系统。
使用多个虚拟服务器的挑战在于这些虚拟服务器通常不会维护任何本地存储并可能因为相互调用而丢失自己的状态。但这种方法有其优势所在。毕竟,任何重要的配置信息或其他数据都可以存储在外部。但对于某些特定用途,保持永久的本地存储可能会更好或更容易。所以,一些服务器产品也提供这样的功能。
Rackspace云(以前也被称为Mosso)是另一个非常著名的基础设施即服务的供应商。其提供许多虚拟主机托管选择以及虚拟服务器产品,涵盖了许多Linux发行版本(如Ubuntu、Fedora、CentOS和RedHat的企业版)。同时其拥有一个很大的专用IP地址池,并提供对所有实例的永久存储。
Joyent公司使用了“加速器”这一名词来指代其永久虚拟机产品。他们在OpenSolaris上运行Apache、Nginx、MySQL、PHP、Rubyon Rails和预安装的Java,也具有添加其他软件包的能力。它有一个叫做“自动CPU突发(automatic CPU bursting)”的功能可以提供一个反应性弹性功能。Joyent还提供一个自有管理框架的专用版本,称为CloudControl, 可以用于企业数据中心管理。
GoGrid提供了一个如图3-3所示的专用服务器配置,以及一些预装的映像文件,包括Windows和Linux版本,还有Apache、IIS、MySQL和其他一些应用程序的软件包。GoGrid还免费提供了一个基于硬件的负载平衡机制以优化客户实例的性能。
图3-3 GoGrid的专用服务器
ElasticHosts目前主要瞄准的是英国市场,在伦敦附近建立了2个数据中心。他们不使用较常见的管理程序,而是选择了Linux KVM作为其管理程序的架构。这个公司可能在一些同样采用KVM管理程序的组织中出现。他们还提供了按照连续数值进行单独服务器规格配置的能力,如图3-4所示。
图3-4 弹性主机服务器规格
3.2.2 存储
像存储网络(StorageNetworks)一样,存储服务,自20世纪90年代后期,就已经出现。类似于最初的应用托管服务提供商,开始这类产品不是很赚钱(Ruth,2009年)。但是最近以来,按需服务产品改变了这一局势,并使得存储即服务成为云计算最有前途的领域之一。
这类产品通常提供与位置无关的虚拟化数据存储,这样促进了对通过弹性机制制造无限容量存储的期望,而且高度的自动化水平使得用户能非常容易地使用。最常见的应用程序之一是采用软件即服务模式的在线备份业务,比如Mozy或者SugarSync。存储服务对压缩归档、内容分发、灾难恢复和Web应用程序开发都有用。
这类服务也面临着一些挑战,例如停电、供应商锁定、数据混合和性能约束。不过,存储服务也提供一些好处,它降低了存储基础设施、维护和服务的成本,同时也减少了对工作人员的挑战。与此同时,这些服务提供了更多的灵活性,给客户带来专业化的好处,比如,服务提供商具备合规性、安全性、私密性,并且具备对存储信息进行压缩归档、重复数据删除以及数据分类的先进信息管理技术。
为了满足云计算提出的严格要求,许多存储产品厂商,比如EMC 的Atmos产品线,已经开始提供新的硬件和软件。这些软硬件是专门设计用于地理上分散的内容仓库,具备复制、版本管理、重复数据删除和压缩的功能。这些存储产品厂商为存储服务提供商以及众多企业提供产品,而这些购买者所追求的共性在于私有云中提供的相似的功能。
在研究按需存储的服务时,需要考虑的一些因素包括永久性和可复制选项以及数据访问的速度和延迟。需要注意的是,由于内容分发网络的同步要求,观察到的读出和写入数据的速度可能完全不一样。与此相关的一些影响因素还包括系统的访问协议和机制以及数据结构。
亚马逊提供了2个永久存储的功能:简单存储服务(Simple Storage Service,S3)和弹性块存储(Elastic Block Storage,EBS)。值得注意的是,如上所述,亚马逊的映像文件(AMI)不具有任何的永久存储空间,但本地安装的磁盘空间可以在该实例处于激活状态时,用于日志记录、业绩及中期数据记录。
S3可以通过REST和SOAP的应用程序接口访问。S3提供分布式冗余的文件块,这些都是通过亚马逊的内容分发网络CloudFront分发到跨越欧洲、亚洲和美国的各地完成的。S3可容纳从单个字节到5GB的数据类型,通过亚马逊Web服务认证(Amazon Web Services authentication)提供控制访问的权限。
2010年2月,亚马逊扩展了S3的功能以支持版本服务,于是客户可以恢复意外删除或覆盖的对象。这一功能也适合其自身要求的数据保留和归档功能。
弹性块存储的目的是作为一个高性能的虚拟硬盘。它可以作为一个文件系统被格式化,然后安装在任何EC2实例中。存储空间的大小可以从1GB到1TB。亚马逊还提供了一种机制在S3中存储一个长期持久性弹性块存储快照。
其他的存储服务包括:
Rackspace云:Rackspace云文件类似于S3,通过REST 应用程序接口访问。它为数据容器提供静态内容,这些内容可以通过Limelight内容分发网络复制到超过50个的边缘数据中心中。
GoGrid:GoGrid云存储不容易通过应用程序接口访问。但它支持其他机制的访问,如SCP、FTP、Samba和rsync。
LayeredTech:Dynavol服务支持数据的冗余映像,并支持多种接入机制,包括: HTTP、FTP、SFTP、SSH、scp、rdiff、rdist、rsync和smbfs。
Nirvanix:CloudNAS是一个基于策略的专注于企业需求的产品。它可以作为一个Linux和Windows的虚拟挂载点,支持双重/三重复制与区域规范(比如支持欧盟要求的合规性或因性能要求而进行的分区)。
ParaScale:ParaScale本身不是一个供应商。然而,他们为云存储服务提供商们开发基于云的存储技术,提供先进的基于策略的复制功能,并支持常见的访问机制,包括NFS、WebDAV、FTP和HTTP。
Hadoop:对云文件系统最重要的开放源码来自于基于Apache 的Hadoop系统。Hadoop本身不是服务,而是服务的一个重要组成部分。这一系统是模仿谷歌的MapReduce和谷歌文件系统开发的一个开放源码。
Hadoop分布式文件系统(Hadoop Distributed File System,HDFS)将大文件分割存储在多个网络主机上。Hadoop分布式文件系统通过HDFS的特定块协议(HDFS-specific block protocol)或基于HTTP的浏览器访问通过网络提供对这些数据块进行访问。文件系统中的节点可以互相沟通以重新平衡数据、移动数据备份,并保证大量的复制数据。默认情况下,复制的份数是3,即数据存储在3个节点上:其中2个节点在相同的机架上,而另一个在不同的机架上。
对于更结构化的数据也有不同的云数据库的选择。需要注意的是,虽然大多数的信息是以表格形式存储的,但通常并不是SQL的格式,可能不支持连接(join)、外键(foreign key)、触发器(trigger)和存储过程这些数据库操作。不支持这些功能是因为这些系统都需要更好地处理非结构化数据(数据块)。
以亚马逊简单数据库(Simple DB,SDB)为例,它并不采用schema模式。相反,它定义了“域(domain)”的概念,包括多达256个的属性(attribute)和域值(value)。一个域值可以容纳从1B到1KB的数据。该数据库还支持一些简单的操作,如=、!=、<、>、<=、> =、STARTS-WITH、AND、OR、NOT、INTERSECTION、 UNION。因此,只要在单个域内进行的常见的查询类型都可以执行。
还有其他一些有趣的数据服务如下:
谷歌BigTable:谷歌BigTable是一个快速的超大规模的数据库管理系统(DBMS)。该数据库管理系统设计规模到PB级,并横跨了数百或上千台的机器。每个数据表有多种维度。其中一个维度是时间值,这样可以进行版本控制。这个数据库系统被许多的谷歌应用程序使用着,比如MapReduce。
Hypertable:Hypertable是一个开源的数据库。这个数据库系统是建立在谷歌发布的BigTable设计原理的论文内容基础之上,并由世界领先的中文搜索引擎百度赞助出资。这个数据库系统中运行了分布式的文件系统,比如Apache Hadoop的DFS、GlusterFS或Kosmos File System(KFS)。
Dynamo:Dynamo是亚马逊建立的等效于BigTable的数据库系统。这是一个具有高可用性的键值存储的相关数据库系统,数据存储和复制都建立在散列环(hash ring)算法上。虽然Dynamo不是直接提供给消费者的服务,但它驱动着亚马逊很大一部分的网络服务,包括S3。
Cassandra:Cassandra是Facebook的分布式存储系统。这一存储系统发展的是混合功能类型,其中结合了谷歌BigTable的数据模型和亚马逊Dynamo的方式。
3.2.3 网络连接
如果没有网络连接,云计算的概念将是完全没有意义的。但是,仅仅有网络也是不够的。在网络连接中也有很多不同的能力可以选择。例如,在默认情况下,亚马逊EC2的实例将获得一个动态地址(采用DHCP分配地址)。如果实例需要额外的地址、静态地址或永久的域名,那么实例就需要分别地去请求这些地址或域名。
云服务提供商还可能提供另外两个与网络相关的功能。第一个功能是对网络分段和为这些分段网络提供的桥接机制。第二功能是性能相关的功能,如负载平衡。
许多云服务器提供商允许客户自定义防火墙,例如亚马逊的EC2。通过定义特定的IP地址范围和端口号可以限制流入和流出的数据流量。此外,客户操作系统可进一步申请个人防火墙设置。
AppNexus为每个客户提供一个私有的VLAN。这样不仅提供了静态IP地址,也减少了系统暴露于外部广播流量的威胁,而且也可以区分多租户的不同流量,只需要在访问中使用访问控制列表(Access Control List,ACL)。
Cohesive FT提供一种服务叫做VPN-Cubed。该服务是基于一个开源的SSL-VPN项目OpenVPN。通过设置防火墙服务器,创建进入系统内部的网络连接,为每个企业建立了一个加密通道。在云服务内部也可以建立这样的隧道。这样能够通过提供虚拟IP地址池来维护使用的IP地址,还可以提供如负载平衡、故障恢复和访问控制这样的功能。
2009年,亚马逊推出一种服务,能够增强云之间的连接性并保证连接的安全性。亚马逊虚拟私有云(Amazon Virtual Private Cloud)可以用于企业混合云的建设,它在企业和亚马逊网络服务之间为企业创建了一个安全的虚拟专用网络,并扩展了一些基础设施,包括防火墙、入侵检测和桥接网络间的网络管理。
一旦配置好连接,接下来的任务就是确保网络连接令人满意地运行。云服务的网络性能主要是由2个因素决定。一个是时延,这与跨越的地理位置范围直接相关,因为时延与客户机和服务器间的物理距离成比例关系。另一个是带宽,就是云服务提供商能够从其网络提供商那里获得网络带宽大小。
但是,也可能存在云系统内部的瓶颈问题从而影响了系统的性能。特别是,服务器本身在长时间工作后有可能过载,因此服务器不能以足够快的速度响应服务请求。假设应用程序可以横向扩展到多个服务器,那么解决这一瓶颈问题的办法是平衡分担新发起的请求。这种平衡可以实现在本地层面(内部的数据中心)或全球范围。
许多云服务提供商提供本地负载均衡能力。最简单的方法是使用DNS轮循机制,将多个IP地址添加到DNS中的同一个域名中。负载平衡也可能是基于软件的实现,如Joyent使用的Zeus ZXTM LB。Zeus ZXTM LB提供高性能的SSL和内容压缩、基于内容识别的流量管理规则和灵活的状态检测。另外,许多云服务提供商如AppNexus和GoGrid,使用基于硬件的负载流量,如F5 BIG-IP Local Traffic Managers。
全球负载均衡的重点是减少使用负载过大的服务器,并更多地按照地理位置进行负载分担。这样使得用户连接到最近可用的服务上。这可以通过特殊的设备实现,如BIG-IP Global Traffic Manager。但也可以通过对DNS进行分区,使区域的DNS服务器指向每一个域内的负载均衡器。DNS客户端将依次发送DNS请求并接受第一个响应指令,将客户端指向最近的一个服务器。
3.2.4 整合
设置好网络连接后,下一步是配置应用程序,这样就能够进行数据交换和同步。在这个层面上,不同的基础设施即服务提供商支持的水平也有差异。从理论上讲,他们并不需要进行集成和整合。应用程序应该可以直接交互,或者客户可以安装专用的中间件组件。然而,对基础设施即服务的云服务提供商来说,这是做增值业务的方向,许多提供商也正在进行这方面的服务。
亚马逊提供一种称为简单队列服务(Simple Queue Service,SQS)的业务。正如这个名字本身的字面意思一样,该服务提供了一个无限长的消息队列,其中消息最大可以达到为8 KB。客户可以创建队列和发送消息。任何授权的应用程序都可以接收或删除消息。由于消息可以留在系统中长达4天时间,这就为应用程序之间的同步提供了一个良好的异步通信机制。
如上所述,实现连接同步可以不需要任何基础设施的支持。但是,没有其他的服务提供商能像OpSource一样提供附加的网络服务以供应用程序利用。OpSource Services Bus 提供了一个应用程序接口,允许运行在OpSource On-Demand平台上的应用程序来拓展Web服务,例如商业分析、入职和计费。这一平台能够提供报告和一系列可视化的关键性能指标(key Performance indicator,KPI)数据。这些指标都基于一些基本的数据,如单位指标、应用程序事件、用户登录、应用运行时间、带宽利用率、应用响应时间、监测警报和计费统计。
OpSource连接服务扩展了Services Bus的服务内容,提供了双向交互式的Web服务,从而使得用户能够通过一个统一的Web服务基础设施来消费或者发布各种应用程序。消费基础设施的用户对这样的服务感兴趣,尤其是当他们准备将这些应用作为一个Web服务推向用户,并从此获取利润的时候。
Apache的Hadoop系统也提供了一种更加紧密的协调应用程序交互的框架模式。作业跟踪程序(Job Tracker)和任务跟踪程序(Task Tracker)本来是为了谷歌map/reduce(谷歌的一种并行处理机制)引擎开发的程序,但对数据密集型的分布式应用程序也能普遍地适用。客户端应用程序向作业跟踪程序提交工作任务,作业跟踪程序将这些工作任务分配给可用的任务跟踪程序节点。
使用这一技术的前提是大量的数据通过Hadoop分布式文件系统分布在系统中,文件系统准确地掌握着所有数据的精确位置(节点、机架、数据中心)。作业跟踪程序分配工作时,分配的任务尽可能从物理上靠近数据节点位置,以尽量减少处理时延。
3.2.5 管理
大多数基础设施层的组件最终是通过虚拟化技术供应商的设施进行管理的。根据使用的管理程序不同,管理的方式也不一样。有第三方提供的内部组件方式,如Xen、VMware、Hyper-V和 KVM,也有其他的虚拟化解决方案。
除了内部组件提供的管理方式外,还有可能存在更高层的管理框架,如BMC Patrol、CA Unicenter、IBM的Tivoli产品套件或HP的业务技术优化解决方案(BusinessTechnology Optimization solutions)。对于高度可扩展的私有云解决方案,比如Moab 自适应计算(Adaptive Computing)这样的软件,可以利用惠普和IBM的工具来建立功能齐全的动态计算环境,并自动调整和配置资源以适应业务流程的要求。
对于公有云也有一些服务能用于管理基础设施服务,如Elastra、RightScale和enStratus。这些服务提供对亚马逊EC2以及其他基础设施即服务产品的前端管理:
Elastra:亚马逊给予Elastra部分资金支持。但除了支持亚马逊Web服务以外,Elastra还支持基于VMware的内部和混合部署。其建模工具允许用户自定义主机性能指标集,如指明CPU架构、速度、内核数量、内存和网络接口,并允许用户为定义的主机集分配资源,并在这些主机之间建立连接器。一旦模型建立,该工具会生成端到端的部署计划,自动在内部、外部和虚拟环境中进行部署。
RightScale:RightScale支持亚马逊Web服务、Eucalyptus、Flexiscale、GoGrid和Rackspace云系统。它提供基于云的服务器模板,并随送打包在一起的启动和运行脚本。这些模板有助于服务的自动部署并在不同服务提供者之间提供可移植性,因为这些服务器能进行独立于基础设施的功能操作,如获得IP地址、访问存储的数据和提交监测数据。
RightScale还提供了通过输入参数对服务器进行分组的方式,比如根据代码库和数据库进行分组,因此可以将这些服务器进行集合化管理和部署。在对一个大规模系统实施系统性的改变时,这一机制就具有特殊的优势。
enStratus:enStratus能够提供一个控制台实时显示亚马逊和Rackspace公司的云基础设施的细节。它包括了预留IP地址机制,并能以可视化的方式通过文件目录系统显示亚马逊EC2上的文件。它的群集管理器还可以定义设备之间的依存关系,如服务器、负载平衡器和数据库之间的依存关系,以及为应用程序定义自愈策略。
CohesiveFT提供了一个弹性服务器管理系统。这是一个集中式的基于网页的控制台,其本身也可以运行在一个云计算系统中。这一管理器可以用来将应用协议栈封装到虚拟机映像中。客户可以自定义不依赖于目标系统的应用程序和配置/设置软件包。管理系统将这些组件的映像进行组合后,根据选择的目标云系统所采用的虚拟化技术,为其创建一个特定的映像文件。由于用户的配置集可以在整个CohesiveFT社区共享,这个小规模的系统正在不断增长,并促进更合理地利用各种用户自定义的组件。
3.2.6 支付和结算
对基于效用的服务进行有效的计费依赖于2个功能:细粒度的计量和一个简单的、值得信赖的支付系统。可以说,在这些领域的领导者一直是电信公司,尤其是移动运营商。因此,毫不奇怪地看到云产品在大型国际通信公司涌现,如英国电信、德国电信、日本NTT、新加坡电信和Orange。
然而,主要基于信用卡结算的电子商务在最近几年内也获得了蓬勃的发展。比如PayPal这样的公司,他们为小规模的还不具备一定公信度的企业充当中介。
与此同时,许多云服务提供商已经开发了自己的仪表和计费系统。这些可以用于他们自己的业务,而且也可能以一定的费用提供给他们的客户和合作伙伴使用。
要理解这种多重模式的商业模型,重要的是要记住,尽管基础设施服务和软件应用服务之间存在着重要的不同之处,但这并不意味着它们是完全无关的。基础设施即服务最常见的用途之一就是作为一个SaaS的架构基础。除了提供原始计算和存储能力,一些基础设施即服务提供商也协助SaaS的支付和结算服务,这样作为基础设施即服务客户的SaaS服务提供商就可以利用这些支付和结算服务来获得实际收益。
亚马逊灵活支付服务(Flexible Payments Service,FPS)就是这样一种服务,这是亚马逊为开发者创建的。这一服务利用了亚马逊先进的零售计费系统。如果客户直接从亚马逊预定业务,客户可以使用亚马逊的统一身份标识、运输方式和支付信息。
计量和计费服务包括对系统情况的动态跟踪和报告,以及提供一系列可选的支付方式,包括一次性付款、周期费用、延迟付款和小额聚合支付。这些都可以通过应用程序接口进行设置和更改。
对于那些使用亚马逊以外其他云平台的SaaS服务提供商而言,OpSource提供了一个客户生命周期管理(Customer Lifecycle Management,CLM)的解决方案,它能够自动为客户开始服务,然后通过检测用户使用情况和对最终用户提供计费单据来管理客户购买的情况。
-------------------------------
本文节选自《云计算:企业实施手册》第3章“基础设施即服务”,了解更多请访问http://product.china-pub.com/198434