HenryNg 2015-01-23
OpenStack 4 岁多啦,每个新版本都能实现一些需求和解决一些问题。其中被企业用户问的最多的一个问题是:同一个 OpenStack 集群能同时支持多种虚拟化技术么(Mutil-Hypervisor)?
答案当然是 Yes!在说明如何配置 Mutil-Hypervisor 前,我们需要了解什么是 Mutil-Hypervisor。
Mutil-Hypervirsor 简介
对很多用户来说,仅采用一种虚拟化技术难以满足他们的需求,所以用户可能会同时采用其它虚拟化技术。比如:1.用户不想被某个虚拟化厂商绑定限制;2. 某些虚拟化产品要求高额的 License,无疑加重了用户的财政开销;3.单个虚拟化产品的功能不满足用户所有的需求。随着虚拟化技术越来越成熟,Mutil-Hypervisor 的需求场景变得越来越常见,但是往 OpenStack 集群增添其它虚拟化技术前,需要慎重全面的考虑它带来的困难及更为复杂的架构。
Openstack 设计之初,重点支持的是 Qemu-Kvm 虚拟化平台。但是大量的企业已经采用了其它的虚拟化平台,比如:Xen,ESXI 等。并且企业不愿意去更改已有的 IT 架构设施,因此 OpenStack 需要支持 Mutil-Hypervirsor。
OpenStack 支持哪些虚拟化平台
OpenStack nova-compute 支持多种虚拟化平台,如下所示:
关于更多 Hypervisor 详情,请参见 http://wiki.openstack.org/HypervisorSupportMatrix
OpenStack 配置 Mutil-Hypervisor
我们以 VMware ESXI Hypervisor 为例,阐述如何配置 OpenStack 使之在采用 KVM Hypervisor 的场景下再支持 VMware ESXI Hypervisor。在配置 Mutil-Hypervisor 环境前,我们假定您已经部署了一套采用 KVM 的 OpenStack 集群(Havana及以后版本) 和 一套管理任意数量 ESXI 主机的 Vcenter 5.5 集群。OpenStack 支持 VMware vSphere 系列产品,并且能够使用它的一些高级功能,比如:vMotion, 高可用,动态资源调度。下为 Mutil-Hypervisor 的架构图:
从上图可知:VMware vCentor 并不能被直接添加到 openstack 集群中,我们需要新增一个 compute-node 节点,通过 compute-node 节点管理 vCentor 节点。一个 nova-compute 只能管理一个 vCentor 集群,我们可以往单个 vCentor 添加任意数量的 ESXI host,如果你想管理两个不同的 vCentor 集群,你需要两个 nova-compute 节点,分别管理对于的 vCentor 集群。
注:
前提和局限
配置 Openstack Mutil-Hypervisor
1.计算节点(novavmware1)安装 nova-compute
“apt-get install nova-compute nova-compute-vmware python-suds”
2.配置计算节点novavmware nova.conf文件
[DEFAULT] compute_driver=vmwareapi.VMwareVCDriver [libvirt] libvirt_type=vmwareapi [vmware] host_ip= host_username= host_password= cluster_name= datastore_regex= wsdl_location=file:///vmware-sdk/SDK/vsphere-ws/wsdl/vim25/vimService.wsdl #(optional) |
3.完成 nova.conf 里 vnc、AMQP 等配置项
4.计算节点novavmware1安装 nova-network
“apt-get install nova-network nova-api-metadata”
5.制作 vmdk 镜像,并上传至 glance
$ qemu-img convert -f qcow2 /Downloads/ubuntu.img -O vmdk ubuntu.vmdk $ glance image-create –name ubuntu –is-public=True –container-format=bare –disk-format=vmdk –property vmware-disktype=”sparse” –property vmware-adaptertype=”lsiLogic” –property Hypervisor_type=”vmware” < ubuntu.vmdk