4.6 异构适配多种Hypervisor类型
当前存在有多种Hypervisor类型(Xen、KVM、Ironic等),对于用户来说,单一采用某种虚拟化类型已经不能满足需求,同一个用户可能在不同的场景使用不同的虚拟化类型,甚至在一种场景中使用多种虚拟化类型,这就涉及在同一套业务发放管理平台中支持接入多种类型的Hypervisor。这样不但可以保护用户当前已有的虚拟化技术的平台继续运行,也可以通过构建统一管理的异构资源池,达到业务类型通过不同资源池隔离,而配置管理统一的目的。
由于OpenStack的架构支持不同Hypervisor类型的虚拟机/物理机同时发放。因此可以通过配置实现在同一个OpenStack中进行各个不同类型的Hypervisor的虚拟机/物理机混合发放。其也可以用于异构不同虚拟化厂商的虚拟化软件,前提是该虚拟化软件需要在OpenStack中有对应的Driver。
对应每一种虚拟化类型,需要在OpenStack启动独立的一组nova-compute进程进行管理对接。如图4-15所示,在每个nova-compute中配置对应虚拟化设备的南向驱动,用于对接指定的虚拟化类型。
图4-15 各种类型Hypervisor的接入方法
1.异构资源池创建
在OpenStack中注册不同类型的nova-compute主机用于对接不同类型的Hypervisor,并为这些不同类型的主机创建不同的HostAggregate,并分别将主机加入到对应的HostAggregate中,通过设置HostAggregate的metadata(Key, Value)来标记该HostAggregate,例如设置hypervisor_type=xen。
2. Flavor创建
在OpenStack中为不同的Hypervisor类型创建不同的Flavor,并在Flavor中加入指定的extra_specs,该参数的配置需要和Flavor对应类型的HostAggregate的Metadata(Key, Value)保持一致,以确保发放时能够调度到指定HostAggregate。
3.过滤器配置
开启Nova scheduler的AggregateInstanceExtra SpecsFilter过滤器,这样在创建虚拟机调度时会按照Flavor的extra_specs属性分配满足要求的主机组。
4.镜像设置
每个不同的虚拟化类型需要使用不同的镜像,通过在镜像中加入Metadata信息,来区分该镜像属于哪种虚拟化类型,再分发到相应HostAggregate进行虚拟机创建。
虚拟机发放时,用户选择特定的Flavor,意味着选择了相应的Hypervisor类型。也就只能选择对应的镜像和计算资源。nova-scheduler会将创建虚拟机请求调度到指定的nova-compute,再由各个不同Hypervisor类型的Driver进行创建虚拟机处理。
目前OpenStack能够接入的Hypervisor类型除了KVM之外,还有VMware、XenServer、Baremetal和Docker等。