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

 
 

通过过滤器(filter)选择满足条件的计算节点(运行 nova-compute)

通过权重计算(weighting)选择在最优(权重值最大)的计算节点上创建 Instance。

 
 

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

 
 

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

 
 

 
 

【RetryFilter】

 
 

RetryFilter 的作用是刷掉之前已经调度过的节点。

 
 

举个例子方便大家理解: 假设 A,B,C 三个节点都通过了过滤,最终 A 因为权重值最大被选中执行操作。 但由于某个原因,操作在 A 上失败了。 默认情况下,nova-scheduler 会重新执行过滤操作(重复次数由 scheduler_max_attempts 选项指定,默认是 3)。 那么这时候 RetryFilter 就会将 A 直接刷掉,避免操作再次失败。

RetryFilter 通常作为第一个 filter。

 
 

【AvailabilityZoneFilter】

 
 

为提高容灾性提供隔离服务,可以将计算节点划分到不同的Availability Zone中。

 
 

例如把一个机架上的机器划分在一个 Availability Zone 中。 OpenStack 默认有一个命名为 "Nova" 的 Availability Zone,所有的计算节点初始都是放在 "Nova" 中。 用户可以根据需要创建自己的 Availability Zone

 
 

【RamFilter】

 
 

RamFilter 将不能满足 flavor 内存需求的计算节点过滤掉。

 
 

对于内存有一点需要注意: 为了提高系统的资源使用率,OpenStack 在计算节点可用内存时允许 overcommit(超售),也就是可以超过实际内存大小。 超过的程度是通过 nova.conf 中 ram_allocation_ratio 这个参数来控制的,默认值为 1.5

ram_allocation_ratio = 1.5

 
 

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

 
 

【DiskFilter】

 
 

DiskFilter 将不能满足 flavor 磁盘需求的计算节点过滤掉。

 
 

Disk 同样允许 overcommit,通过 nova.conf 中 disk_allocation_ratio 控制,默认值为 1

 
 

disk_allocation_ratio = 1.0

 
 

【CoreFilter】

 
 

CoreFilter 将不能满足 flavor vCPU 需求的计算节点过滤掉。

 
 

vCPU 同样允许 overcommit,通过 nova.conf 中 cpu_allocation_ratio 控制,默认值为 16

 
 

cpu_allocation_ratio = 16.0

 
 

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

 
 

【ComputeFilter】

 
 

ComputeFilter 保证只有 nova-compute 服务正常工作的计算节点才能够被 nova-scheduler调度。

ComputeFilter 显然是必选的 filter。

 
 

【ComputeCapabilitiesFilter】

 
 

ComputeCapabilitiesFilter 根据计算节点的特性来筛选。

 
 

这个比较高级,我们举例说明。

例如我们的节点有 x86_64 和 ARM 架构的,如果想将 Instance 指定部署到 x86_64 架构的节点上,就可以利用到 ComputeCapabilitiesFilter。

 
 

还记得 flavor 中有个 Metadata 吗,Compute 的 Capabilitie s就在 Metadata中 指定。

 

【ImagePropertiesFilter】

 
 

ImagePropertiesFilter 根据所选 image 的属性来筛选匹配的计算节点。

跟 flavor 类似,image 也有 metadata,用于指定其属性。

 

【ServerGroupAntiAffinityFilter】

 
 

ServerGroupAntiAffinityFilter 可以尽量将 Instance 分散部署到不同的节点上。

 

【ServerGroupAffinityFilter】

 
 

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

 
 

【Weight】

 
 

经过前面一堆 filter 的过滤,nova-scheduler 选出了能够部署 instance 的计算节点。

如果有多个计算节点通过了过滤,那么最终选择哪个节点呢?

 
 

Scheduler 会对每个计算节点打分,得分最高的获胜

打分的过程就是 weight,翻译过来就是计算权重值,那么 scheduler 是根据什么来计算权重值呢?

 
 

目前 nova-scheduler 的默认实现是根据计算节点空闲的内存量计算权重值:

空闲内存越多,权重越大,instance 将被部署到当前空闲内存最多的计算节点上。

 
 

