返回总目录

  1. 创建 Instance 时,用户会提出资源需求,例如 CPU、内存、磁盘各需要多少。OpenStack 将这些需求定义在 flavor 实例类型中,用户只需要指定用哪个 flavor 就可以了。
  2. 可用的 flavor 在 Admin->Compute->Flavors 中管理
描述 详细
  1. 在 /etc/nova/nova.conf 中,nova 通过 scheduler_driver,scheduler_available_filters 和 scheduler_default_filters 这三个参数来配置 nova-scheduler。
  1. scheduler_driver

    1. Filter scheduler 是 nova-scheduler 默认的调度器,调度过程分为两步

      1. 通过过滤器(filter)选择满足条件的计算节点(运行 nova-compute)
      2. 通过权重计算(weighting)选择在最优(权重值最大)的计算节点上创建 Instance
        1

        scheduler_driver=nova.scheduler.filter_scheduler.FilterScheduler

  1. Nova 允许使用第三方 scheduler,配置 scheduler_driver 即可。

    1. Scheduler 可以使用多个 filter 依次进行过滤,过滤之后的节点再通过计算权重选出最适合的节点。

上图是调度过程的一个示例:
1.最开始有 6 个计算节点 Host1-Host6
2.通过多个 filter 层层过滤,Host2 和 Host4 没有通过,被刷掉了3.Host1,Host3,Host5,Host6 计算权重,结果 Host5 得分最高,最终入选
  1. scheduler_available_filters

    1. 当 Filter scheduler 需要执行调度操作时,会让 filter 对计算节点进行判断,filter 返回 True 或 False
    2. Nova.conf 中的 scheduler_available_filters 选项用于配置 scheduler 可用的 filter,默认是所有 nova 自带的 filter 都可以用于过滤操作
      1

      scheduler_available_filters = nova.scheduler.filters.all_filters

  1. scheduler_default_filters

    1. 用于指定 scheduler 真正使用的 filter

      1
      2
      3

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

  1. RetryFilter

    1. 作用是刷掉之前已经调度过的节点
    2. 举个例子: 假设 A,B,C 三个节点都通过了过滤,最终 A 因为权重值最大被选中执行操作。 但由于某个原因,操作在 A 上失败了。 默认情况下,nova-scheduler 会重新执行过滤操作(重复次数由 scheduler_max_attempts 选项指定,默认是 3)。 那么这时候 RetryFilter 就会将 A 直接刷掉,避免操作再次失败。 RetryFilter 通常作为第一个 filter。
  1. AvailabilityZoneFilter

    1. 为提高容灾性和提供隔离服务,可以将计算节点划分到不同的Availability Zone中。
    2. 创建 Instance 时,需要指定将 Instance 部署到在哪个 Availability Zone中。nova-scheduler 在做 filtering 时,会使用 AvailabilityZoneFilter 将不属于指定 Availability Zone 的计算节点过滤掉。
  1. RamFilter

    1. RamFilter 将不能满足 flavor 内存需求的计算节点过滤掉。
    2. 为了提高系统的资源使用率,OpenStack 在计算节点可用内存时允许 overcommit,也就是可以超过实际内存大小。 超过的程度是通过 nova.conf 中 ram_allocation_ratio 这个参数来控制的,默认值为 1.5
      1

      ram_allocation_ratio = 1.5

      其含义是:如果计算节点的内存为 10GB,OpenStack 则会认为它有 15GB(10*1.5)内存。

  1. DiskFilter

    1. DiskFilter 将不能满足 flavor 磁盘需求的计算节点过滤掉。
    2. Disk 同样允许 overcommit,通过 nova.conf 中 disk_allocation_ratio 控制,默认值为 1
      1

      disk_allocation_ratio = 1.0

  1. CoreFilter

    1. CoreFilter 将不能满足 flavor vCPU 需求的计算节点过滤掉。
    2. vCPU 同样允许 overcommit,通过 nova.conf 中 cpu_allocation_ratio 控制,默认值为 16
      1

      cpu_allocation_ratio = 16.0

      这意味着一个 8 vCPU 的计算节点,nova-scheduler 在调度时认为它有 128 个 vCPU。 需要提醒的是: nova-scheduler 默认使用的 filter 并没有包含 CoreFilter。 如果要用,可以将 CoreFilter 添加到 nova.conf 的 scheduler_default_filters 配置选项中。

  1. ComputeFilter

    1. ComputeFilter 保证只有 nova-compute 服务正常工作的计算节点才能够被 nova-scheduler调度。ComputeFilter 显然是必选的 filter。
  1. ComputeCapabilitiesFilter

    1. ComputeCapabilitiesFilter 根据计算节点的特性来筛选。例如我们的节点有 x86_64 和 ARM 架构的,如果想将 Instance 指定部署到 x86_64 架构的节点上,就可以利用 ComputeCapabilitiesFilter。
    2. flavor 中有个 Metadata ,Compute 的 Capabilities就在 Metadata中指定。
      1. 点击update Metadata,“Compute Host Capabilities” 列出了所有可设置 Capabilities
      2. 点击 “Architecture” 后面的 “+”,就可以在右边的列表中指定具体的架构
      3. 配置好后,ComputeCapabilitiesFilter 在调度时只会筛选出 x86_64 的节点。 如果没有设置 Metadata,ComputeCapabilitiesFilter 不会起作用,所有节点都会通过筛选。

