前言
本文是對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下面的操作感知不到,理論上是不會受影響的