认知计算与深度学习 基于物联网云平台的智能应用 第二章 智慧云与虚拟化技术
摘要 本章介绍了云计算的基础内容:云平台的架构、基础云模型和通用架构设计。我们回顾了虚拟化技术,其中包括超级管理程序创建的虚拟机和Docker容器。之后我们描述了公共云、私有云和混合云等代表性云架构,以及IaaS云(如Amazon EC2/ S3),PaaS云(如Google AppEngine)和SaaS云(如Salesforce的云)的案例研究。最后,我们研究了基于移动云和网格云的混合云服务。本章介绍了iCloud,Savvis等公司在云计算方面的设计和应用经验,还介绍了XEN,Docker引擎,OpenStack,Eucalyptus,vSphere,Cloudlets等技术。
云计算模型和云服务 云计算的概念是从集群、网格和效用计算中演变而来的。集群和网格计算的相同点是并行地使用多台分布于不同位置通过网络相连的计算机,而云计算的特点是利用弹性资源来满足大量用户的需求。由于带宽网络和无线网络的普及、存储成本的下降和互联网计算软件的逐步完善,使用到云计算的场景也在日益增加。 云用户可以在使用高峰期时获取更多的资源并且删除不需要的容量,以达到降低成本的同时优化用户体验度的目的。云服务提供商可以通过复用,虚拟化和动态资源配置等技术来提高系统利用率。云不仅解放了用户,使他们能够专注于应用本身,而且通过把计算任务的执行外包给云提供商,为云提供商提供了无限的商机。
云计算中使用的硬件、软件和网络技术 下表总结了云计算技术中使用的相关硬件、软件和网络技术。目前,这些技术大多已经足够成熟并且可以满足用户的需求。硬件技术中,多核CPU、内存芯片和磁盘阵列的快速发展使得建立一个具有巨大存储空间且具备高处理速度的数据中心成为可能,资源虚拟化技术使得在短时间内完成云平台的部署成为现实,同时也保证一定的错误恢复能力。 SaaS、Web.2.0标准和互联网性能方面的进步都促进了云服务的兴起。当今的云计算被设计用于完成多租户的海量数据任务处理,大规模分布式存储系统的出现也为云数据中心打下了扎实的硬件基础。 云计算中使用的硬件、软件和网络技术 技术 需求和利益 快速平台部署 快速、有效和灵活的云资源部署来给用户提供动态计算环 境 按需分配的虚 拟集群 配置虚拟机的虚拟化集群,以满足用户需求,当负荷量发 生变化时虚拟集群进行重新配置 多租户技术 SaaS将软件分发给大量的用户,用户可以同时使用软件, 当需要的时候实现资源共享 海量数据处理 互联网搜索和网络服务通常需要大量的数据处理,特别是 为了支持个性化的服务 网络规模通信 支持电子商务、远程教育、远程医疗、社交网络、数字化 政府和数字娱乐等 分布式存储 大规模个人纪录的存储和公共档案信息都需要云的分布式 存储 授权和计费服 务 授权管理和计费服务在效用计算方面使所有类型的云服务 都能受益 云计算在租用管理和自动计费技术方面也有飞速的发展。由于私有云主要运行在单个组织内部,所以其具有良好的安全性和可靠性。公共云和私有云之间没有明确的定义边界,所以未来的大多数云平台在本质上属于混合云类型。
公用云、私有云、社区云和混合云 公共云:公共云建立在互联网上,可以被所有付费用户访问。服务提供商是公共云的拥有者。用户可以通过订阅的方式访问公共云。众所周知的公共云包括Google App Engine (GAE), Amazon Web Service (AWS), Microsoft Azure, IBM Blue Cloud, Salesforce Sales Couds等,这些供应商提供可公开访问的远程接口,用户可以调用这些接口来创建和管理系统中的虚拟机实例。 私有云:私有云建立在单个组织拥有的内联网的域内。因此,他们由客户端直接控制与管理。私有云为本地用户提供了一个灵活的基础设施,使用户在管理域内执行相关工作,私有云尽可能多的保留用户定制化的部分。 社区云:这是公共云中一个正在发展的子类。作为一个共用的基础设施,它被许多组织用来分享一些共同的社交信息或商业利益、科学发现等等,社区云通常在多个数据中心之间搭建。近年来,社区云在教育、商业、企业和政府部门领域快速发展,满足大数据应用发展的需要。 公用云、私有云、社区云和混合云 混合云:混合云综合了所有云家族元素的特点。私有云支持混合云模型,通过外部公共云的计算容量补充本地基础设施。例如,RC2为私有云的代表,RC2连接分布在美国、欧洲和亚洲的8个IBM研究中心的计算资源,混合云提供对客户、合作伙伴网络和第三方的访问途径。
云服务平台的多层发展 云架构主要分为三层:基础设施,平台和应用程序,如左图所示。这三个发展层次通过云配置的硬件和软件资源的虚拟化与标准化技术来实现。公共云、私有云和混合云的服务通过互联网和内部网的传给用户。很显然,首先要部署基础设施层来支持IaaS类型的服务。这种基础设施层是构建云平台层支持的PaaS服务的基础。反过来,平台层是实现SaaS应用程序应用层的基础。 基础设施层的由虚拟化计算、存储和网络资源构建。将硬件资源单独作为一层可以为用户提供更灵活的服务。在内部,虚拟化实现了资源的自动配置和基础设施管理过程的优化。应该指出的是,并非所有的云服务都被限制为单独的一层。许多应用程序可以使用混合层中的应用资源,这三层之间存在从下到上的依赖关系。 平台层体现了软件资源集合的通用性与复用性。这一层负责提供给用户独自开发应用程序、操作文本流动、监测执行结果和性能的环境。为了保障用户的使用体验,该平台应该保证系统的可扩展性、可靠性和安全保护性。在某种程度上,虚拟化云平台是云计算基础设施和应用层之间的一个“系统中间件”。 应用层是由使用SaaS应用所需要的软件模块而集成的。这层服务的应用包括日常办公管理工作,如信息检索,文档处理以及日历和认证服务等。提供业务营销和销售,消费者关系管理,金融交易,供应链管理方面等服务的企业也大量使用应用层。 IaaS,PaaS,SaaS云平台的多层架构发展
三种云服务模型 ■基础设施即服务(IaaS):这种模式把用户需要的基础架构,也就是服务器、存储、网络和数据中心等结构结合在一起。用户可以部署和运行在多个特定应用上的客户操作系统的虚拟机,用户并不直接管理或控制底层的云基础设施,但是可以指定什么时候请求和释放所需要的虚拟机与数据。 ■平台即服务(PaaS):这种模式使用户能够将用户构建的应用程序部署到一个虚拟化的云平台中。PaaS包括中间件、数据库、开发工具和某些运行的时间支持比如Web2.0和Java等和各种类型的“应用平台”功能的应用程序。平台包括由特定的编程接口集成的硬件和软件。并且该供应商提供API和软件工具(例如,使用Java,Python,Web2.0,.NET)。用户从管理云基础设施的任务中解脱出来。PaaS为用户提供了一个编程环境来构建和管理云应用。 ■软件即服务(SaaS):这是指发送至数千付费云客户浏览器上的应用软件。SaaS模式适用于业务流程、行业应用、客户关系管理、企业资源规划、人力资源和协作等应用程序。在消费者方面,它不需要用户对服务器或软件许可证的前期投资。在供应商方面,与用户应用的常规主机相比,成本相当低。 典型的IaaS例子有AWS,GoGrid,Rackspace,Eucalyptus,flexscale,RightScale等。 PaaS平台著名的例子是Google AppEngine,Windows Azure,Force.com等。 SaaS最好的例子是Cloudera,Hadoop,salesforce.com,.NETService,Google Docs,Microsoft Dynamic CRM Service,SharePoint service等。 大多数云提供商采用的三种云服务模型
一个通用的云架构 云平台设计目标:可扩展性、虚拟化、高效率和可靠性是云计算平台的四大设计目标。云平台支持Web 2.0应用程序。 虚拟机:多个虚拟机在单个物理机上按需灵活地启动和关闭以满足服务请求。根据服务请求的特定要求,会调用同一物理机资源上的不同分区。此外,多个虚拟机可以在单个物理机上不同的操作系统环境中同时运行应用程序,因为每个虚拟机在相同的物理机器上是各自独立的。 整个逻辑流程大致如下所述:云管理器接收用户请求,找到正确的资源,紧接着调用云资源的配置服务。 云管理软件同时需要物理设备和虚拟设备的支持,共享资源的安全性和数据中心的共享访问也向云平台提出了另一个设计挑战。 云计算系统的一个通用架构,其中物理服务器在资源管理系统的控制下虚拟化为虚拟机实例
其它( 记忆卡,软盘,手机,PDS, 相机,音频游戏等) 支持大数据存储和处理引擎的云平台 2007年全球信息存储容量(以总字节为单位) 大数据存储要求:在2015年,以各种形式存储在地球上的总数据估计有300+EB,年增长率预计为28%。然而,所有资源中可能发送的总数据约是每年1,900+EB。在过去,大多数信息项都以模拟格式表示。 在2002年,数码存储设备开始流行,并迅速取代大多数模拟设备。 左表显示,在2007年只有6%(19EB)的模拟设备和94%(280 EB)的数字设备。模拟数据项目主要存储在音频/视频磁带(94%)中。数字信息在许多不同类型的存储设备中传播。大多数(44.5%)存储在PC/服务器硬盘中包括大型数据中心。接着是DVD和蓝光设备(22.8%)。显然,辅助存储设备在存储光谱中仍然占主导地位。 技术 存储设备 分布 模拟,19EB, 总容量的6% 纸张、电影、录音磁带和乙烯基 6% 模拟音频磁带 94% 数字, 280EB, 总容量的 94% 便携式媒体和闪存 2% 便携硬盘 2.4% CD和迷你盘 6.8% 数字磁带 11.8% DVD和蓝色射线 22.8% PC/服务器,硬盘 44.5% 其它( 记忆卡,软盘,手机,PDS, 相机,音频游戏等) <1%
支持大数据分析的云资源 云平台正朝着大数据应用的方向发展。云计算、物联网传感、数据库和可视化技术是大数据分析必不可少的技术。这些技术在认知服务、商业智能、机器学习、人脸识别、自然语言处理等领域中起着重要的作用。其它大数据管理的关键技术还包括数据挖掘、分布式文件系统、移动网络和云平台相关的基础设施。 在右图中展示了一个典型的数据分析云的概念工作流的。大数据来自顶部来源各异的数据块或数据流。云平台资源分为四个基础设施部分:主要用于存储、检索、转换和处理云核心服务器中数据流。资源管理和安全单元控制保障了系统的稳定性。图右侧的数据流控制机制通过左侧的云引擎管理数据运动。此引擎在将提取的或排序的数据应用到底框中的各种应用程序之上,执行各种数据转换功能:包括收集、聚合、匹配和挖掘操作。 大数据计算应用的一个现代云系统的概念架构 多维数据矩阵被称为张量,它可以使用tensorflow库处理。其它大数据管理的关键技术还包括数据挖掘、分布式文件系统、移动网络和云平台相关的基础设施。 显然,必须建设一个现代云分析系统来实现这些机制、政策和分析功能。特别的,数据隐私和云安全在所有5个处理层中是尤为重要的。 大数据计算的云机制,政策,分析任务 在右表,我们列出在典型大数据计算应用程序中应该执行的关键要求。这些云服务在这五层中执行:数据源、处理、访问控制、事件管理和隐私保护,如表的第一列所示。 层 机制,政策和分析能力 数据源 备份,所有权,加密和可移植性 数据处理 隔离,管理,不可抵抗性,隔离,迁移,诚信 访问控制 用户访问,管理访问,大数据API,云际协议 事件管理 IDS,IPS,响应,记录,取证,审计,灾难恢复, 生存能力 隐私保护 匿名,不泄露,数据最小化,外包,生存能力
虚拟机和Docker容器的创建 传统的数据中心都建有服务器的大型集群,这些集群不仅用于大型存储数据库,也用来建立快速的搜索引擎。自从引进虚拟化技术后,越来越多的数据中心簇被转换成云。 虚拟化可以分别在软件处理级别、主机系统级别或不同的扩展级别上实现。 右表总结了五种资源的虚拟化等级。 在把一个数据中心转换成操作云的同时服务于大量用户的这个过程中,服务器虚拟化是不可缺少的。 服务器虚拟化的主要目的是提高集群的灵活性和服务器共享的利用率。 桌面虚拟软件试图通过个人用户提供应用灵活性。 虚拟存储和虚拟网络使云在协同定位操作方面显得更加的强大,应用程序虚拟化是指软件处理级别的虚拟化。 资源虚拟化和代表性的软件产品 虚拟化 简单介绍 代表性的产品 服务 器 服务器创建多个虚拟机来提 高共享服务器的利用率 XenServer, PowerVM, Hyper/V, VMware EXS Server, etc. 桌面 在个人电脑和工作站提高应 用的灵活性 VMware workstation, VMwarew ACE, XenDesktop, Virtual PC, etc. 网络 虚拟专用网络(VPN), 虚拟局 域网络,云的虚拟集群 Intranet virtualization, OpenStack, Euclayptus, etc. 存储 网络存储和针对共享簇和云 应用的NAS虚拟化 DropBox, Apple iCloud, AWS S3, MS One Drive, IBM Datastore, etc. 应用 软件处理等级的虚拟化,比 如容器 Dock containers, XenApp, MS CRM, various Salesforce SaaS clouds, etc. 谷歌,亚马逊和微软都使用这种方法建立自己的云计算平台。在本节中,我们介绍了资源的虚拟化技术,以及对应的管理程序和Docker引擎。
云平台资源的虚拟化 在不同抽象层次的虚拟化:左表中列出了五个实现虚拟机的抽象层次。 在指令集架构级别,虚拟机是通过模拟另一个给定的ISA而创建的。这种方法由于仿真过程缓慢,因此性能最低。但是,它有非常高的应用灵活性。 最优的虚拟机性能来自于在裸机或在操作系统级别上的虚拟化。然而,硬件级虚拟化会导致高复杂性。操作系统级别虚拟化最好的例子是Docker容器。 在硬件层次来创建虚拟机必须使用虚拟机管理程序,在Linux内核层次使用Docker容器。 大多数虚拟化都使用软件或固件来生成虚拟机。然而,也可以使用硬件辅助的方法来帮助虚拟化。 其他类型的虚拟化技术出现在桌面虚拟化和存储虚拟化,以及在表中介绍的不同层次的虚拟化中,甚至可以考虑数据和网络虚拟化。例如,虚拟专用网络(VPN)允许在因特网上建立一个虚拟网,虚拟化使云计算的实现成为可能。传统的网格计算和今天的云计算的主要区别在于是否使用虚拟化的资源。 五个抽象层次虚拟化的相对优点 虚拟化层次 功能描述 例包 优点,应用灵活性/隔离性,复杂 度实现 指令集架构 (ISA) 通过主机来仿 真指令集架构 Dynamo, Bird, Bochs, Crusoe 性能低,应用灵活性高,复 杂性和隔离性适中 硬件层次的虚拟 化 裸机硬件之上 的虚拟化 XEN, VMWare, Virtual PC 性能和复杂性高,应用灵活 性适中,应用独立性好 操作系统层次 资源孤立的用 户应用的孤立容器 Docker Engine, Jail, FVM, 性能最高,应用灵活性低, 独立性最好,复杂性适中 运行时间库层次 通过运行时间 库的APIhook创建虚 拟机 Wine, cCUDA, WABI, LxRun 性能适中,应用灵活性和独 立性低,复杂性和应用独立性非 常高 用户应用层次 在用户应用水 平部署高级语言虚 拟机 JVM, .NET CLR, Panot 性能和应用灵活性低,复杂 性和应用独立性非常高 在这一章节中,我们介绍了硬件虚拟化和其他类型的虚拟化的关键概念。可以看到,在没有资源虚拟化的情况下难以建立满足多租户操作云平台的需求。 计算机资源虚拟化的概念始于20世纪60年代,它是一种在不同的层次上对机器资源进行逻辑提取的技术。虚拟内存是一个典型的例子,通过允许物理磁盘和虚拟地址空间之间的页面交换的方式扩展物理内存容量。
虚拟机的体系结构 传统的计算机被称为物理机,每个物理主机都运行自己的操作系统。相比之下,虚拟机是由虚拟化过程创建的软件定义的抽象机。在一个物理计算机上操作系统X只执行为X平台量身定做的应用程序,为另一个不同的操作系统Y编写的程序可能无法在X平台上执行。在使用虚拟机时,客户机操作系统可能与主机操作系统不同。 虚拟机的体系结构:传统的计算机基础架构如图 (a)所示,操作系统在权限系统空间管理所有的硬件资源,所有的应用程序在操作系统的控制下在用户空间中运行。在一个本地的虚拟机上,虚拟机由一个客户操作系统的用户应用程序控制。该虚拟机由安装在权限系统空间的虚拟管理程序创造。这个虚拟管理程序正好位于裸机的顶部,如图 (b)所示。多个虚拟机可以移植到一个物理计算机中。这种虚拟机的方法拓展了软件的可移植性使其突破了平台的界限。裸机管理程序直接运行在主机的硬件上来管理操作系统。 另一个虚拟机体系结构如图 (c)所示,称为托管虚拟机,它是由虚拟机监控器(VMM)或由主机操作系统中的一个托管的虚拟机管理程序创建的。VMM是主机操作系统和用户应用之间的中间件,它取代了本地虚拟机中使用的客户机操作系统。因此VMM将客户操作系统从主机操作系统中抽取出来。虚拟机工作站、虚拟机玩家和虚拟容器都被称为半虚拟化的托管虚拟机。在这种情况下,VMM直接监视用户应用程序的执行。除非另有规定,否则我们只考虑裸机管理程序产生的本地虚拟机。 例如,X平台是一个苹果操作系统,而Y平台可能是一个基于Windows的计算机。虚拟机针对软件的可移植性障碍提供了良好的解决方案。 与传统物理机相比的两种虚拟机架构
四种虚拟机管理程序 产生虚拟机的管理程序或者虚拟机监视器 主机CPU 主机操 作系统 客户机操作系统 架构,应用和用户 社区 XEN x86, x86-64, IA-64 NetBSD, Linux Linux,Windows,BS D,Lnux, Solaris 剑桥大学开发的本地 虚拟机监视器 (Example1.6) KVM x86, x86-64, IA-64, S-390, PowerPC Linux Linux,Windows,Fre eBSD, Solaris 用户空间基于半虚拟 化的主机虚拟机监视 器 HyperV x-86 based Server 2003 Windows servers 基于本地虚拟机监视 器的Windows,微软出 厂 VMWare Player, Workstation, VirtualBox X86, x86-64 Anyhost OS Windows,Linux, DarwinSolaris,OS/2 , FreeBSD 图1.20(c)所示的半 虚拟化架构的主机虚 拟机监视器 表总结了四种虚拟机管理程序(VMM)。Xen是最流行的一种,用于几乎所有的32位操作系统的个人电脑、服务器或工作站。KVM是一类基于Linux内核的虚拟机,微软的Hyper-V用于Windows服务器虚拟化。 Xen是最流行的一种,用于几乎所有的32位操作系统的个人电脑、服务器或工作站。虚拟机管理程序创建的虚拟机往往是有利的,因为它由用户应用程序代码(可能只有几KB)外加一个可能要求GB大小内存的客户操作系统组成。客户操作系统监督虚拟机上用户应用程序的执行情况。KVM是一类基于Linux内核的虚拟机,微软的Hyper-V用于Windows服务器虚拟化。换句话说,KVM大多用于Linux主机而Hyper V使用Windows主机。这个虚拟机管理程序涉及最低级别的操作系统集成。恶意软件和隐匿技术可能威胁虚拟机管理程序的安全性。微软和学术界的研究人员已经开发出一些反隐匿技术Hooksafe软件用来保护系统免受恶意软件和隐匿技术的攻击。
Docker引擎 Docker引擎:这是一个虚拟化软件,在主机操作系统、用户应用程序代码、二进制文件和库之间运行。Docker引擎实现了一个高层次的API提供轻量级容器,这个容器可以隔离运行软件的过程。Docker虚拟化的概念如图所示。 运行用户应用程序不需要客户操作系统的参与。容器使用内核的功能。资源隔离包括CPU、内存和I/O、网络等,这些资源都使用单独的命名空间应用于不同应用。 Docker容器:Docker是一个开源项目,是将用户应用程序开发过程自动化的软件容器。Docker容器提供一个基于Linux主机平台的操作系统级虚拟化的抽象和自动化的附加层。Docker引擎是使用Go语言开发的,并运行于Linux平台中。 Docker引擎使用Linux内核的资源隔离功能。cgroups和内核namespaces允许独立的容器运行在独立的Linux系统上,这些独立的容器避免了创建虚拟机的开销。 Docker使用libcontainer库直接使用内核的虚拟化功能。这个接口在Docker0.9之后是可用的。Docker引擎也可以间接通过用户接口访问Linux内核:LXC(Linux容器),libvirt或system-spawn。 Docker不同于传统的虚拟机,它由应用程序加上其需要的文件和库组成。每个应用程序容器大约需要10兆内存。 Docker引擎访问Linux内核功能, 用来隔离不同应用容器的虚拟化
容器和虚拟机的发展 虚拟机管理程序创建的虚拟机和Docker容器的比较 虚拟机类型 优点和不足 适应的应用 虚拟机管理程序 创建的虚拟机 启动不同操作系统应用具有 较高的应用灵活性,但创建和需 要更多的内存和成本创建和启动 虚拟机 适用于没有编排的多 个应用的使用,运行不同 的操作系统 Docker容器 轻量型容器,创建和运行的 成本低,安全性好,在一个孤立 的环境中执行 适用于编排条件下多 个副本的相同应用的扩展。 在云中保存操作花费 相对于创建和使用虚拟机,创建和使用容器的成本可能更低。出于这个原因,Docker容器在一些云中可能会取代一些传统的虚拟机。 例如AWS EC2已经提供了ECS服务,这让用户通过使用显著降低的存储需求和复杂性的容器来实现他们的应用程序。 使用容器不仅可以分离资源、限制服务,还可以在它们自己的ID空间、文件系统和网络接口的操作系统中进行处理。 建设高度分布式系统,与使用管理程序创建的虚拟机进行比较,应用程序容器可以显著简化创建,安全和管理等问题。 在上表中,我们总结了几个虚拟机管理程序(XEN,KVM,Hyper V和VMware)的属性,并将这些管理程序创建的虚拟机与Docker容器进行对比。
三种云平台架构 三种云平台架构的比较 云系统特征 亚马逊云服务 (AWS) : 公共云 OpenStack系 统: 私有云 VMWare系统: 混合云 服务模型 IaaS, PaaS IaaS IaaS, PaaS 开发者/提供 商与设计者 Amazon (2.3.1 节 和 2.4.1~2.4.2节) Rackspace/NA SA ,Apache, (2.3.4节) VMWare (2.3.5节) 所有 架构包和规 模 数据中心作为 可用区域分布在各 个全球区域(图 .2.11) 小型云系统, 由 Apache提供(图. 2.14) 私有云,公 共云交互 (图 .2.17) 云操作系统/ 软件支持 支持Linux和 Windows机器实例 具有自动缩放和计 费功能 开源,在 Aucalyptus和 OpenNebula的基 础上开发而来 vSphere和 vCenter,支持具 有NSX和vSAN的 x-86服务器 用户频谱 公众:企业和 个人用户 研究中心或小 型贸易 企业和大型 组织 今天的大多数云都遵循SOA准则。通常来说,云架构可以用两层资源来描述。底层是静态的基础设施、系统边界和与外部世界交互的用户界面。上层是由动态资源形成的,比如云操作系统或者控制中心管理下的容器或者虚拟机。在表中,我们比较了三种用来建立不同类型云的SOA。AWS云代表最流行的公共云。OpenStack用于小企业和保护社区的私有云建设。商业VMware软件包用来构建企业和大型组织使用的混合云。
Amazon Web Services (AWS) Google Compute Engine (GCE) 虚拟机管理和灾难恢复 计算,存储和网络云中的一些虚拟化资源 提供商 Amazon Web Services (AWS) Microsoft Azure Google Compute Engine (GCE) 虚拟集群提供 的计算云资源 x86 servers, Xen VMs, 资源弹性通过虚拟聚类体现 了可扩展性 虚拟机由声明性说 明提供 使用Python编写的处理程 序,拥有自动缩放,服务 器故障切换功能 虚拟存储中的 存储云 可伸缩存储块 (EBS) , EBS 和S3可完成自动扩展 SQL数据服务, Azure存储服务 MegaStore和BigTable用于 分布式文件管理 网络云服务 声明式拓扑,安全组,可用 性区隔离网络故障。 用户的声明性描述 或应用程序组成部 件 固定拓扑结构适应三层网 络应用结构,可以完成自 动扩展和升级功能 独立服务管理:独立的服务请求设施可以执行多种无关的任务。一般来说,管理软件会提供相应的Web服务,开发人员可以方便地使用这些服务。 运行第三方应用:云平台经常被用来执行第三方应用。由于当前的Web应用程序通常使用Web 2.0的格式,编程接口与运行时库中使用的程序接口不同。API的角色相当于服务器。构建第三方应用程序的程序员使用Web服务应用程序引擎,Web浏览器是最终的用户接口。 硬件虚拟化:在云系统中,虚拟机管理程序通常用于虚拟化硬件资源来创建虚拟机。系统级虚拟化要求一种特殊的软件来模拟硬件的执行,甚至运行在未经修改的操作系统中。虚拟化的服务器、存储和网络结合在一起,产生云计算平台。 在虚拟机中,相对于传统的计算机系统而言,高度的应用灵活性往往是虚拟机的一个优势。在虚拟机资源被很多用户共享的情况下,我们需要一种方法来最大化用户的特权,并使经过授权的虚拟机维持在一个隔离的执行环境中。 独立服务管理:独立的服务请求设施可以执行多种无关的任务。一般来说,管理软件会提供相应的Web服务,开发人员可以方便地使用这些服务。在AWS EC2中,通过搭建SQS(简单队列服务)来为不同供应商之间提供可靠通信服务。通过使用独立的服务提供商,云应用程序可以同时运行不同的服务。 运行第三方应用:云平台经常被用来执行第三方应用。由于当前的Web应用程序通常使用Web 2.0的格式,编程接口与运行时库中使用的程序接口不同。API的角色相当于服务器。构建第三方应用程序的程序员使用Web服务应用程序引擎,Web浏览器是最终的用户接口。 硬件虚拟化:在云系统中,虚拟机管理程序通常用于虚拟化硬件资源来创建虚拟机。系统级虚拟化要求一种特殊的软件来模拟硬件的执行,甚至运行在未经修改的操作系统中。虚拟化的服务器、存储和网络结合在一起,产生云计算平台。云开发和部署环境应该是一致的,以消除运行时产生的问题。右表列出了计算、存储和网络云中的一些虚拟化资源。虚拟机安装在一个云计算平台中,主要用于托管第三方应用。虚拟机为用户提供了灵活的运行时服务,使用户不必考虑系统环境。 传统的集群共享资源在运行前通常被设置为静态的。这种共享方式是不灵活的。用户无法自定义系统的交互应用程序,操作系统往往是软件可移植性上的障碍。虚拟化允许用户有充分的特权,同时保持他们的资源与控制权完全分离。在这个意义上,Docker容器比使用虚拟机管理程序创建的虚拟机具有更好的独立性。在云系统中使用虚拟化技术可以实现高可用性、灾难恢复、动态负载均衡、灵活的资源配置以及提供可扩展的计算环境。
虚拟机管理和灾难恢复 灾难恢复的虚拟机克隆:虚拟机技术需要先进的灾难恢复计划。一个方案是由一个物理机恢复另一个物理机。第二个方案是通过一台虚拟机恢复另一台虚拟机。 虚拟机的克隆提供了一种有效的解决方案。这个想法是针对本地服务器上运行的每一个虚拟机都在远程服务器上复制一个克隆虚拟机。所有的克隆虚拟机中,只要求一个虚拟机有活性。远程虚拟机应该处于一个暂停模式。在原始虚拟机失败的情况下,云控制中心应该能够激活这个克隆虚拟机。以虚拟机的快照功能,以最小时间启用实时迁移,迁移的虚拟机运行在一个共享的互联网连接上。只有更新过的数据和最新的状态能够被发送到暂停的虚拟机来更新其状态。在虚拟机的实时迁移过程中应该保证VMS的安全。 实时VM迁移步骤:在与主机和客户机系统的混合节点构建的集群中。当虚拟机出现故障时,如果它们都在相同的客户操作系统上运行,故障的虚拟机可以由不同节点上的VM替换。换句话说,一个物理节点可以将故障转移到虚拟机的主机上。 下图显示了VM从主机A到主机B的实时迁移过程。这个迁移是通过从主机的存储区复制VM状态文件实现的。 从下图的时间轴上可以看到,传统的从物理机到物理机的灾难恢复是相当缓慢的、复杂的和昂贵的。 总的恢复时间主要源于硬件配置、安装和配置操作系统、安装备份代理、以及重新启动物理机的时间。 要恢复虚拟机平台,就需要消除操作系统和备份代理的安装和配置时间,这大约占用40%的恢复系统的时间。 这和传统物理聚类上物理机到物理机的故障不同。它的优点是,提高故障切换的灵活性,潜在的缺点是VM必须停止失败的主机节点以进行恢复工作。 不过,这个问题可以使用实时VM迁移来解决。下图显示了VM从主机A到主机B的实时迁移过程。这个迁移是通过从主机的存储区复制VM状态文件实现的。 VM从Dom0迁移到具有XEN目标主机的实时迁移 虚拟集群与物理集群的恢复力比较
创建私有云的Eucalyptus和OpenStack 下图表示支持IaaS云的开源软件系统,该系统主要支持虚拟网络和虚拟机的管理,但是不支持虚拟存储器。它广泛应用于构建私有云的场景中,可以通过以太网或因特网与最终用户进行交互。 服务集群管理和云操作系统 该系统还支持与其他私有云或互联网公共云的相互作用。 但是该系统缺乏用于通用网格或云应用的安全性和部分功能。 上表列出了一些构建IaaS平台的开源软件包。电子云的Fountry和Applscale也支持PaaS云,只有vSphere 4是一个VMware专有的云OS。 大多数软件包可以在Linux主机上创建虚拟机。几乎所有的软件包都和AWS提供的EC2和S3服务兼容,它们都共同使用了Xen和KVM技术。 VMware的虚拟机管理程序在euclyptous,founbdry云,applscale和vSphere / 4中使用。其中,我们选择OpenStack软件来评估云构建软件的能力。 上表列出了一些构建IaaS平台的开源软件包。 通过以太网和互联网连接的虚拟机建立 虚拟网络构建私有云的Eucalyptus
OpenStack OpenStack于2010七月由Rackspace和NASA提出。最终的目标是创建一个大规模可扩展的和安全的云软件库。 OpenStack计算(Nova):这是OpenStack计算模块。Nova是系统的控制模块,通过创建和管理大型虚拟服务器集群来设置任何IaaS云的内部结构。该系统采用KVM、Xen、VMware,Hyper-V,Linux容器LXC和电脑裸机HPC配置,因此大多数Nova的交流是通过消息队列改进的。 OpenStack存储(Swift):这是一个遍布大型数据中心服务器的多个磁盘上的可扩展的冗余存储系统。Swift的解决办法是建立许多交互的组件,包括一个代理服务器、环、对象服务器、容器服务器、帐号服务器,响应器,更新程序和审计装置。代理服务器能查找到快速存储环中的帐户、容器或对象的位置,并对请求进行路由。因此,任何对象都通过代理服务器流至对象服务器上或从对象服务器流出。 其他OpenStack功能模块:块存储(Cinder)提供持久块级的存储设备,OpenStack用它来计算Dashboard管理的计算案例。网络(Neutron)提供一种系统,用于管理云部署中的网络和IP地址,并为用户提供了网络配置自助服务能力。Dashboard(Horizon)给管理员和用户提供了图形接口用来访问、配置和使基于云的资源自动化。身份服务(Keystone)提供映射到OpenStack服务的用户的中央目录。它作为整个云操作系统共同的认证系统,可以和现有的后端目录如LDAP集成。 至今为止,超过200家的企业加入到OpenStack项目中。本项目提供免费的开源软件许可证,OpenStack云软件是使用Python语言编写的。系统每六个月更新一个。
Docker容器调度和业务流程 容器调度:Docker容器需要被及时加载到主机以满足服务需求。调度是Docker管理员将服务文件加载到主机上以建立如何运行特定容器的功能。需要集群管理来控制一组主机,这包括从集群添加或移除主机。集群管理器必须首先获得关于主机及其装载容器当前状态的信息,容器调度程序必须能够访问到集群中的每一台主机。 容器业务流程工具:集群管理软件是为了支持容器调度功能,如OpenStack。高级调度需要容器满足分组和优化功能。管理员必须管理组容器作为单一的应用程序。分组容器可以要求启动时间和停止时间同步。另一个问题是主机配置,意思是指将一个新的主机及时且顺利的加入到现有集群中。 六款热门容器调度和集群管理的工具总结在下表。 主机配置和容器调度的工具 工具名 简介 fleet 负责CoreOS的调度和集群管理组件 marathon 负责服务管理和中间件的安装 Swarm Docker的强大功能允许在配置的主机上调度容器 mesos Apache mesos提供抽象和管理集群中所有主机资源的功能 Kubernetes 谷歌调度体可以在云基础设施上运行容器 compose Docker的容器允许对容器进行组织管理 容器调度:主机的选择是容器调度的一个大问题,这个选择过程应该尽可能的自动化,容器功能和主机工作量需要与在集群中的负载平衡一致。 Swarm和compose是由Docker团队开发的。Kubernetes由Google开发,用于标记、分组和设置容器组。
建立混合云的VMWare云操作系统 用于云资源管理的Eucalyptus和vSphere 操作 系统平台 资源来源、web 链接 用户 API 管理程 序 云接 口 特征 Eucal yptus, Linux , BSD 虚拟网络, (Example 2.7) http://www.eucalypt us.com/ EC 2 WS, CLI XEN, KVM EC2 层次控制 虚拟机集群 vSph ere/4, Linux, Windows , 所有 数据中心虚拟化 操作系统 (Example 2.8), http://www.vmware. com /products /vsphere/ CL I, GUI, Portal, WS VMwa re ESX, ESXi VM ware vCloud partners 数据保护,虚 拟存储, VMFS,DRM, 高可用性 VMware是第一家支持X-86服务器虚拟化的公司,VMware产品企业云或混合云市场占有80%的份额,他们的云操作系统产品作为VSphere内核和VCenter接口出现。下图显示了支持混合结构的VMware VRealize管理平台。 虚拟环境支持包括具有计算目的的VSphere、用于SDN的NSX(服务器域名)和分布式存储应用VSAN。这些虚拟环境管理四个子系统:业务子系统,自动化子系统,操作子系统和混合云子系统的可扩展性。大多数服务模块是建立在这些子系统内的。主要目的是构建VSphere或者基于VCenter的私有云。 VMWare云平台架构
IaaS,PaaS和SaaS云的案例研究 EC2中支持实例之间的自动缩放和负载平衡。配置在EC2集群中的机器实例根据用户的需求进行选择,集群配置应与预期的工作负载相匹配。自动缩放允许你根据一定的阈值条件自动扩展你的EC2的大小。 IaaS云及其基础设施和提供的服务 云名称 虚拟机实例配置 API 和使用工具 Amazon EC2 每个实例拥有1-20 EC2 处理器, 1.7-15 GB 内存和160 TB 磁盘 CLI or Web Service (WS) portal GoGrid 每个实例拥有1-6 CPUs, 0.5-8 GB 内存和30-480 GB 磁盘 REST, Java, PHP, Python, Ruby Racksp ace Cloud 每个实例拥有4-core CPU, 0.25- 16 GB 内存和 10-620 GB 磁盘 REST, Python, PHP, Java, C#, .NET Flexisc ale in UK 每个实例拥有1-4 CPUs, 0.5-16 GB 内存和 20-270 GB 磁盘 Web console IaaS云允许用户使用虚拟化的IT资源,用于计算、存储和网络化功能。简而言之,该服务是由租用的云基础设施实施。用户可以在他所选择的操作系统环境中部署和运行自己的应用程序。用户并不管理或控制底层的云基础设施,但是可以控制操作系统,存储,已部署的应用程序和可以选择的网络组件。该IaaS模型涵盖存储服务,计算实例服务和通信服务。一些代表性IaaS提供商列于上表。 IaaS云允许用户使用虚拟化的IT资源,用于计算、存储和网络化功能。 简而言之,该服务是由租用的云基础设施实施。用户可以在他所选择的操作系统环境中部署和运行自己的应用程序。 用户并不管理或控制底层的云基础设施,但是可以控制操作系统,存储,已部署的应用程序和可以选择的网络组件。 该IaaS模型涵盖存储服务,计算实例服务和通信服务。一些代表性IaaS提供商列于上表。 一个集群中EC2实例的数量是由工作量需求驱动的,自动缩放特别适合工作负载变化频繁的应用程序,缩放技术是由AmazonCloudWatch自动触发的,不存在额外收费。 EC2执行环境,AMI可以从公共,私有或者付费池创建
AWS云服务产品 AWS云中的应用,移动和分析服务 AWS云中的计算,存储,数据库和网络服务 种类 提供商 服务模块和简介 应用服 务 服务模块简介 计算资源 EC2 AWS云中的虚拟服务器 Lambda 响应事件代码 EC2 Container Service 运行和管理Docker容器 存储资源和 内容分发 S3 AWS云中的可扩展存储 Elastic File System EC2的完全管理文件系统 Storage Gateway 将本地IT设施与云存储集成 Glacier 在AWS云端存档 CloudFront 全球内容传送网络 数据库 RDS MySQL, Postgres, Oracle, SQL server DynamicDB 可预测和可扩展的NoSQL数据存 储 ElastiCache 内存缓存 Redshift PB级管理仓储服务 网络资源 VPC 虚拟私有云作为隔离的云资源 Direct Connect 专用网络连接到AWS Route S3 可扩展的DNS、域名注册 种类 提供商 服务模块和简介 应用服 务 SQS 消息队列服务 SWF 用于协调应用程序组件的工 作流服务 AppStream 低延迟应用流 弹性转码器 易于使用的可扩展媒体转码 SES 电子邮件发收发服务 CloudSearch 搜索管理服务 API 网关 构建,部署和管理API 移动服 务 Cognito 用户身份和应用数据同步 Device Farm 在云端设备上测试Android, Fire OS和iOS应用 移动分析 收集,验证和导出应用程序 分析 SNS 简单推送通知服务 分析服 务 EMR 管理弹性Hadoop(MapReduce) 框架 Kinesis 实时处理流数据 数据管道 用于数据驱动工作流程的编 排 机器学习 构建机器学习预测解决方案 持有无限数量数据对象的Amazon S3存储服务
AWS云服务产品 AWS云中的管理,安全,企业和部署服务 种类 提供商 服务组件与简介 管理&安全 目录服务 AWS云中的托管目录 身份/访问管理器 访问控制和密钥管理 Trusted Advisor AWS云优化模块 Cloud Trail 追踪用户使用记录 Configuration 负责资源配置和库存 CloudWatch 管理资源和应用程序 Service Catalog AWS资源的个性化目录 企业应用 Workplaces AWS云端的台式机 WorkDocs (新) 安全的企业存储和共享服务 WorkMail 安全的电子邮件和日历服务 部署与管理 Elastic Beanstalk AWS应用程序容器 OpsWorks DevOps应用管理服务 CloudFormation 模拟AWS资源创建 CodeEeploy 自动代码部署 CodeCommit 管理Git存储库 Code Pipeline 连续交付代码 上述三个表,总结了在三个主要服务领域中AWS提供的产品:第一个表强调了计算、存储、数据库网络服务(IaaS)。第二个表详述了由AWS云提供的应用程序,移动和分析服务。它们接近SaaS提供的产品。第三个表总结了AWS云提供的政府、企业、安全和部署服务。它们是相关的PaaS产品,在服务提供方面,AWS已经不再只是一个纯粹的IaaS云。
Salesforce. com Force.com Amazon Elastic MapReduc e PaaS——谷歌AppEngine及其它 提供PaaS服务的公共云 云名称 编程语言和开发工 具 所支持的编程模块 目标应用和存储 Google AppEngine Python, Java 和 Eclipse-based IDE MapReduce, Web programming on demand 网络应用和BigTable 存储 Salesforce. com Force.com Apex, Eclipse- based IDE, Web- based Wizard Workflow, Excel- like, Web programming on demand CRM 和商业附加应 用程序开发 Microsoft Azure .NET, Azure tools for MS Visual Studio Dryad, Twister, .NET Framework 企业和Web应用程序 Amazon Elastic MapReduc e Hive, Pig, Cascading, Java, Ruby, Perl, Python, PHP, R, 和C++ MapReduce, Hadoop, Spark, 数据处理,电子邮件 和电子商务,S3和 WorkDocs 谷歌应用程序引擎:谷歌是目前最大的云应用提供商之一,但是基本的服务程序大多是私有的,用户不能使用谷歌的基础设施建立他们自己的服务。 下图显示了谷歌云计算基础设施的整体架构。 开发、部署和管理使用配置资源的应用程序的执行需要云平台及其所需要的软件环境。这样的云平台包括操作系统和运行时库支持。这引发了PaaS模式的创新,让用户能够开发和部署自己的用户应用程序。 上表给出了五个不同供应商所提供的云平台服务,这些PaaS服务供应商包括谷歌AppEngine、微软的Azure,Force.com,亚马逊的MapReduce,和澳大利亚的Aneka。 谷歌云计算应用程序的构建块包括用于存储大量数据的谷歌文件系统,为应用程序开发人员所使用的MapReduce编程框架, 用于分布式应用提供锁服务的Chubby和作为访问结构或半结构数据的存储服务BigTable。为了保证这些构建模块的正常运行,谷歌建立了数量众多的云应用。 用于具有负载平衡的PaaS操作谷歌AppEngine平台
软件即服务的云:Salesforce云 销售云:CRM SaaS应用程序用于管理客户档案、机会跟踪、优化活动等。 云服务:基于云的SaaS客户服务,允许公司创建、跟踪和路由服务案例,包括社交媒体网络服务。 市场云:提供社会营销的SaaS应用,允许公司从社交媒体中识别销售线索,发现推荐人等。 数据云:用于获取和管理CRM记录。 协作云:用于商业协作。 分析云:用于基于机器学习的销售业绩分析。 自定义云:用于在标准CRM应用程序之上创建附加应用程序的PaaS平台。 四种SaaS云平台和他们的服务产品 模型 Amazon AWS Google AppEngine Microsoft Azure Salesforce 支持平台 AWS EC2, S3, EMR, SNS, etc. GAE, GFS, BigTable, MapReduce, etc. Azure, .NET service, Dynamic CRM, Salesforce.com , Force.com, Online CRM, Gifttag 使用者 Elastic Beanstalk, Code- Deploy, OpsWorks, Code-Commit, Code Pipeline, Mobile Analytics Gmail, Docs, YouTube WhatApp Live, SQL, Office”365 (OWA), Hotmail Sales, Service, Market, Data, Collboration, Analytics, 安全特性 ClouWatch, Trusted Advisor, Identity/ Access Control Chubby locks for security enforcement Replicated Data, Rule- based access control Adm./Record security, Use Metadata API API和编程语言 API Gateway, LatinPig Web-based Adm. Console, Python Azure portal, .net Framework Apex, Visualforce, AppExchange, SOSL, SOQL SaaS服务最好的例子包括谷歌Gmail和Google文档,微软SharePoint和Salesforce.com的CRM软件。他们都成功地推广了自己的业务,数以千计的小型企业在他们的每日操作中都使用了这些 七种Salesforce云服务产品:除了自定义云用于PaaS应用,其它的所有都用于SaaS应用
微云网关的移动云 如右图所示,携带移动设备的用户在异构的移动计算环境中活动,例如蜂窝网络、Ad Hoc移动网络、人体区域网络、车载网络等。 移动设备的能力是由在异构移动计算环境中的移动云加强的
微云网关的移动云 物联网和云应用的移动和安全支持 物联网服 务等级 移动支持和数据 保护方法 硬件和软件云安全 措施 数据传感和网络支持 特殊接口 移动API设计 文件/日志访问控制 数据控制 硬件/软件权限信任 , 安全配置虚拟机, 软件水印 基于主机的防火墙和 IDS 支持云平台处理感知数据 使用无线PKI 用户认证 版权保护 虚拟私人网络 基于网络的防火墙和 IDS 信任覆盖网络 名誉系统 操作系统补丁管理 左表中我们总结了移动计算和云支持物联网应用中的移动性支持、数据保护、安全基础设施和信任管理。其目的是为了在一个固定的或移动的分布式计算环境中维护这些云计算服务。其流动性支持包括特殊的空中接口和移动API设计以及用于移动访问云平台的无线PKI的使用。虚拟专用网(VPN)也可用于云安全平台。 用于移动云计算应用的基于微云的虚拟机 建立在CMU Kimberley原型系统的快速虚拟机
跨云平台的混搭服务 假设每个任务由部署在一个单独云的疗养院服务处理。五种云服务进行混搭,提供作为工作流的集成服务,由有向无环图所示,如下图所示。当一个组合服务请求发送到混搭云时,会实时定制在线医疗保健计划。 用于云际混搭服务的skyline开发和组成过程,由QoS和QoE实行相似度测试 云际应用中复合Web服务的质量可以通过快速和优化的skyline查询处理大大增强。上图从三个方面阐述了这一想法:skyline的选择、相似性测试和服务组合。我们基于消除数据空间块分区选择skyline服务。skyline可能会产生大量的候选服务。为了找出每个skyline子空间的最佳选择,skyline松弛法可以作为每个子空间的代表,达到加快后续的QoS保证服务组合的目的。 解决病人医疗问题的五个云服务的混搭工作流
混搭服务skyline的发现 Map的过程:服务数据点是由主服务器(如UDDI)分成多个基于QoS的需求的数据块。将数据块发送到并行处理的服务器上进行并行处理。 局部Skyline计算:在这个过程中,每一个从属服务器从服务数据点中在自己的细分数据块上产生局部skyline。 Reduce过程:将所有从属服务器产生的局部skyline合并,整合成一个全局的skyline,应用于被评价的所有服务。 用于选择skyline服务优化QoS的MapReduce模型
混搭服务的动态组成 三种用于MapReduce skyline查询过程的数据分区方法 用于云混搭性能的三种MapReduce方法的相对性能
本章小结 本章主要研究了云体系架构,云既可以应用到大数据存储和也可以在分析应用的处理中使用。我们介绍了虚拟化技术,虚拟化概念和虚拟机管理程序与Docker容器,其中Docker容器为云架构和弹性管理提供了扎实的基础。 介绍了AWS、GAE和Salesforce云的案例研究。最后我们介绍了近年来云混搭服务和软件工具的应用方面的进展。 随着越来越多公共云的出现,云混搭服务预计将在未来的十年中会得到迅速发展。我们介绍了skyline的发现和云混搭服务组合。在一般情况下,高性能会促进云的生产力,云的服务质量基于用户的喜好。
THANKS FOR WATCHING