当配置了metadata后
  1. ImagePropertiesFilter

    1. ImagePropertiesFilter 根据所选 image 的属性来筛选匹配的计算节点。 跟 flavor 类似,image 也有 metadata,用于指定其属性。
    2. 例如希望某个 image 只能运行在 kvm 的 hypervisor 上,可以通过 “Hypervisor Type” 属性来指定
    3. 点击 “+”,然后在右边的列表中选择 “kvm”。
    4. 配置好后,ImagePropertiesFilter 在调度时只会筛选出 kvm 的节点。 如果没有设置 Image 的Metadata,ImagePropertiesFilter 不会起作用,所有节点都会通过筛选。
  1. ServerGroupAntiAffinityFilter 这里可以进行设置,但我没成功???

    1. 可以尽量将 instance 分散部署到不同的节点上。
  1. ServerGroupAffinityFilter

    1. 与 ServerGroupAntiAffinityFilter 的作用相反,ServerGroupAffinityFilter 会尽量将 instance 部署到同一个计算节点上。
  1. Weight

    1. nova-scheduler 选出了能够部署 instance 的计算节点。如果有多个计算节点通过了过滤,那么最终选择哪个节点呢?
    2. Scheduler 会对每个计算节点打分,得分最高的获胜。 打分的过程就是 weight,翻译过来就是计算权重值,那么 scheduler 是根据什么来计算权重值呢?
    3. 目前 nova-scheduler 的默认实现是根据计算节点空闲的内存量计算权重值: 空闲内存越多,权重越大,instance 将被部署到当前空闲内存最多的计算节点上。

转载于:https://www.cnblogs.com/LeisureZhao/p/11238585.html

