前言
本文是对openstack对接vmware的浅析,所以本文重点是以下两点:
- 先了解它的整体架构,搞清楚为什么要用这样的架构;
- 然后再了解架构中的各个组件,组件提供的主要功能与各个组件之间的交互
整体架构
先上图,了解下openstack结合VMware的整体架构。
工作原理和流程:
虚机如何启动?
前端BC-OP或者Horizon发送http请求给Rest api,Nova api 通过RPC Call(Rabbitmq)请求scheduler选择合适的nova-compute,到此为止,与Openstack正常的流程都是一样的,对于kvm来说,直接在compute node起虚机就可以了,因为本文重点是VMware所以流程就写的比较简单,对于对接了VMware那就要继续往下看。
nova-scheduler可调度的nova-compute可能有多个,每个compute对应的是vcenter上的一个集群(Cluster)。
nova-compute需在配置文件中指定的底层driver是VMware diriver,通过Vmware driver与管理ESX主机集群的Vcenter Apis交互,然后Vcenter会选择集群中合适的ESX主机,在内部使用vcenter DRS来起虚机。
通过Openstack启动虚机,虚机在Vcenter上会呈现出来,并且可以支持VMware的高级功能,另外,在horizon或者OP页面也会呈现,能够像其他openstack的虚拟机一样管理,但是可能会受到部分VMware的限制(如ssh keys等)。
镜像如何获取?
和libvirt driver一样,VMware driver也会去和glance 交互,如图虚线从后端复制vmdk镜像到启动虚机的datastore中去,同时会缓存下来。
云硬盘cinder如何管理?
与起虚机原理一样,cinder后端指定为VMware,使用VMware的dirver去创建卷,cinder volume这个其实就是封装了一层, 最终都是调用vcenter的存储管理的功能。
总结:
1.对于终端用户OP或者Horizon其实完全感知不到kvm虚机和VMware虚机有和不同的,因为都是通过Openstack去管理底层的虚拟机,而前端都是去调用Openstack的Api。
2.Openstack作为管理平台,只能管理到nova-compute一层,即知道在哪一个cluster,对于ESX层面以下,Openstack是管理不到的,都交给了Vcenter去管理。换个角度想,虚拟机在集群内的变动,对于openstack的管理是完全不会有影响的。
名词解释
Vcenter
统一管理数据中心的所有主机(ESX)和虚拟机等资源。
ESXI(ESX)主机
和KVM主机类似,使用虚拟化软件ESX或ESXI运行虚拟机的计算机,为虚机提供cpu和内存资源,同时为虚拟机
提供访问存储资源和网络连接的能力,ESX是收费的。
vSphere
VMware vSphere 是VMware 的一个虚拟化产品,是整体解决方案。
Datastore
共享数据存储,用于保存虚拟机文件和镜像文件等文件,挂载给所有的ESX主机使用。
其他组件
其他的都是openstack的组件不是本文重点就不再赘述。
参考自Openstack官方文档:
http://docs.openstack.org/kilo/config-reference/content/vmware.html
遇到的VMware相关的问题:
1.在测试过程中,glance 上传镜像慢并且超时。
原因:是Vcenter版本5.1版本太低导致,升级Vcenter版本问题解决。
2.创建的flavor CPU数量如果不是2的次方,虚机内核启动不正常。
原因:VMware的虚机默认是开启numa架构(CPU访问各自的存储器),所以对虚拟cpu格式有限制。
可以ESC进入虚拟机,关闭启用numa。
3.虚拟机通过VCenter迁移后,Openstack无法管理虚拟机
原因:正如上面架构,Openstack管理到nova-compute,至于Vcenter下面的操作感知不到,理论上是不会受影响的