如何实现nova

91次阅读
没有评论

共计 1285 个字符,预计需要花费 4 分钟才能阅读完成。

如何实现 nova-scheduler 模块调度,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面丸趣 TV 小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

openstack 在创建虚拟机或进行虚拟机的冷迁移时根据在 nova.conf 文件中 scheduler_default_filters 和 scheduler_available_filters 配置的过滤器,

对主机进行筛选,选择合适的目的主机。

下面根据 nova M 版源码分析调度不同过滤器的。

一、conductor 服务通过 rpc 调用 scheduler 服务 SchedulerManager 类的 select_destinations,由此开始进入进入主机过滤阶段,

        此阶段主要目的是调用事先在 nova.conf 文件中配置的过滤器,选择合适的计算节点。

文件 nova/scheduler/manager.py

104 行,self.driver 实际是在 nova.conf 文件中配置的 FileterScheduler

二、nova/scheduler/filter_scheduler.py 文件

52 行,num_instances 是要选择的计算节点数。

53 行,self._schedule 是实际的调度函数,在此函数中调度各个过滤器的函数。

三、_schedule 函数

94 行,加载 json 文件可以在 json 文件里配置过滤规则,现在 m 版 json 文件没起作用。

104 行,在过滤之前首先要从数据库拿到所有计算节点的的当前状态。

112 行,进行主机过滤

120 行,拿到过滤的主机计算权重,并返回根据权重排序的列表。

四、nova/scheduler/host_manager.py 文件

get_filtered_host 函数中参数 filter_class_names 传进来的值是 None,进入 517 分支

517 行,filters 是所有过滤器类名字的列表,由 self._choose_host_filters 函数返回

_choose_host_filters(),函数根据 nova.conf 文件中的 scheduler_default_filters 和 scheduler_available_filters 挑选出要使用的过滤器

self._load_filters() 加载 nova.conf 文件中的 scheduler_default_filters 项,默认在 nova/scheduler/filters 下的全部过滤器都打开。

545 行,调用 nova/filters.py 文件中 BaseFilterHandler::get_filtered_objects,参数 filters 是要使用的过滤器类列表,hosts 是所有的计算节点。

五、nova/filters.py 文件

81 行,循环调用过滤器

85 行,调用过滤器类的 filter_all 方法,对主机进行筛选,以 AvailabilityZoneFilter 类说明调用关系

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注丸趣 TV 行业资讯频道,感谢您对丸趣 TV 的支持。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-16发表,共计1285字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)