Openstack 管理 VMware ESX/ESXi (1) 架构

关于OpenStack的研究,大家基本都是集中于KVM,XEN这类开源虚拟化技术,对VMware的研究比较少。我们公司(网新恒天)由于之前采用的虚拟化技术是VMware的,所以在OpenStack研究开始之初就以VMware为虚拟化平台,希望能用OpenStack将VMware管理起来,经过4个月左右的研究开发,已经实现这个目标。现在我们决定将自己的研究成果分享出来,希望能和大家一起交流。

本文主要讨论OpenStack管理 VMware ESX/ESXi 时的部署架构。

因为VMware vSphere ESX/ESXi 的特殊性,导致Openstack管理ESX/ESXi时的部署架构会与KVM、XEN等不一样,所以刚开始安装的时候会有这样的疑问:nova-compute 装哪里,怎么装呢? 下面就来说明下这个问题。
因为VMware ESX/ESXi 是非常封闭的,ssh上去之后,会发现之个系统连一些常用的命令都没有,更不用说python、gcc了,是一个非常精简的系统,所以在ESX/ESXi上直接安装nova-compute基本是不可能的。要单独找一台计算机(物理机/虚拟机),在上面安装ubuntu,然后再在这个上面安装nova-compute,让nova-compute来通过网络的方式来连接ESX/ESXi。ESX/ESXi对外提供web services(SOAP实现)编程接口,nova-compute就是通过调用这些接口,将OpenStack命令转化成web services请求来实现对ESX/ESXi的控制。
概念架构图如下所示:

OpenStack ESX/ESXi 架构概念图

OpenStack 管理VMware 架构概念图

在实际部署中,我们这样来做,用虚拟机来做nova-compute结点,并且将这个虚拟机建在它上面的nova-comppute所连接的ESX/ESXi上,因为nova-compute结点只负责和ESX/ESXi通信,虚拟化工作由ESX/ESXi来承担,nova-compute结点的负载非常小,对原有ESX/ESXi影响也非常小,实事证明这种做法是完全可行的。(我们实验用的虚拟机配置1vCPU,2G内存,毫无压力)

OpenStack VMware ESXi 部署架构

OpenStack VMware ESXi 部署架构

OpenStack官方关于VMware ESX/ESXi Server Support的图如下所示,比较详细。nova-compute通过SOAP使ESX/ESXi执行虚拟机相关操作,如创建、重启、删除,快照等;在创建虚拟的时候,能过glance取镜像传到ESX/ESXi上,在打快照的时候,先在ESX/ESXi执行快照命令,然后将生成的快照传到glance上。可以看到,OpenStack类似一个中转层代理,在两边分别实现OpenStack和ESX/ESXi的接口,然后将两者连接起来。

VMware ESX/ESXi Server Support 官方示意图

VMware ESX/ESXi Server Support 官方示意图

本文同步发表在网新恒天私有云团队博客,谢谢关注,转载请注明出处。

2 thoughts on “Openstack 管理 VMware ESX/ESXi (1) 架构

  1. http://www.ask.com/

    Thanks for the marvelous posting! I actually enjoyed reading it, you might be a great author.I
    will be sure to bookmark your blog and will eventually come back sometime soon. I
    want to encourage continue your great work, have a nice weekend!

    Check out my site – internet Marketers Nowadays (http://www.ask.com/)

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>