云平台搭建的开源架构

系统构架
Eucalyptus

Eucalyptus是一个与Amazon EC2兼容的IaaS系统。Eucalyptus包括云控制器(CLC)、Walrus、集群控制器(CC)、存储控制器(SC)和节点控制器(NC)。 CLC是整个Eucalyptu系统的核心,负责高层次的资源调度,例如向CC请求计算资源。Walrus是 一个与Amazon S3类似的存储服务,主要用于存储虚拟机映像和用户数据。CC是一个集群的前端,负责协调一个集群内的计算资源,并且管理集群内的网络流量。SC是一个与 Amazon EBS类似的存储块设备服务,可以用来存储业务数据。NC是最终的计算节点,通过调用操作系统层的虚拟化技术来启动和关闭虚拟机。在同一个集群(CC)内 的所有计算节点(NC)必须在同一个子网内。 在一个集群(CC)内通常需要部署一台存储服务器(SC),为该集群内的计算节点提供数据存储服务。

Eucalyptus 通过Agent的方式来管理计算资源。在每一个计算节点上,都需要运行一个eucalyptus-nc的服务。该服务在集群控制器(CC)上注册后,云控 制器(CLC)即可通过集群控制器(CLC)将需要运行的虚拟机映像文件(EMI)拷贝到该计算节点上运行。

Eucalyptus将虚拟 机映像文件存储在Walrus上。当用户启动一个虚拟机实例的时候,Eucalyptus首先将相应的虚拟机映像(EMI)从Walrus拷贝到将要运行 该实例的计算节点(NC)上。当用户关闭(或者是由于意外而重启)一个虚拟机实例的时候,对虚拟机所做的修改并不会被写回到Walrus上原来的虚拟机映 像(EMI)上,所有对该虚拟机的修改都会丢失。如果用户需要保存修改过的虚拟机,就需要利用工具(euca2ools)将该虚拟机实例保存为新的虚拟机 映像(EMI)。如果用户需要保存数据,则需要利用存储服务器(SC)所提供的弹性块设备来完成。

OpenStack

OpenStack是一个与Amazon EC2兼容的IaaS系统。OpenStack包括OpenStack Compute和OpenStack Object Storage两个部分。

OpenStack Compute又包含Web前端、计算服务、存储服务、身份认证服务、存储块设备(卷)服务、网络服务、任务调度等多个模块。OpenStack Compute的不同模块之间不共享任何信息,通过消息传递进行通讯。因此,不同的模块可以运行在不同的服务器上,也可以运行在同一台服务器上。

OpenStack Object Store可以利用通用服务器搭建可扩展的海量数据仓库,并且通过冗余来保证数据的安全性。同一份数据的在多台服务器上都有副本,将出现故障的服务器从集 群中撤除不会影响数据的完整性,加入新的服务器后系统会自动地在新的服务器上为相应的文件创建新的副本。从功能上讲,OpenStack Object Store同时具备Eucalyptus中的Walrus服务和弹性块设备(SC)服务。不过OpenStack Object Store不是一个文件系统,不能够保证数据的实时性。从这个方面来考虑,OpenStack Object Store更适合用于存储需要长期保存的静态数据,例如操作系统映像文件和多媒体数据。

OpenStack通过Agent的方式来管理计算资源。在每一个计算节点上,都需要运行nova-network服务和nova-compute服务。这些服务启动之后,就可以通过消息队列来与云控制器进行交互。

OpenNebula

OpenNebula 的构架包括三个部分:驱动层、核心层、工具层。驱动层直接与操作系统打交道,负责虚拟机的创建、启动和关闭,为虚拟机分配存储,监控物理机和虚拟机的运行 状况。核心层负责对虚拟机、存储设备、虚拟网络等进行管理。工具层通过命令行界面/浏览器界面方式提供用户交互接口,通过API方式提供程序调用接口。

OpenNebula 使用共享存储设备(例如NFS)来提供虚拟机映像服务,使得每一个计算节点都能够访问到相同的虚拟机映像资源。当用户需要启动或者是关闭某个虚拟机 时,OpenNebula通过SSH登陆到计算节点,在计算节点上直接运行相对应的虚拟化管理命令。这种模式也称为无代理模式,由于不需要在计算节点上安 装额外的软件(或者服务),系统的复杂度也相对降低了。

OpenQRM

