在OpenStack环境中,计算服务通过API服务器来控制虚拟机管理程序,它具备一个抽象层,可以在部署时选择一种虚拟化技术来创建虚拟机,向用户提供云服务。OpenStack可用的虚拟化技术列举如下。
基于内核的虚拟机,是通用的开放虚拟化技术,也是OpenStack用户使用较多的虚拟化即使,它支持OpenStack的所有特性。
Xen是部署快速、安全、开源的虚拟化软件技术,可使多个同意的操作系统或不同操作系统的虚拟机运行在同一主机上。Xen技术主要包括XenServer(服务器虚拟化平台)、Xen Cloud Olatform(XCP,云基础架构)、XenAPI(管理XenServer和XCP的API程序)、XAPI(Xenserver和XCP的主守护进程,可与XenAPI直接通信)、基于Libvirt的Xen。 OpenStack 通过XenAPI支持XenServer和XCP两种虚拟化技术。不过,在RHEL等平台上,OpenStack使用的是基于Libvirt的Xen。
3.容器
容器是在单一Linux主机上提供多个隔离的Linux环境的操作系统级虚拟化技术。不像基于虚拟化管理程序的传统虚拟化技术,容器并不需要运行专用的客户操作系统。目前容器有以下两种技术。
(1) Linux容器(Linux Container,LXC):提供了在单一可控主机节点上支持多个相互隔离的服务器容器同时执行的机制。
(2)Docker: 一个开源的应用容器引擎,让开发者可以把应用以及依赖包打包到一个可移植的容器中,然后发布到任何流行的Linux平台上。利用Docker也可以实现虚拟化,容器完全使用沙箱机制,相互之间不会有任何的接口。
Docker的目的是京可能减少容器中运行的程序,减少到只运行单个程序,并且通过Dokcer来管理这个程序。LXC可以快速兼容所有的应用程序和工具,以及任意管理和编制层次,来替代虚拟机。
虚拟化管理程序提供更好的进程隔离,呈现一个完全的系统。LXC/Docker除了一些基本隔离,并未提供足够的虚拟化管理功能,缺乏必要的安全机制。基于容器的方案无法运行与主机内核不同的其他内核,也无法运行一个完全不同的操作系统。目前OpenStack社区对容器的驱动支持还不如虚拟化管理程序。在OpenStack项目中,LXC属于计算服务项目Nova,通过调度Libvirt来实现。Docker驱动是一种新加入的虚拟化管理程序的驱动,目前无法替代虚拟化管理程序。
-V
Hyper-V是微软推出的企业级虚拟化解决方案。Hyper-V的设计借鉴了Xen,管理程序采用微内核的架构,兼顾了安全性和性能的要求。Hyper-V作为一种免费的虚拟化方案,在OpenStack中得到了很多支持。
ESXi
VMware提供业界领先前可靠的服务器虚拟化平台和软件定义计算产品,其中ESXi虚拟化平台用于创建和运行虚拟机及虚拟设备。在OpenStack中它也得到了支持,如果没有Vcenter和企业级许可,一些API的使用会受到限制。
与Ironic
有些云平台除了提供虚拟化和虚拟机服务,还提供传统的主机服务。在OpenStack中可以将Baremetal(裸金属)与其他部署有虚拟化管理程序的节点通过不同的计算池(可用区域,Availabity Zone)一起管理。
Baremetal是计算服务的后端驱动,与Libvirt驱动、XenAPI驱动、VMware驱动一样,只不过它是用来管理没有虚拟化的硬件。主要通过PXE和IPMI进行控制管理。
现在Baremetal已用Ironic所替代,Nova管理的是虚拟机的生命周期,而Ironic管理的是主机的生命周期。Ironic提供了一系列管理主机的API接口,可以对裸金属的操作系统的主机进行管理,从主机上架安装操作系统到主机下架维修,可以像管理虚拟机一样地管理主机,创建一个Nova计算物理节点,只需告诉Ironic,然后自动地从镜像模板中加载操作系统到nova-compite安装完成即可。Ironic解决主机的添加、删除、电源管理、操作系统部署等问题,目标是成为主机管理的成熟解决方案,让OpenStack不仅可以在软件层面解决云计算问题,而且供应商可以对应的服务器开发Ironic插件。