scheduler_default_filters 详解的更多相关文章

  1. OpenStack知识点详解

    一:云计算     一.起源 1. 云计算这个概念首次在2006年8月的搜索引擎会议上提出,成为了继互联网.计算机后信息时代的又一种革新(互联网第三次革命). 2. 云计算的核心是将资源协调在一起,使 ...

  2. Linq之旅:Linq入门详解(Linq to Objects)

    示例代码下载:Linq之旅:Linq入门详解(Linq to Objects) 本博文详细介绍 .NET 3.5 中引入的重要功能:Language Integrated Query(LINQ,语言集 ...

  3. 架构设计:远程调用服务架构设计及zookeeper技术详解(下篇)

    一.下篇开头的废话 终于开写下篇了,这也是我写远程调用框架的第三篇文章,前两篇都被博客园作为[编辑推荐]的文章,很兴奋哦,嘿嘿~~~~,本人是个很臭美的人,一定得要截图为证: 今天是2014年的第一天 ...

  4. EntityFramework Core 1.1 Add、Attach、Update、Remove方法如何高效使用详解

    前言 我比较喜欢安静,大概和我喜欢研究和琢磨技术原因相关吧,刚好到了元旦节,这几天可以好好学习下EF Core,同时在项目当中用到EF Core,借此机会给予比较深入的理解,这里我们只讲解和EF 6. ...

  5. Java 字符串格式化详解

    Java 字符串格式化详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 文中如有纰漏,欢迎大家留言指出. 在 Java 的 String 类中,可以使用 format() 方法 ...

  6. Android Notification 详解(一)——基本操作

    Android Notification 详解(一)--基本操作 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Notification 文中如有纰 ...

  7. Android Notification 详解——基本操作

    Android Notification 详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 前几天项目中有用到 Android 通知相关的内容,索性把 Android Notificatio ...

  8. Git初探--笔记整理和Git命令详解

    几个重要的概念 首先先明确几个概念: WorkPlace : 工作区 Index: 暂存区 Repository: 本地仓库/版本库 Remote: 远程仓库 当在Remote(如Github)上面c ...

  9. Drawable实战解析:Android XML shape 标签使用详解(apk瘦身,减少内存好帮手)

    Android XML shape 标签使用详解   一个android开发者肯定懂得使用 xml 定义一个 Drawable,比如定义一个 rect 或者 circle 作为一个 View 的背景. ...

随机推荐

  1. OpenCV-Python BRIEF(二进制的鲁棒独立基本特征) | 四十二

    目标 在本章中,我们将看到BRIEF算法的基础知识 理论 我们知道SIFT使用128维矢量作为描述符.由于它使用浮点数,因此基本上需要512个字节.同样,SURF最少也需要256个字节(用于64像素) ...

  2. adb基本命令操作(四)

    一,基本操作命令 adb shell:进入手机系统 说明:root表示手机当前的操作用户,也是最高权限操作者 cd ,可以切换目录,执行cd /sdcard  表示手机内部的存储路径,也是表示内部存储 ...

  3. AI体验类产品竞品分析

    1.业界状态 人工智能(Artificial Intelligence),简称AI.上个世纪50年代就有一批年轻的科学家提出了这一概念,经历过50多年的长足发展,信息化建设的脚步不断加快,机器人战胜人 ...

  4. coding++:SpringBoot-事务注解详解

    @Transactional spring 事务注解 1.简单开启事务管理 @EnableTransactionManagement // 启注解事务管理,等同于xml配置方式的 <tx:ann ...

  5. [vijos1554&bzoj1411]硬币游戏<快速幂>

    题目链接:https://vijos.org/p/1554 http://www.lydsy.com/JudgeOnline/problem.php?id=1411 这题真的淫*QAQ... 一看题还 ...

  6. PHP友盟推送消息踩坑及处理

    公司的客户端的推送选用友盟推送,但是友盟的官方文档描述很少,对新手很不友好,所以特写此采坑纪录,废话不多说上代码. 公司业务只涉及单播和广播.所以只提供了单播和广播,业务拓展的话会补充其余部分. 消息 ...

  7. Spring之Bean的管理方式(Content,Beans)

    Spring的bean管理(注释) 注解 代码里特殊的标记,使用注解也可以直接完成相关功能 注解写法:@注解名称(属性名=属性值) 使用在类,方法,属性上面 Spring注解开发准备 导入jar包 ( ...

  8. 1011 World Cup Betting (20 分)

    With the 2010 FIFA World Cup running, football fans the world over were becoming increasingly excite ...

  9. 各种版本docker下载的中国开源地址

    最近在群里听说Docker很火,于是自己抱着试试的态度,想玩玩,可是遇到了一些问题,记录下来,方便备忘,也方便防止大家被坑. 我的虚拟机装的是centos 6.5,百度了好多教程,丫的,都不解释,就一 ...

  10. Shell:Day09-2.笔记

    4.模式匹配(地址定界)  1.空值,没有定义,默认就将文件中所有的行,放入awk进行循环  2.对固定的 1,3 行进行操作  sed -n '1,3p' /etc/passwd  awk '1,3 ...