openstack调度器

本文详细介绍了OpenStack的调度策略,包括Filter调度器的主机过滤和权重计算机制,以及Chance调度器的随机选择。重点讲解了各过滤器的作用和权重计算器如RAMWeigher和DiskWeigher的工作原理。
摘要由CSDN通过智能技术生成

Openstack 的调度策略主要是由Filter chance实现的。

一、Filter调度器(过滤调度器)据指定的过滤条件以及权重选择最佳的计算节点,实现基于主机过滤(filtering)和权重计算(weight)的调度算法。

Nova.conf 中的 scheduler_available_filters 选项用于配置scheduler可用的过滤器,默认是所有nova自带的filter都可以用于过滤操作

scheduler_available_filters = nova.scheduler.filters.all_filters

另外还有一个选项 scheduler_default_filters,用于指定 nova-scheduler真正使用的filter,默认值如下

scheduler_default_filters = RetryFilter, AvailabilityZoneFilter, RamFilter, DiskFilter, ComputeFilter, ComputeCapabilitiesFilter, ImagePropertiesFilter, ServerGroupAntiAffinityFilter, ServerGroupAffinityFilter

Filter scheduler 将按照列表中的顺序依次过滤

  • RetryFilter      作用是刷掉之前已经调度过的节点。
  • CoreFilter       核心过滤器,根据可用cpu核心来调度虚拟机创建,将不能满足实例类型VCPU需求的计算节点过滤掉,vcpu允许超量。通过配置文件【cpu_allocation_ratio=<None>】来调节。默认值是16
  • DiskFilter        硬盘调度器,根据磁盘空间来调度虚拟机实例,将不能满足磁盘需求的计算节点过滤掉。此爬满允许超量。通过配置文件【disk_allocation_ratio=<None>】来调节。# 默认值是1.0
  • RamFilter        内存过滤器,根据可用内存调度虚拟机创建,将不能满足实例类型内存需求的计算节点过滤掉,为提高系统资源利用率,在计算节点的可用内存时允许超过实际内存大小,通过nova.conf配置文件中【ram_allocation_ratio=<None> 】来控制。 # 默认值是1.5   其含义是:如果计算节点的内存有 10GB,OpenStack 则会认为它有 15GB(10*1.5)的内存。

  • AvailabilityZoneFilter          为提高容灾性和提供隔离服务,可以将计算节点划分到不同的Availability Zone中。
  • ComputeFilter                 计算过滤器,保证只有 nova-compute 服务正常工作的计算节点才能够被 nova-scheduler调度。是必选的过滤器。
  • ComputeCapabilitiesFilter      算能力过滤器,根据计算节点的特性来筛选。
  • ImagePropertiesFilter          镜像过滤器,根据所选image的属性来筛选匹配的计算节点。跟flavor类image也有metadata用于指定其属性。
  • ServerGroupAntiAffinityFilter     可以尽量将 Instance(实例) 分散部署到不同的计算节点上。
  • ServerGroupAffinityFilter      会尽量将 instance 部署到同一个计算节点上。

权重计算:在配置文件nova.scheduler.weights.all_weighers 中,默认的基于scheduler_weight_classes 类

weight_classes=nova.scheduler.weights.all_weighers

  • RAMWeigher:    通过可用的RAM大小决定计算节点。
  • DiskWeigher:     通过可用的磁盘大小进行权值分配,最大的优先级最高。
  • MetricsWeigher:通过主机的不同参数度量决定主机的权值。在配置文件中指定相关参数:metrics_weight_setting = name1=1.0,name2=-1.0
  • IoOpsWeigher:  通过主机的负载进行权重计算,默认选择负载最小的主机。
  • ServerGroupSoftAffinityWeigher:通过同一个主机组中运行的实例数进行权重计算。

默认实现是根据计算节点空闲的内存量计算权重值:空闲内存越多,权重越大,实例将被部署到当前空闲内存最多的计算节点上

二、Chance调度器(随机调度器)从所有正常运行nova-compute服务的节点中随机选择来创建实例 

三、Simple调度器 

修改相关配置文件,修改调度器规则采用缓存调度器,缓存主机信息,提升调度时间 

  • 24
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OpenStack平台的Simple Scheduler是默认的调度,它基于过滤和权重决定在哪里启动虚拟机实例。下面是配置OpenStack平台Simple Scheduler的步骤: 1. 编辑nova配置文件(/etc/nova/nova.conf),设置scheduler_driver为filter_scheduler: ``` [scheduler] scheduler_driver = filter_scheduler ``` 2. 确认compute节点上nova-scheduler进程正在运行: ``` systemctl status openstack-nova-scheduler.service ``` 3. 配置可用性和容量过滤,以过滤无法满足虚拟机需求的主机。默认情况下,Simple Scheduler使用RamFilter和DiskFilter来过滤掉内存和磁盘空间低于虚拟机需求的主机。如果需要使用其他的过滤,可以通过编辑nova配置文件(/etc/nova/nova.conf)来配置。例如,如果需要使用AvailabilityZoneFilter过滤掉不属于指定可用区的主机,可以添加以下配置: ``` [scheduler] scheduler_available_filters = nova.scheduler.filters.all_filters scheduler_default_filters = AvailabilityZoneFilter, RamFilter, DiskFilter, ComputeFilter, RetryFilter ``` 4. 配置权重,以决定在可用主机中选择哪个主机部署虚拟机。默认情况下,Simple Scheduler使用WeightOfLeastUtilized和RandomWeigher来决定部署在哪个主机上。如果需要使用其他的权重,可以通过编辑nova配置文件(/etc/nova/nova.conf)来配置。例如,如果需要使用AggregateInstanceExtraSpecsWeigher来决定部署在哪个主机上,可以添加以下配置: ``` [scheduler] scheduler_weight_classes = nova.scheduler.weights.all_weighers scheduler_default_weighers = AggregateInstanceExtraSpecsWeigher, WeightOfLeastUtilized, RandomWeigher ``` 5. 保存并关闭nova配置文件(/etc/nova/nova.conf),重启nova-scheduler服务以使配置生效: ``` systemctl restart openstack-nova-scheduler.service ``` 以上就是配置OpenStack平台Simple Scheduler的步骤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值