Openstack之Nova组件(一)——云主机调度
一、概述
调度就是将instance放在“最合适”的host上;涉及虚拟机的创建、克隆、冷迁移、热迁移、变更规格、撤离、重建等需要确定虚拟机位置的操作。
二、原理
OpenStack 的虚拟机调度策略主要是由 FilterScheduler 和 ChanceScheduler 实现的,其中FilterScheduler 作为默认的调度器实现了基于主机过滤(filtering)和权值计算(weighing)的调度算法,而 ChanceScheduler 则是基于随机算法来选择可用主机(去掉ignore_hosts)的简单调度引擎。
“最合适”的解释:
合适:使用filtering过滤掉不满足条件的host。(强决策)
最:使用weighting对合适的host进行权重计算,选择最优(权重值最大)的host。(弱决策)
注:权重最大就被选择也不是绝对的,受配置项等因素影响。
scheduler_host_subset_size = max(1,CONF.scheduler_host_subset_size)
if scheduler_host_subset_size < len(weighed_hosts):weighed_hosts = weighed_hosts[0:scheduler_host_subset_size]
chosen_host = random.choice(weighed_hosts)
HostState:
the HostState object allows to get attributes of the host
RequestSpec:
the RequestSpec object describes the user request, including the flavor, the image and the scheduler hints
scheduler_default_filters = RetryFilter,AvailabilityZoneFilter,RamFilter,CoreFilter,
DiskFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,
ServerGroupAffinityFilter,PciPassthroughFilter,NUMATopologyFilter
Filters | 作用 | 说明 |
---|---|---|
RetryFilter | 重新调度的时候才起作用,过滤掉已经尝试过的host | 如果scheduler_max_attempts值为1或者有force_hosts、force_nodes则不生效 |
AvailabilityZoneFilter | 过滤掉AZ和请求不一致的host | 1、请求内没az需求不过滤 2、请求内的az和主机的az一致或者请求内的az等于default_availability_zone不过滤 3、非上述情况的host都会被过滤掉 |
RamFilter | 过滤掉ram不满足请求的host | 1、ram_allocation_ratio没被配置时按1.5计算 2、过滤掉节点ram(不算超售比)小于所需ram的节点 3、过滤掉ram资源不足的节点(total_usable_ram_mb * ram_allocation_ratio - used_ram_mb) |
CoreFilter | 过滤掉cpu不满足的host | 1、cpu_allocation_ratio没被配置时是按16.0计算 2、过滤掉节点总cpu核数(不算超售比)小于所需cpu的节点 3、过滤掉cpu资源不足的节点(host_state.vcpus_total * cpu_allocation_rati - host_state.vcpus_used) |
DiskFilter | 过滤掉disk不满足的host | 1、disk_allocation_ratio没配置时按1.0计算 2、过滤掉节点disk(不算超售比)小于所需disk的节点 3、过滤掉disk资源不满足的节点(total_usable_disk_mb * disk_allocation_ratio - used_disk_mb) |
ComputeFilter | 过滤掉service状态不满足的host | 1、过滤掉服务被disable的节点 2、过滤掉服务down的节点 |
ComputeCapabilitiesFilter | 过滤掉capabilities不满足条件的host(相对高级过滤功能) | 1、此功能我们暂时未使用,因为我们没有开启规格属性(extra_specs)的自定义(nova flavor-key) 2、过滤规则根据flavor中key决定 2.1、key中不包含":",则去匹配节点stats(host的附属属性)属性是否满足value需求; 2.2、key中包含“capabilities:”,则去匹配host的属性(如cpu的架构) |
ServerGroupAntiAffinityFilter | 反亲和性过滤器 | 过滤掉和和instance相同的host |
ServerGroupAffinityFilter | 亲和性过滤器 | 过滤掉和和instance不相同的host |
PciPassthroughFilter | 过滤掉没有相关pci设备的host | — |
NUMATopologyFilter | 根据实例的NUMA要求过滤主机 | 过滤掉numa不满足要求的节点(计算优化型) |
注:RAM、CPU、Disk不能overcommit,Do not allow an instance to overcommit against itself, only against other instances.
weighing
由于称重不涉及调度失败不做进一步分析。
三、案例分析
- 现象:
虚拟机调整规格vcpu24c到30c失败 - 根因分析:
a. 变更规格需要迁移到其他节点
b. 虚拟机的cpu个数是不允许超过节点的cpu个数 - 定位过程:
a. 先更据虚拟机名字和操作的大概时间点, 找到本次操作的请求req-id(nova 会对每次请求都生成一个唯一的req_id,根据req_id找操作和日志会很精确)
b. 在openstack/nova/目录内可以zgrep 相应的req_id寻找关键信息
c. 根据关键信息和过滤器的过滤规则去具体分析:
c.1 只有过滤器才会将host过滤掉
c.2 哪个过滤器处理后没有合适的host会输出:Filter %s returned 0 hosts
c.3 分析哪些过滤器过滤的具体细节:Filtering removed all hosts for the request with instance ID…
c.4 根据过滤器的具体过滤规则去分析原因。
Openstack之Nova组件(一)——云主机调度相关推荐
- openstack——使用命令行发放云主机
openstack--使用命令行发放云主机 一.进入管理员权限环境下 二.创建租户及用户 1.创建租户 2.创建用户 三.上传镜像 四.创建外部网络 1.创建外部网络名 2.创建外部网络子网 五.创建 ...
- neutron服务宕机导致nova无法创建云主机
情况:服务器重启后,创建云主机失败·,查看日志,我们发现是neutron导致nova创建云主机失败,我们查看neutron服务状态,发现neutron中的openvswitch和metadate服务宕 ...
- openstack与ceph环境恢复云主机
有一台Windows系统的云主机出现故障,系统盘坏掉,无法启动,也不能在云环境里修复系统,但是数据比较重要,需要恢复云主机里的数据.云主机有一块系统盘,一款外挂盘. 系统盘: 外挂盘: 以下操作是在生 ...
- Openstack采用ISO格式文件创建云主机
1: 原生ISO镜像创建云主机 创建云主机: 针对不需要virtio的云主机: 最后系统是安装在这个盘上: 之后用云硬盘创建个云主机,就是最后想要的云主机: Q版舍弃了 从云硬盘创建云主机, 变成了 ...
- OpenStack 的Nova组件详解
Open Stack Compute Infrastructure (Nova) Nova是OpenStack云中的计算组织控制器.支持OpenStack云中实例(instances)生命周期的所有活 ...
- OpenStack 给nova组件 vnc 配置https(SSL)自验证签名证书
先说解决办法以及结果 解决办法:Nginx 转发 结果:只转发 生成vnc 的console 地址,拼凑出https,能在Https web应用即可,比如把console url (控制台地址)ifr ...
- 用OpenStack搭建简单的云平台并启动云主机
OpenStack OpenStack简介 OpenStack重要集成组件 OpenStack平台部署 部署环境 建立虚拟机 配置时间同步 安装OpenStack 安装 RabbitMQ 消息队列服务 ...
- 云系列---Openstack Nova组件 | 参数说明 | 详细讲解
Openstack Nova组件 一.Nova 概念 二.Nova 系统架构 三.Nova 组件详讲 1.API 讲解 2.Scheduler 讲解 调度器类型 过滤调度器调度过程 过滤器类型 Sch ...
- OpenStack的部署T版(五)——Nova组件
目录 一.Nova计算服务概念 Nova系统架构 二.Nova组件介绍 1.API 2.Scheduler调度器 Nova调度器的类型 过滤器 权重(weight) 3.Compute组件 Compu ...
最新文章
- 使用Spring-Cloud将Spring Boot应用程序部署到Cloud Foundry
- 我要自学网java jsp_学javaweb需要什么基础?零基础如何学习javaweb?
- linux tcp socket 接收的字节数与发送的字节数不符,TCP发送接口(如send(),write()等)的返回值与成功发送到接收端的数据量无直接关系...
- HDU1198-----并查集
- 服务器msdtc没有安全显示项,MSDTC 问题疑难解答 - BizTalk Server | Microsoft Docs
- 业务系统监控解决方案
- H3C 路由器中VLAN隔离
- 微信公众号(订阅号)文章阅读数监控V0.1
- 《计算机达人成长之路——憧憬与迷茫篇》有钱的捧个预订场,有人的捧个评价场...
- Excel 快速跳到表格最后一行/第一行
- 逆商之CORE和LEAD
- C语言关于变量定义未使用编译警告warring
- 【读书笔记】高效能人士的七个习惯
- python合并多个excel表到一张表中(有表头)
- cesium 之三维场景展示篇(附源码下载)
- ”我的2016“-太多难忘的第一次
- dnf剑魂buff等级上限_DNF5.8新版buff换装提升整理以及装备选择,防止弯路
- 这 7 个阿里程序员的个人公众号,你看过几个?
- 岁月沧桑景,浮世微语情
- 用js代码判断质数_JavaScript判断数字是否为质数的方法汇总