OpenQRM是为了管理混合虚拟化环境而开发的一个虚拟化管理框架,包括基础层(框架层)和插件。基础层(框架)的作用是管理不同的插件,而对虚拟资源 的管理(计算资源,存储资源,映像资源)都是通过插件来实现的。OpenQRM的框架类似于Java语言中的Interface,定义了一系列虚拟机资源 生命周期管理的方法,例如创建、启动、关闭虚拟机等等。在个框架的基础上,OpenQRM针对不同的虚拟化平台(Xen、KVM)实现了不同的插件,用来 管理不同的物理和虚拟资源。当出现新的资源需要支持的时候,只需要为OpenQRM编写新的插件,就可以无缝地整合到原来的环境中去。

OpenQRM 插件也是使用无代理模式工作的。当需要管理的目标节点提供SSH登录方式时,OpenQRM插件通过SSH登陆到计算节点,在计算节点上直接运行相对应的 虚拟化管理命令。当需要管理的目标节点提供HTTP/HTTPS/XML-RPC远程调用接口时,OpenQRM插件通过目标节点所提供的远程调用接口实 现对目标平台的管理。

OpenQRM是一个虚拟化管理平台,不提供与Amazon EC2兼容的云管理接口。

XenServer

XenServer 是对Xen虚拟化技术的进一步封装,在Dom0上提供一系列命令行和远程调用接口,独立的管理软件XenCenter通过远程调用这些接口来管理多台物理 服务器。XenSever在标准Xen实现之上所实现的远程调用接口类似于其他虚拟化管理平台中所实现的Agent,因此XenServer是通过 Agent方式工作的。由于只考虑对Xen虚拟化技术的支持,XenServer的构架相对简单。

XenServer是一个虚拟化管理 平台,不提供与Amazon EC2兼容的云管理接口。管理软件XenCenter是运行在Windows操作系统上的,对于需要随时随地访问管理功能的系统管理员来说有点不便。目前 有一些第三方提供的开放源代码的基于浏览器的XenServer管理工具,但是都还处于比较早期的阶段。

Oracle VM

Oracle VM包括Oracle VM Server和Oracle VM Manager两个部分。Oracle VM Server在支持Xen的Oracle Linux上(Dom0)运行一个与Xen交互的Agent,该Agent为Oracle VM Manager提供了远程调用接口。Oracle VM Manager通过一个Java应用程序来对多台Oracle VM Server上的虚拟资源进行管理和调度,同时提供基于浏览器的管理界面。由于只考虑对Xen虚拟化技术的支持,Oracle VM Server / Manager的构架相对简单。

Oracle VM是一个虚拟化管理平台,不提供与Amazon EC2兼容的云管理接口。

值 得注意的是,Oracle VM Manager还通过Web Service的方式提供了虚拟机软件生命周期管理的所有接口,使得用户可以自己使用不同的编程语言来调用这些接口来开发自己的虚拟化管理平台。不过由于 Oracle在开放源代码方面的负面形象,似乎没有看到有这方面的尝试。

CloudStack

CloudStack 与OpenQRM类似,CloudStack采用了“框架 + 插件”的系统构架,通过不同的插件来提供对不同虚拟化技术的支持。对于标准的Xen / KVM计算节点,CloudStack需要在计算节点上安装Agent与控制节点进行交互;对于XenServer / VMWare计算节点,CloudStack通过XenServer / VMWare所提供的XML-RPC远程调用接口与计算节点进行交互。

ConVirt

本身是一个虚拟化管理平台,但是它通过CloudBridge提供了与Amazon EC2相兼容的云管理接口,对外提供IaaS服务。
ConVirt ConVirt是一个虚拟化管理平台,使用无代理模式工作。当需要管理的目标节点提供SSH登录方式时,ConVirt通过SSH登陆到计算节点,在计 算节点上直接运行相对应的虚拟化管 理命令。当需要管理的目标节点提供HTTP/HTTPS/XML-RPC远程调用接口时,ConVirt插件通过目标节点所提供的远程调用接口实现对目标平台的管理。

是 一个虚拟化管理平台,不提供与Amazon EC2兼容的云管理接口。但是ConVirt 3.0提供了与Amazon EC2 / Eucalyptus的用户接口,使得ConVirt用户能够在同一个Web 管理界面下同时管理Amazon EC2 / Eucalyptus提供的虚拟计算资源。