Google 也许是业界最早使用和发起云计算的厂家之一。因商业保密,其大部分技术实现内容并未被外界了解。从其公开发表的文献可了解到其关于数据中心(文献[4])、搜索引擎网络设计(文献[5])、分布式文件系统(文献[6])及并行处理模式MapReduce(文献[7])的概要设计。
图2-5所示的是Google云计算平台架构,其基础平台建立在MapReduce结构之上,利用了类似Hadoop的资源调度管理方法。不过Google自己设计了文件系统(GFS chunkserver)、数据库系统(BigTable)以及其他相关系统。以下简单说明Google数据中心对于搜索查询的调度算法流程。
图2-5 Google 云计算平台架构
①当用户输入查询内容时(如通过www.google.com),用户的浏览器首先通过一个域名系统(DNS)查找到一个特定的IP地址。为了提供足够的查询处理能力,Google的服务数据中心设计为包括多个集群,分布在世界各地,每一组有大约几千台计算机。地理位置的分布设置同时提高了数据中心对灾难的免疫能力(如由地震引起的故障和大规模停电等)。
②一个基于DNS的负载平衡系统将在数据中心集群中选择与用户在地理上接近的物理集群。负载平衡系统根据用户需求最大限度地减少往返时间,同时也考虑到集群的能力(配置和负载等)。
③然后Google核心搜索算法启动,找到与用户查询内容相匹配和高度关联的内容,并将查询结果反馈到一个HTML页面以响应用户。
注意:Google数据中心的主要业务是搜索,因而考虑的性能指标是响应速度和查询质量(准确程度)等。
Amazon目前被认为推广云计算应用最为成功的厂家之一。它成功地推出了EC2(弹性云计算) [8] 、SQS(简单消息存储服务)、S3(简单存储服务)、SimpleDB(简单数据库)等近10种云服务。
图2-6展示了Amazon云计算平台体系结构,其中EBS(Elastic Block Service)提供块接口及存储虚拟机镜像等。Amazon云计算资源实例分类见表2-1。以其虚拟计算资源服务为例,说明其资源调度算法流程。
图2-6 Amazon云计算平台体系架构
①首先,Amazon将其能提供的计算资源分为8类,并说明其资源配置及每小时费用;其调度策略是综合考虑成本和性能,其中性能方面主要是由用户选择预先配置好的虚拟服务器。
②用户依据自己的业务需求提出租用申请(说明使用的资源种类、数量和时间),在线提交。
③数据中心(业界分析Amazon拥有分布于世界各大洲的数据中心)调度算法依据用户特征(地理位置等信息)及使用的资源种类、数量和时间等信息找到适合的数据中心的资源,并将资源信息反馈给用户,以便其使用。
表2-1 Amazon 云计算资源实例分类
注:ECU(EC2 Compute Unit)是EC2的计算单位,一个EC2的计算单位(ECU)提供了相当于2007年的1.0~1.2GHz Opteron或Xeon处理器的CPU能力。
不少研究机构对Amazon云计算服务进行了性能测试。文献[9]初步测试了Amazon EC2、S3、SQS的基本性能。关于将Amazon EC2应用于科学计算的各项主要性能测试指标在文献[10]中进行了详细分析。图2-7显示了在EC2上100MB GET操作的平均每天吞吐量。
图2-7 在EC2上100MB GET 操作的平均每天吞吐量 [9]
IBM云计算调度是建立在虚拟计算资源之上的。如图2-8所示,IBM云计算基础平台建立在开源Xen虚拟Linux平台和Hadoop集群平台之上,采用了IBM Tivoli 网络资源监控和WebSphere网络服务。由此可见,其核心的调度是建立在Hadoop MapReduce 框架之上的(图2-9)。
图2-8 IBM云计算体系架构
图2-9 IBM云计算平台调度管理显示所有用户合同状态示例 [11]
IBM云计算平台建立在与NCSU合作多年的虚拟计算实验项目 [12,13] 经验基础之上。以下针对虚拟计算介绍其资源调度管理算法流程。
①首先,用户通过IBM虚拟计算门户网站在线提交申请表(描述并选择所需资源的硬件平台,包括CPU、内存、操作系统等,同时说明使用资源的开始时间、结束时间等信息)。用户可提交预订或立即使用申请。
②据中心管理系统接到通知后,依据目前的数据中心资源信息和使用情况(空闲等)批准主要调度原则,修改和/或拒绝该申请,并形成合同;云管理员也可以根据合同规定的结束日期,准备未来日期的调度资源;“云”中的预订系统提供了一个检查和均衡的系统,所以,对于不存在或者已预订用于指定时间段的资源,将不会批准新的预订。“云”通常具有大量服务器,随着云资源数量的增加,监控就显得至关重要。“云”具有监控单个服务器和服务器群的能力,通过IBM Tivoli Monitoring来执行;通过Tivoli Enterprise门户网站可以查看每个受监控资源的详细信息,并且可以将这些信息与云门户网站充分进行集成。
③一旦用户申请被批准,系统就会启动一个过程,其中涉及Web Service、Tivoli Provisioning Manager,可选的IBM Tivoli Security Compliance Manager、BPEL和IBM Enterprise Workload Manager,以及Remote Deployment Manger/Cluster Systems Managerment/Network Installation Manager,以构建服务器。该过程完全自动化,只需大约1小时即可完成。
④获得资源的用户可以在使用资源的同时,提前提出延长使用资源时间的申请,当然用户也可以提前结束使用。
⑤ IBM还提供了更改用户合同(包括添加/删除资源——服务器、软件、内存等)的功能。
HP很早就开始了数据中心的研究工作。HP数据中心建设及整合解决方案架构如图2-10所示。文献[16]系统介绍了HP数据中心成本模型的详尽方案和技术手段,成为成本模型设计的重要参考。下面的公式描述了其数据中心基于成本考虑的各要素:建筑空间占用成本、供电成本、制冷成本、维护成本等。
总成本=空间成本+能耗成本+空调制冷成本+运维成本
图2-10 HP 数据中心建设及整合解决方案架构
图2-11展示了HP数据中心自动化管理方案。
图2-11 HP数据中心自动化管理方案
VMware已成为服务器虚拟化的主要提供商 [19,20] 。虚拟化是提高资源利用效率的有效手段,被众多云计算提供商采用。其数据中心虚拟机的动态分配管理主要使用VMware Infrastructure 3(VMware公司的一个虚拟化管理软件)实现,主要特点体现在虚拟共享、容灾备份等方面。将虚拟化优势扩展到远程和分支机构,从而在单一控制点中即可实现以下目标:更加灵活地远程管理每个站点的虚拟机,在中央数据中心托管可远程访问的虚拟机,同时使用分布式虚拟机和集中式虚拟机。图2-12提供了VMware 分布式服务器虚拟化与集中式服务器虚拟化的对比。目前VMware公司数据中心的工作还侧重于资源虚拟化、容灾备份等方面,对于资源的动态调度管理方面考虑较少,主要考虑通过虚拟化提高资源利用率、动态迁移虚拟机及容灾备份等。
VMware通过建立远端服务器群,可实现双中心互备的虚拟化IT架构,在运营端和远端之间启用vReplicator服务,可以实现运营端虚拟机应用实时复制到远端ESX主机存储,达到异地容灾的目的(图2-13)。vReplicator针对虚拟机操作,实时监控虚拟机磁盘文件的数据变化,在完整磁盘数据复制操作完成后,每隔5分钟,自动将两地磁盘数据间的差异数据复制到容灾端;当运营端服务器出现服务中断时,vReplicator自动将容灾端处于待机状态的备份虚拟机进行Failover(故障转移)操作,备份机数据及设置与源虚拟机完全相同,因此启动后可以即刻接管应用,重新开始对最终用户提供服务。
图2-12 VMware分布式服务器虚拟化与集中式服务器虚拟化的对比
图2-13 VMware虚拟化监控管理方案
以上厂家提供的方案多建立在私有云上,不开源。开源的适用于海量信息处理的Hadoop MapReduce [23,24] 和小型云计算平台Eucalyptus [25,26] 是两类值得了解的解决方案。实际上前面介绍的很多厂家包括Google、IBM等都在基础架构上采用了MapReduce设计思想。文献[24]详细介绍了Hadoop的设计和实现。Hadoop使用的MapReduce处理模式如图2-14所示。
图2-14 Hadoop使用的MapReduce处理模式 [24]
Google、Yahoo、IBM等公司的云平台基本都采用了MapReduce模式:用户的海量数据(Inputs)经过初步的物理分割后分配相应的键值对(key/value),由指定的Map阶段处理输入键值对并产生一系列的中间键值对,然后使用Reduce阶段合并具有相同key的中间键值对的部分。MapReduce模式提供了一个简单但强大的接口,通过这个接口,可以让大尺度(海量)的计算自动地并发和分布执行,这使得程序和计算可以简单地分布到大规模集群上运行处理。MapReduce系统的调度管理系统通过周期性的检查和重新分配失败任务节点的工作到其他节点,来提高可靠性并减少执行瓶颈。
Hadoop的任务调度是一个主从式的模式,有一个称为JobTracker的主节点控制整个系统的作业调度;其余节点为TaskTracker,它们在空闲时向JobTracker请求分配任务。Hadoop主节点采用先来先服务(FIFO)队列调度服务算法。所有的作业按照用户提交时间顺序执行,主节点使用一个JobQueue(作业队列)维护用户提交的作业,所有的作业都没有设置优先级别。工作节点失效时的办法:主控制程序会定时ping各个工作节点,如果某工作节点没有在指定时间内返回相关信息,主控制程序认定该工作节点失效,所有这个节点已完成的Map任务及正在处理的Map任务和Reduce任务都将被重置成初始空闲状态,其他任何工作节点都可以重新执行该任务。
Hadoop 从节点采用贪婪算法:默认的调度算法总是试图找到距离客户数据最近的从节点以便大的数据量不必通过网络传输;如果从节点忙的话,任务可以被分配到其他可用节点。
对于小型云计算平台Eucalyptus的资源调度分配管理,目前业界是通过监测负载平衡器日志和检测响应时间来进行的(图2-15)。资源调度管理算法读取实时的负载平衡器日志和计算每个虚拟机每60秒在集群中的平均响应时间。当它检测到有任何虚拟机的平均响应时间超过需要的反应时间时,它将开启一个或多个新的虚拟机实例来满足需求;相应地,也可在系统负载较低时减少虚拟机实例。
图2-15 Eucalyptus体系架构和交互 [26]