07.计算Nova→2.nova组件详解→2.nova-scheduler相关推荐

  1. ReactNative ViewPageAndroid组件详解

    源码传送门 在我们开发Android的时候,ViewPage这个控件的使用频率还是很高的,最简单的就是制作引导页,应用程序的主界面等,在ReactNative开发中实现该功能的组件是ViewPageA ...

  2. Cinder 组件详解 - 每天5分钟玩转 OpenStack(47)

    Cinder 组件详解 - 每天5分钟玩转 OpenStack(47) 本节我们将详细讲解 Cinder 的各个子服务. cinder-api cinder-api 是整个 Cinder 组件的门户, ...

  3. ue4移动到一定距离_UE4移动组件详解(一)——移动框架与实现原理

    原文链接(转载请标明):UE4移动组件详解(一)--移动框架与实现原理_Jerish的博客-CSDN博客​blog.csdn.net 前言 关于UE4的移动组件,我写了一篇非常详细的分析文档.由于篇幅 ...

  4. 跟着小马哥学系列之 Spring AOP(Pointcut 组件详解)

    学好路更宽,钱多少加班. --小马哥 版本修订 2021.5.19:去除目录 2021.5.21:引用 Spring 官方 Pointcut 概念,修改 Pointcut 功能表述 简介 大家好,我是 ...

  5. Ansible 实战案例--Ansible Ad-Hoc 组件详解

    Ansible Ad-Hoc 组件详解 前言 一.命令执行 1.shell 2.command 3.remove 二.包管理 1.yum_repository 2.yum 三.服务管理模块 1.ser ...

  6. UE4移动组件详解(三)——RootMotion与特殊移动模式的实现思路

    更多相关内容参考 UE4移动组件详解(一)--移动框架与实现原理 UE4移动组件详解(二)--移动同步机制 五.特殊移动模式的实现思路 这一章节不是详细的实现教程,只是给大家提供常见游戏玩法的一些设计 ...

  7. Tkinter 组件详解(一):Label

    Tkinter 组件详解之Label Label(标签)组件用于在屏幕上显示文本或图像.Label 组件仅能显示单一字体的文本,但文本可以跨越多行.另外,还可以为其中的个别字符加上下划线(例如用于表示 ...

  8. 【Unity3D-UGUI系列】(一)Canvas 画布组件详解

    推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 QQ群:1040082875   大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉 ...

  9. Tkinter 组件详解(四):Radiobutton

    Tkinter 组件详解之Radiobutton Radiobutton(单选按钮)组件用于实现多选一的问题.Radiobutton 组件可以包含文本或图像,每一个按钮都可以与一个 Python 的函 ...

  10. Unity 之 UGUI Layout自动布局组件详解

    Unity 之 UGUI Layout自动布局组件详解 1,布局元素 (Layout Element) 2,水平布局组 (Horizontal Layout Group) 3,垂直布局组 (Verti ...

最新文章

  1. Linux多线程编程四(条件变量)
  2. 台湾澎湖县启动返乡包机 春节疏运增加25个航班
  3. Kubernetes实用技巧
  4. Django框架深入了解_03(DRF之认证组件、权限组件、频率组件、token)
  5. mysql学习整理(一)
  6. java基础集合类——LinkedList 源码略读
  7. 【每日一题】8月7日题目精讲—双栈排序
  8. python入门心得_一天入门 Python 的一些心得
  9. 浏览器加载渲染网页过程解析-总结
  10. LR监控linux系统资源
  11. API MISUSE: <CBPeripheralManager: 0x282c00070> can only accept this command while in the powered on
  12. 全球顶级的14位程序员大神!
  13. 流氓软件和骚扰电话是时候该清理下了
  14. python tkinter如何隐藏控件
  15. SVN管理文件的步骤
  16. 共享内存—shmget参数shmflg详解—IPC_CREAT、IPC_EXCL、0666(对内存的读写执行权限)
  17. FinFET与芯片制程
  18. 区块链:Neutral Dollar(NUSD)亚稳态的可视化
  19. GBase 8c V5 集群版安装示例
  20. Java程序员必看的9本基础书籍推荐!

热门文章

  1. 编程语言的语法与语义
  2. WorldFirstClassOnline
  3. Bing Maps开发扩展三:Bing Maps中渲染ESRI SHP空间数据
  4. 微博爬取显示全文_Python爬虫---chrome driver爬取微博(教你几十行代码爬取财宝宝微博长文)...
  5. 创建指南针View的例子
  6. 顶级Linux发行版(10)——Gentoo Linux [转]
  7. gpu跑普通python程序_普通电脑PC怎样跑TensorFlow的GPU模式
  8. spring包装hibernate_全网最全Spring系列面试题129道(附答案解析)
  9. avl树 php,PHP实现平衡二叉树(AVL树)
  10. 数据库开发文档记录方法