在OpenStack使用XenServer资源池浅析

OpenStack使用XenServer资源池浅析

 

 本博客欢迎转发,但请保留原作者(@孔令贤HW)信息!内容系本人学习、研究和总结,如有雷同,实属荣幸!

OpenStack中的Xen driver类:nova/virt/xenapi/driver.py中的XenAPIDriver类,该类继承的ComputeDriver是所有driver的基类,是所有虚拟机相关功能集合,而XenAPIDriver实现的方法是ComputeDriver类中方法的子集。

创建资源池并添加主机

使用xenserver资源池(支持虚拟机热迁移)前提:
1
、有符合创建资源池的xenserver主机,已部署openstacknova-compute
2
、有共享存储

步骤:
1
、在master节点(注意:此时还没有资源池,master节点是我们预定义的某节点)上配置共享存储为默认SR
2
、配置所有的slave节点使用该默认SR,通过配置项“sr_matching_filter=default-sr:true

3
、创建host aggregateaggregate是上层逻辑概念,不对外公开,是管理员的配置对象。aggregate最初就是为了使用xenserver资源池功能而出现,但现在可以通过给aggregate对象添加key-value对,给nova-scheduler提供一种高级调度机制。hostaggregate是多对多的关系。
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使用XenServer资源池浅析_第1张图片
 
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主机的sessionxenserver主机的标识

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

l  初始化VMOps。包含了虚拟机相关的操作。

l  一个ResourcePool对象。该对象中包含了xenserver主机的名称,地址,标识以及调用nova-computeRPC代理。

注意:第一步中的session就是后续所有操作的基础。即虚拟机和卷相关的操作都会发送到master节点,在资源池范围内进行处理。

本博客欢迎转发,但请保留原作者(@孔令贤HW)信息!内容系本人学习、研究和总结,如有雷同,实属荣幸!

你可能感兴趣的:(openstack,nova,aggregate,xenserver)