1.5 云基础设施管理
在构建云基础设施时,IaaS供应商面临的一个关键挑战是从整体上管理物理资源和虚拟资源,即服务器、存储、网络[43]。必须快速和动态地为应用提供资源的方式进行资源的编排[7]。
负责此业务流程的软件工具称为虚拟基础设施管理器(Virtual Infrastructure Manager,VIM)[7]。这种类型的软件与传统的操作系统类似,不过它并不与单独的计算机打交道,而是聚合了多台计算机资源,为用户和应用提供了一个统一视图。术语“云操作系统”也涉及了VIM[43]。其他术语包括“基础设施共享软件[44]”和“虚拟基础架构引擎[45]”。
Sotomayor等[7]在他们的软件工具云生态系统的描述中,提出了管理云的两类工具的异同。第一类是云工具包,包括那些“公开创建、控制和监控虚拟化资源的远程和安全的接口”,但并没有在虚拟基础设施(VI)管理中指定。第二类工具是虚拟基础设施管理器,它提供了如自动负载均衡和服务器整合等高级功能,但并未公开远程类似云的接口。然而,作者指出在这两类工具间也存在着功能上的叠加;云工具包还可以管理虚拟基础设施,只是它们通常提供的功能不如VI管理器复杂罢了。
远程类似云的接口可用性和许多用户及其权限的管理能力是区分VIM中“云工具包”的主要特征。然而,在这一章中将其放在同一个地方(VIM)的两类工具组中。在使用时,本书强调一个远程接口作为一个功能的可用性。
事实上,本书调查的所有VIM均提出了一套相关的管理虚拟机生命周期的基本特征,包括虚拟机的网络组结合在一起,设置虚拟机的虚拟磁盘。这些基本特征几乎定义了这样一个工具,即在部署云时,是否使用它。另一方面,只有极少数软件提出了一些高级功能(如高可用性),令它们可以在大规模生产云中使用。
1.5.1 特性
现在,本书展示通常在VIM中用到的基本和高级功能。
虚拟化支持。云多租户的各个方面需要由单一硬件基础设施提供不同要求服务的多个客户。你可以灵活地调整虚拟资源(CPU、内存等)。这些特点促成了硬件虚拟化,即创建一个在多租户间对数据中心进行分区的虚拟基础设施的理想技术。
自助服务、按需资源配置。云最吸引人的特点之一是自助服务对资源的访问。该特点可令用户直接获得来自云的服务,如创建一个服务器并定制其软件、配置和安全策略,不与传统的(human)系统管理员交互。这一能力“消除了更费时、劳动强度大、在IT中许多耳熟能详的人力驱动采购过程的需要[46]”。因此,通过公开一个自助服务接口,用户可以很容易地与系统进行交互,这是虚拟基础设施管理器的一个非常理想的功能。
多个后端管理程序。不同的虚拟化模型和工具提供不同的优点、缺点和局限性。因此,无论是否使用虚拟化技术,一些VI管理器均提供了一个统一的管理层。这一特点在开放源码的VI管理器中更为明显,通常提供可插拔的驱动程序与多个虚拟机管理程序进行交互[7]。在本节中,libvirt[47]的目标是提供一个统一的API,VI管理器可以在虚拟节点中使用抽象的管理程序具体地调用标准操作来管理域(虚拟机或运行操作系统实例的容器)。
存储虚拟化。存储虚拟化是从物理存储抽象成逻辑存储的过程。通过整合数据中心中所有可用的存储设备,它允许创建独立于设备和位置的虚拟磁盘。在存储区域网络(SAN)中,通常将一些存储设备组织起来,并通过如光纤通道、iSCSI和NFS这样的协议将其连接到服务器。存储控制器则在虚拟存储和物理存储间提供抽象层[48]。
在VI管理领域,存储虚拟化的支持往往受到如VMware和Citrix公司的商业产品限制。其他产品以汇集和管理存储设备为特色,但管理员仍然了解每个设备。
到公共云的接口。研究者认为,通过借用公共云资源扩展内部计算基础设施的能力是有利的。在这种方式下,组织机构可以很好地利用其现有资源,在需求高峰的情况下,额外的负载可以分担租用的资源[45]。
在混合云设置中,如果VI管理器提供驱动程序以管理来自外部云供应商的虚拟化资源的生命周期,则可以使用它。对于应用,在理想情况下,使用租用资源时一定要透明化。
虚拟网络。虚拟网络允许创建一个孤立网络,该网络是在独立于物理拓扑结构和位置的物理基础设施上创建的[49]。一个虚拟局域网(VLAN)可以隔离共用一个交换网络的流量,使虚拟机整合到同一广播域(broadcast domain)。此外,可以配置一个VLAN阻止来自其他网络的虚拟机的流量。同样,虚拟专用网络(Virtual Private Network,VPN)的概念用来描述一个在公共网络(最常见的公共Internet)上的安全和专用的覆盖网络[50]。
支持创建和配置虚拟网络,以便对由大多数VI管理器提供的放置在整个数据中心的虚拟机进行分组。此外,与公共云交互的VI管理器通常支持安全的VPN连接本地虚拟机和远程虚拟机。
动态资源分配。提高对数据中心中能源消耗的认识,在一些服务器上鼓励动态提高虚拟机数量的实践。在云基础设施中,应用的可变性和动态需求、容量管理和需求预测尤为复杂。这一事实触发了以供给和需求的及时匹配为目标的动态资源分配的需要[51]。
减少能源消耗和更好地管理服务水平协议(SLA)可以实现定期动态映射虚拟机到物理机。可以将未分配给任何虚拟机的机器关闭,或者让其进入低功率状态。同样,从热点(hotspot)中移除负载可以避免设备过热[52]。
VI管理器包括一个动态资源分配功能,根据应用需求,在不同的虚拟机之间通过资源池和重新分配可利用的资源以不断地监控资源的利用率。
虚拟集群。一些VI管理器可以全面管理虚拟机群体。此功能非常有用,可用于按需提供多层次Internet应用的虚拟集群计算和相互关联的虚拟机[53]。
预订和协商机制。当用户在特定的时间请求可用的计算资源时,这一请求称为提前预订(Advance Reservation,AR)。与尽力而为(best-effort)型请求相比,用户请求的资源在任何时候都是可用的[54]。为了支持复杂的请求(如AR),VI管理器必须让用户“租赁”资源以表达更复杂的条件(例如,在预订期间)。云上的资源是稀缺的,这是非常有用的。因为并不是所有请求都可以立即满足,这取决于支持队列、优先次序和提前预订的虚拟机布局策略[55]。
此外,租赁协商和重新谈判使供应商和消费者修改租约或者提出相反的建议,直到达成协议。给定的插槽对AR请求得不到满足时的案例展示了这一功能,但供应商可以提供不同的插槽来满足用户。该问题已在OpenPEX中得到解决,即对双边谈判协议进行重组,允许用户和供应商通过交换信息和计数器提供的数据达成一个替代协议[56]。
高可用性和数据恢复。VI管理器的高可用性(HA)旨在最大限度地减少应用的宕机时间,并防止业务中断。一些VI管理器通过提供故障转移机制实现了这一功能,它可以检测到物理服务器和虚拟服务器的故障,并在健康的物理服务器上重新启动虚拟机。这种风格的HA保护了主机,但在虚拟机发生故障时并未提供任何措施[57,58]。
对于关键任务的应用而言,涉及重新启动虚拟机的故障转移解决方案尚不完善,还需要实现依赖于虚拟机冗余的额外容错等级。在这种方式下,在从属物理服务器上放置一些冗余和同步的虚拟机(运行或者独立的)。HA解决方案监控系统组件(如服务器、虚拟机、磁盘和网络)的故障,确保冗余虚拟机在发生故障时可以为应用服务[58]。
在云中的数据备份应考虑参与虚拟机管理的高数据量。频繁地备份大量的虚拟机,每一个虚拟机连接了多个虚拟磁盘,在系统性能上应做到最少干扰。从这个意义上说,一些VI管理器提供了执行虚拟机镜像增量备份的数据保护机制。备份的工作量往往分配给代理,这可以分摊生产服务器的负担,并降低网络开销[59]。
1.5.2 案例研究
本节描述了最流行的VI管理器的主要特点。仅对每个工具的最突出特点进行详述。VI管理器详细的直观功能比较请参见表1.1。
Apache的虚拟计算实验室(Virtual Computing Lab,VCL)。VCL[60,61]项目源于North Carolina 州立大学(NCSU)。研究人员在2004年为计算机实验室用户量身定制的环境。支持NCSU倡议的软件组件已宣布为开源,并由Apache基金会负责管理。
自Apache基金会成立以来,VCL的主要目标是以灵活的成本效益方式和对IT人员的最少干预下随时提供桌面(虚拟实验室)和高性能计算环境。从这个意义上说,VCL是创建了具备如下功能的首批项目之一:减少行政负担的自助服务Web门户、提前预订能力、在课堂上提供资源、在多台电脑上部署定制机器镜像、为客户提供按需集群。
总之,Apache的VCL提供了如下功能:①基于Apache/PHP的多平台控制器;②Web门户和XML-RPC接口;③VMware虚拟化管理程序的支持(ESX、ESXi和服务器);④虚拟网络;⑤虚拟集群;⑥提前预订的能力。
AppLogic。AppLogic[62]是一款商业VI管理器,它是美国California3tera公司的旗舰产品。3tera公司将其标记为网格操作系统。AppLogic提供了一个管理虚拟服务器的架构,集中管理多层Web应用。它将整个应用视为组件的集合,这些组件必须以单一实体进行管理。一些组件如防火墙、负载均衡器、Web服务器、应用服务器和数据库服务器可以设置并连接在一起。每当应用启动时,系统制造商开始装配运行所需的虚拟化基础设施。一旦应用停止,AppLogic将关掉为其创建的基础设施[63]。
AppLogic提供了动态设备添加功能,如应用的灾难恢复和电源优化[62]。这种方法的关键差异是,其额外功能是由另外一个可插拔设备实现的,而不是作为核心功能的VI管理器添加的。
总之,3tera公司的AppLogic提供了如下功能:基于Linux的控制器、CLI和GUI界面、Xen的后端、全球增值商店(Global Volume Store,GVS)存储虚拟化、虚拟网络、虚拟集群、动态资源分配、高可用性和数据保护。
Citrix Essentials。Citrix Essentials套件是一个功能完备的VI管理软件,侧重于数据中心的管理和自动化。它本质上是一个无关虚拟化管理程序(hypervisor-agnostic)的解决方案,目前支持Citrix XenServer和微软的Hyper-V[64]。
通过提供多种访问接口,它有利于与控制器进行传统交互和可编程交互。工作流程编制机制也有助于任务的自动化。
总之,Citrix Essentials提供了如下功能:基于Windows的控制器、图形界面(GUI)、命令行界面(CLI)、Web门户、XML- RPC接口、支持XenServer和Hyper-V虚拟化管理程序、Citrix的Storage Link存储虚拟化、虚拟网络、动态资源分配、三层高可用性(即虚拟机运行失败后自动重启、激活暂停的多重虚拟机和持续地运行重复的虚拟机)[58]及用Citrix的Consolidated Backup保护数据。
Enomaly公司的弹性计算平台(Elastic Computing Platform,ECP)。Enomaly ECP最完整的版本提供了建立IaaS云服务供应商需要的大多数功能。
最值得注意的是,ECP服务商版提供了一个基于Web的客户控制面板,使用户能够完全控制虚拟机的生命周期。实时执行计费模块(usage accounting),并可以通过用户浏览它。与虚拟设备交易市场的功能类似,ECP允许供应商和用户打包和交换应用。
总之,Enomaly公司的ECP提供了如下功能:基于Linux的控制器、Web门户和Web服务(REST)接口、后端Xen、Amazon EC2公共云接口、虚拟网络、虚拟集群(elasticvalet)。
Eucalyptus。Eucalyptus[39]框架是首个侧重构建IaaS云的开源项目之一。开发Eucalyptus框架的目的在于提供一个开放源码的实现,其功能几乎与Amazon的Web服务API相同。因此用户可以使用访问Amazon EC2的相同工具与Eucalyptus云交互。它也有别于其他工具本身,因为它提供了一个模拟Amazon S3的存储云API——用于存储一般用户数据和虚拟机镜像。
总之,Eucalyptus 提供了如下功能:用Web门户管理的基于Linux的控制器、与EC2兼容(SOAP、查询)和S3兼容(SOAP、REST)的命令行界面(CLI)和Web门户界面、Xen、KVM和后端VMWare、兼容Amazon EBS的虚拟存储设备、Amazon EC2公共云接口、虚拟网络。
Nimbus 3。Nimbus工具包[20]起源于Globus 框架。与其他开源VI管理器一样,Nimbus提供了大部分功能,如与EC2兼容的前端API、对Xen的支持以及Amazon EC2的后端接口。不过,它提供了一个Globus的Web服务资源框架(Web Services Resource Framework,WSRF)接口与其他开源VI管理器相区别。它还提供一个后端服务与命名的Pilot,由本地资源管理器(Local Resource Manager,LRM)如PBS和SGE管理的集群部署虚拟机。
Nimbus的核心围绕着Spring框架设计,可以很容易地扩展,从而替换掉一些内部组件,还简化了与其他系统的集成。
总之,Nimbus 提供了如下功能:基于Linux的控制器、EC2兼容(SOAP)与WSRF接口、Xen与后端KVM及通过LRM部署虚拟机的Pilot程序、Amazon EC2公共云接口、虚拟网络与一键式虚拟集群。
OpenNebula。OpenNebula是功能最丰富的开放源码VI管理器之一。OpenNebula最初用来管理本地虚拟化基础设施,但其还包括远程接口,使其可以构建公共云。总之,可以使用如下四种编程API:本地交互的XML-RPC和libvirt库[47]、供公众访问的EC2 (Query) API和OpenNebula Cloud API(OCA)[7,65]的子集。
OpenNebula的架构是模块化的,其中包括几个专用可插拔组件:核心模块编排的物理服务器及其虚拟化管理程序、存储节点与网络结构。通过可插拔的驱动程序、虚拟化管理程序、存储和网络技术、公共云的API进行交互管理操作。Scheduler模块负责分配挂起的虚拟机请求物理主机,提供动态资源分配功能。管理员可以选择不同的调度目标,如在更少的主机内包装虚拟机或者保持负载均衡。通过与Haizea租赁调度[66]整合,OpenNebula还支持提前预订和先到先处理[7]。
总之,OpenNebula 提供了如下功能:基于Linux的控制器、命令行界面(CLI)、XML-RPC、兼容EC2的Query和OCA接口、Xen、KVM和后端VMware、公共云接口(Amazon EC2和ElasticHosts)、虚拟网络、动态资源分配和提前预订。
OpenPEX。OpenPEX(Open Provisioning and EXecution Environment)是在使用提前预订作为虚拟机实例分配的主要方法的前提下构建的。在租赁谈判机制方面,它与其他的VI管理器有区别。其中包括一个双边谈判协议,允许用户和供应商通过交换信息达成协议。当原来的请求不能满足其他的VI管理器时则还盘。
总之,OpenPEX 提供了如下功能:多平台(Java)控制器、Web门户和Web服务(REST)接口、后端Citrix XenServer 、提前预订与谈判[56]。
oVirt。oVirt是一个开放源码的VI管理器,由红帽新技术团队(Red Hat’sEmergent Technology group)赞助。它提供了其他大多数VI管理器的基本特征,包括对管理物理服务器池、存储池、用户账户和虚拟机的支持。所有功能均可以通过一个Web界面[67]访问。
oVirt不仅可以管理节点,它还是一个虚拟机,提供了一个Web服务器和基于freeIPA的安全认证服务,并提供管理虚拟机镜像和将其转移到管理节点上的服务。每个管理节点libvirt与虚拟化管理程序交互。
总之,oVirt 提供了如下功能:将基于Linux的Fedora控制器打包成一个虚拟设备、Web门户界面和后端KVM。
Platform ISF。ISF(infrastructure sharing facility)是Platform Computing[68]公司提供的VI管理器。Platform Computing多年来主要通过其ISF系列产品服务于高性能计算(HPC)市场。
ISF的体系结构可分为三层。最上面的服务交付(service delivery)层包括用户界面(即自助服务门户网站和API)、分配引擎(allocation engine)提供预订和分配策略、最底层的资源集成(resource integrations)层提供与虚拟化管理程序、配置工具和其他系统(如外部公共云)交互的适配器。分配引擎还提供解决多个目标的策略,如减少能源消耗、减少故障的影响,并最大限度地提高应用的性能[44]。
ISF是建立在Platform的VM Orchestrator(VMO)上的,作为一个独立的产品,其目的是加快虚拟机交付给最终用户。它还提供了高可用性——主机失败时重新启动虚拟机,以及复制托管VMO控制器的虚拟机[69]。
总之,ISF 提供了如下功能:将基于Linux的控制器打包成一个虚拟设备、Web门户界面、动态资源分配、提前预订和高可用性。
VMWare vSphere和vCloud。vSphere是VMWare的工具套件,旨在将IT基础设施变成私有云[36,43]。与其他VI管理器相比,它的功能最为丰富,该公司的几个产品在各级架构上均提供了这些功能。
在vSphere 架构中,服务器可以运行在ESXi平台上。一台独立的服务器运行vCenter Server,这可以集中控制整个虚拟基础设施。通过vSphere Client软件,管理员连接到vCenter Server上执行各种任务。
分布式资源调度程序(Distributed Resource Scheduler,DRS)根据预定义的规则和策略分配决策。它不断地监控虚拟机的可用资源数量。如果有必要,则改变分配决策以满足虚拟机的要求。在存储虚拟化领域,vStorage VMFS是一个集群文件系统,用来将多个磁盘聚合在一个单一卷内。VMFS特别优化了存储的虚拟机镜像和虚拟磁盘。它支持的存储设备可以使用光纤通道(Fibre Channel)和iSCSI SAN。
在基本设置中,vSphere本质上是一个私人管理套件。vCloud API提供了自助服务的虚拟机配置到最终用户的功能,它可以与vCenter Server进行交互。在该配置中,服务供应商通过vSphere构建公共云。在与公共云交互方面,vSphere与vCloud API进行交互,进而使其爆发成外部云。
总之,vSphere 提供了如下功能:基于Windows的控制器(vCenter Server)、CLI、GUI、Web门户、Web服务接口、VMware ESX、后端ESXi、VMware vStorage VMFS存储虚拟化、外部云接口(VMware vCloud合作伙伴)、虚拟网络(VMWare分布式交换机)、动态资源分配(VMware DRM)、高可用性和数据保护(VMWare Consolidated Backup)。