定义
Eucalyptus云计算软件,在一个平台上(分为open source版和enterprise版),提供了对这些资源的抽象。Eucalyptus的源码是公开的。并且有提供给CentOS 5,Debian squeeze,OpenSUSE 11,Fedora 12的软件包。
Eucalyptus选择Xen和KVM作为虚拟化的管理程序。目前版本是2.0.3。Eucalyptus的enterprise版已经对vSphere ESX/ESXi提供了支持。
Eucalyptus组件:在逻辑上,Eucalyptus云包括4个组件:存储控制器(walrus)、云控制器(简称CLC或者“cloud”)、集群控制器(cc)以及节点控制器(nc)。客户端依赖于解决方案,但可能以浏览器脚本、一个用户空间应用程序、或者甚至是一个内核模块的形式出现。云控制器是从客户端进入云的接口,并为云提供逻辑决定。云控制执行对客户端进行认证的服务,并将客户端的请求转化为事务。集群控制器是一个节点控制器集合。它负责状态信息并与所提供的虚拟机进行交互。可是,节点自身是通过管理程序(Xen或者KVM)来与在线以及离线虚拟机进行交互的。一个节点控制器在一个单独的机器上是作为一个独立的实例存在的。但是,多个节点控制器组成了特定的云。
架构如下图:
eucalyptus由五个部分组成
Eucalyptus 包含五个主要组件,它们能相互协作共同提供所需的云服务。这些组件使用具有 WS-Security 的 SOAP 消息传递安全地相互通信。
Cloud Controller (CLC)在 Eucalyptus 云内,这是主要的控制器组件,负责管理整个系统。它是所有用户和管理员进入 Eucalyptus 云的主要入口。所有客户机通过基于 SOAP 或 REST 的 API 只与 CLC 通信。由 CLC 负责将请求传递给正确的组件、收集它们并将来自这些组件的响应发送回至该客户机。这是 Eucalyptus 云的对外 “窗口”。
Cluster Controller (CC)Eucalyptus 内的这个控制器组件负责管理整个虚拟实例网络。请求通过基于 SOAP 或 REST 的接口被送至 CC。CC 维护有关运行在系统内的 Node Controller 的全部信息,并负责控制这些实例的生命周期。它将开启虚拟实例的请求路由到具有可用资源的 Node Controller。
Node Controller (NC)它控制主机操作系统及相应的 hypervisor(Xen 或最近的 KVM,很快就会支持 VMWare)。必须在托管了实际的虚拟实例(根据来自 CC 的请求实例化)的每个机器上运行 NC 的一个实例。
Walrus (W)这个控制器组件管理对 Eucalyptus 内的存储服务的访问。请求通过基于 SOAP 或 REST 的接口传递至 Walrus。
Storage Controller (SC)Eucalyptus 内的这个存储服务实现 Amazon 的 S3 接口。SC 与 Walrus 联合工作,用于存储和访问虚拟机映像、内核映像、RAM 磁盘映像和用户数据。其中,VM 映像可以是公共的,也可以是私有的,并最初以压缩和加密的格式存储。这些映像只有在某个节点需要启动一个新的实例并请求访问此映像时才会被解密。
一个 Eucalyptus 云安装可以聚合和管理来自一个或多个集群的资源。一个集群 是连接到相同 LAN 的一组机器。在一个集群中,可以有一个或多个 NC 实例,每个实例管理虚拟实例的实例化和终止。
在一个单一集群的安装中,如图 3 所示,将至少包含两个机器:一个机器运行 CC、SC 和 CLC;另一个机器运行 NC。这种配置主要适合于试验的目的以及快速配置的目的。通过将所有东西都组合到一个机器内,还可以进一步简化,但这个机器需要非常健壮才能这样做。
一个单集群 Eucalyptus 安装的拓扑
在多集群安装中,可以将各个组件(CC、SC、 NC 和 CLC)放置在单独的机器上。如果想要用它来执行重大的任务,那么这么做就是一种配置 Eucalyptus 云的理想方式。多集群安装还能通过选择与其上运行的控制器类型相适应的机器来显著提高性能。比如,可以选择一个具有超快 CPU 的机器来运行 CLC。多集群的结果是可用性的提高、负载和资源的跨集群分布。集群的概念类似于 Amazon EC2 内的可用性区域的概念。资源可以跨多个可用性区域分配,这样一来,一个区域内的故障不会影响到整个应用程序。
一个多集群 Eucalyptus 安装的拓扑
1.与 EC2 和 S3 的接口兼容性(SOAP 接口和 REST 接口)。使用这些接口的几乎所有现有工具都将可以与基于 Eucalyptus 的云协作。
2.支持运行在 Xen hypervisor 或 KVM 之上的 VM 的运行。未来版本还有望支持其他类型的 VM,比如 VMware。
3.用来进行系统管理和用户结算的云管理工具。
4.能够将多个分别具有各自私有的内部网络地址的集群配置到一个云内。
Eucalyptus包含的软件包,根据其组件进行相应地命名:eucalyptus云控制器(eucalyptus-cloud)、eucalyptus控制器(eucalyptus-controller)以及节点控制器(eucalyptus-nc)。在这篇文章中,使用Ubuntu 9.04系统。安装的先决条件是在所有的节点上都配置一个一致的网络时间协议(NTP),并在节点控制器之间进行桥接配置。进行桥接的步骤超过了这篇文章的范畴,但Ubuntu提供了相应的文档。安装的第一步是下载Eucalyptus(32位或者64位)。
在下载完程序之后,转到下载到的目录(在这个例子中,使用/tmp)。然后在每一台组成云控制器、集群控制器以及节点控制器的机器上执行下述命令:
root@ubuntu:/tmp/eucalyptus-1.5.1-ubuntu-i386#
tar zxvf eucalyptus-1.5.1-*.tar.gzroot@ubuntu:/tmp/eucalyptus-1.5.1-ubuntu-i386#
cd eucalyptus-1.5.1-*root@ubuntu:/tmp/eucalyptus-1.5.1-ubuntu-i386#
echo deb file://${PWD} ./ >> /etc/apt/sources.listroot@ubuntu:/tmp/eucalyptus-1.5.1-ubuntu-i386#
apt-get update
apt-get update命令会对平台所需的先决条件进行安装,其中开放的Java框架占据了下载量的很大一部分。apt-get将需要执行相当长的一段时间。
对每一个组件,依赖于角色,会各自安装自己的软件包。
在云控制器上:
root@ubuntu:/tmp/eucalyptus-1.5.1-ubuntu-i386# aptitude install eucalyptus-cloud
在控制器上:
root@ubuntu:/tmp/eucalyptus-1.5.1-ubuntu-i386# aptitude install eucalyptus-cc
以及最后在节点控制器上:
root@ubuntu:/tmp/eucalyptus-1.5.1-ubuntu-i386# aptitude install eucalyptus-nc
集群现在已经建立起来。可以在合适的系统上,通过下述命令来启动服务:
/etc/init.d/eucalyptus-cloud
/etc/init.d/ecualyptus-cc
/etc/init.d/eucalyptus-nc