【Nova】nova-scheduler调度过程分析

本文分析了Nova的调度器nova-scheduler的角色,它在大规模部署中负责选择虚拟机实例的放置位置,以实现负载均衡。重点讨论了FilterScheduler,包括其驱动的实现方法和在run_instance流程中的工作细节,如如何根据request_spec和filter_properties进行过滤和权重计算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

nova-scheduler是Nova的调度器,主要作用是通过调度策略选择虚拟机实例的落点。当大规模部署时,我们需要通过定制调度策略,去满足我们的特殊需求,最典型的就是负载均衡。


nova-scheduler同nova-conductor一样,作为rpcserver对外提供rpcapi。

Icehouse版本的nova-scheduler对外暴露的rpcapi较少:

1.select_destinations 返回指定要求和过滤条件的节点列表

2.run_instance 根据请求条件和过滤属性选取出合适的节点,然后通过rpc调用节点nova-compute的run_instance api

3. prep_resize 对虚拟机实例进行resize前要先进行调度,然后通过rpc调用节点nova-compute的prep_resize  api


下面分析一下run_instance的流程:

1.nova-scheduler有很多驱动,有随机节点选择调度器ChanceScheduler、过滤称重调度器FilterScheduler、带缓存调度器CachingScheduler(FilterScheduler的子类,缓存节点信息,可以加速过滤称重过程),默认使用的驱动是FilterScheduler

2.每种驱动都必须实现3个方法schedule_run_instance、select_destinations和run_periodic_tasks(可选)

3.每当nova-scheduler接收到run_instance请求时,就会调用对应驱动的schedule_run_instance方法

4.在FilterScheduler的schedule_run_instance中,会先根据request_spec请求规格和filter_properties进行过滤和称重,request_spec里面包含的信息有“要创建的实例数量“、“实例的块设备信息包括镜像id”、“使用的镜像信息”、“实例类型包括flavor信息”,“元数据”、“安全组”等,filter_properties里面则主要包括“实例的flavor信息”,下面使用代码进行说明

# 实例组: OpenStack支持对实例进行分组,这些分组有一些策略,譬如我现在要使用OpenStack的多个实例搭建一个分布式存储系统,
#         为了保证这个系统的高可用性,我希望让这些实例落在不同的主机上,那么就可以借助实例组实现
# 该方法用于判断过滤属性中是否有实例组相关参数,如果有就更新过滤属性中的属性,并返回True;反之返回False
def _setup_instance_group(context, filter_properties):
    update_group_hosts = False
    scheduler_hints = filter_properties.get('scheduler_hints') or {}
    # 获取过滤属性中是否有group参数,可以是uuid也可以是实例组名称
    group_hint = scheduler_hints.get('group', None)
    if group_hint:
        # 获取数据库中的InstanceGroup对象
        group = instance_group_obj.InstanceGroup.get_by_hint(context,
                    group_hint)
        policies = set(('anti-affinity', 'affinity'))
        # 如果实例组的策略中有anti-affinity或者affinity,那么这就会成为
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值