天天看點

【OpenStack】在OpenStack使用XenServer資源池淺析

在OpenStack使用XenServer資源池淺析

本blog歡迎轉發,但請保留原作者資訊:

新浪微網誌:@孔令賢HW  

Blog位址:http://blog.csdn.net/lynn_kong

内容系本人學習、研究和總結,如有雷同,實屬榮幸!

OpenStack中的Xen driver類:nova/virt/xenapi/driver.py中的XenAPIDriver類,該類繼承的ComputeDriver是所有driver的基類,是所有虛拟機相關功能集合,而XenAPIDriver實作的方法是ComputeDriver類中方法的子集。

建立資源池并添加主機

使用xenserver資源池(支援虛拟機熱遷移)前提:

1、有符合建立資源池的xenserver主機,已部署openstack(nova-compute)

2、有共享存儲

步驟:

1、在master節點(注意:此時還沒有資源池,master節點是我們預定義的某節點)上配置共享存儲為預設SR

2、配置所有的slave節點使用該預設SR,通過配置項“sr_matching_filter=default-sr:true”

3、建立host aggregate。aggregate是上層邏輯概念,不對外公開,是管理者的配置對象。aggregate最初就是為了使用xenserver資源池功能而出現,但現在可以通過給aggregate對象添加key-value對,給nova-scheduler提供一種進階排程機制。host和aggregate是多對多的關系。

nova aggregate-create <name-for-pool> <availability-zone>

上述操作隻是操作資料表。

4、為配合xenserver的資源池的使用,需要給aggregate提供兩個metadata

nova aggregate-set-metadata <aggregate-id> hypervisor_pool=true

nova aggregate-set-metadata <aggregate-id> operational_state=created

上述操作隻是操作資料表。

5、将master節點加入aggregate

nova aggregate-add-host <aggregate-id> <name-of-master-compute>

向主機組添加主機的流程如下:

【OpenStack】在OpenStack使用XenServer資源池淺析

6、加入其它slave節點

nova aggregate-add-host <aggregate-id> <compute-host-name>

slave主機加入資源池後,在每個主機上的nova-compute虛拟機會被關機,待xenserver主機完成加入池的操作後,再把nova-compute虛拟機啟動。

上述流程圖中的最後一步了解的不是很清楚,不知道為何需要在master節點執行指令。XenServer官方文檔中将一個主機加入資源池,是在預加入xenserver主機上執行(而不是在master節點執行):

xe pool-join master-address=<host1> master-username=<administrators_username> master-password=<password>

資源池建立成功後,就可以根據aggregate_metadata建立flavor,使用flavor建立的虛拟機就可以運作在XenServer資源池内的主機上,同時支援手動遷移和熱遷移等進階特性。

XenAPIDriver的初始化

所有xenserver主機加入資源池後,XenAPIDriver的初始化操作如下:

l  首先,初始化一個XenAPISession對象。在該對象中儲存了調用XenAPI的調用接口、連接配接master主機的session、xenserver主機的辨別

l  初始化VolumeOps。包含卷相關的操作。

l  初始化VMOps。包含了虛拟機相關的操作。

l  一個ResourcePool對象。該對象中包含了xenserver主機的名稱,位址,辨別以及調用nova-compute的RPC代理。

注意:第一步中的session就是後續所有操作的基礎。即虛拟機和卷相關的操作都會發送到master節點,在資源池範圍内進行處理。

 本部落格歡迎轉發,但請保留原作者(@孔令賢HW)資訊!内容系本人學習、研究和總結,如有雷同,實屬榮幸!

繼續閱讀