Eucalyptus :(Elastic Utility Computing Architecture for Linking Your Programs To Useful Systems) 是一种开源的软件基础结构,用来通过计算集群或工作站群实现弹性的、实用的云计算。
Eucalyptus云计算软件,在一个平台上(分为open source版和enterprise版),提供了对这些资源的抽象。Eucalyptus的源码是公开的。Eucalyptus选择Xen和KVM作为虚拟化的管理程序。
1.与 EC2 和 S3 的接口兼容性(SOAP 接口和 REST 接口)。使用这些接口的几乎所有现有工具都将可以与基于 Eucalyptus 的云协作。
2.支持运行在 Xen hypervisor 或 KVM 之上的 VM 的运行。未来版本还有望支持其他类型的 VM,比如 VMware。
3.用来进行系统管理和用户结算的云管理工具。
4.能够将多个分别具有各自私有的内部网络地址的集群配置到一个云内。
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 实例,每个实例管理虚拟实例的实例化和终止。
一个单集群 Eucalyptus 安装的拓扑
在一个单一集群的安装中,,将至少包含两个机器:一个机器运行 CC、SC 和 CLC;另一个机器运行 NC。这种配置主要适合于试验的目的以及快速配置的目的。通过将所有东西都组合到一个机器内,还可以进一步简化,但这个机器需要非常健壮才能这样做。
一个多集群 Eucalyptus 安装的拓扑。
在多集群安装中,可以将各个组件(CC、SC、 NC 和 CLC)放置在单独的机器上。如果想要用它来执行重大的任务,那么这么做就是一种配置 Eucalyptus 云的理想方式。多集群安装还能通过选择与其上运行的控制器类型相适应的机器来显著提高性能。比如,可以选择一个具有超快 CPU 的机器来运行 CLC。多集群的结果是可用性的提高、负载和资源的跨集群分布。集群的概念类似于 Amazon EC2 内的可用性区域的概念。资源可以跨多个可用性区域分配,这样一来,一个区域内的故障不会影响到整个应用程序。