中resource文件夹的作用_冲突与碰撞:OpenStack中的虚拟机和裸机

冲突与碰撞:OpenStack中的虚拟机和裸机

dea1f129bc6228432f02fd17543537a9.png

要虚拟化还是非虚拟化?

如果您追求性能,那么就没有争议——裸机仍然胜过虚拟机;特别是对于I/O密集型应用程序。但是,除非您可以保证充分利用它,否则是有代价的。在本文中,我们描述了如何使用Nova来以统一的方式提供对虚拟机管理程序和裸机计算节点的访问。

scheduling

当Nova首次引入通过Ironic支持裸机计算时,它不能轻松地与传统的基于hypervisor的工作负载共存。当时的解决方法通常涉及使用宿主aggregates和flavor特性。

我们在定制的裸机博客文章中详细介绍了 裸机调度(请参阅概述:Nova中的调度)。

自引入Placement服务以来,裸机的scheduling已发生了显着变化。对于每个Ironic节点,将标准vCPU,内存和磁盘资源替换为自定义资源类的单个单元。这有两个关键的副作用:

  • 裸机节点已完全分配或根本未分配
  • 虚拟机和裸机使用的资源类是不相交的,因此我们最终无法将VM Flavor调度到裸机节点

“tiny” VM的flavor可能如下所示:

openstack flavor show vm-tiny -f json -c name -c vcpus -c ram -c disk -c properties{  "name": "vm-tiny",  "vcpus": 1,  "ram": 1024,  "disk": 1,  "properties": ""}

“gold”节点的裸机flavor可能如下所示:

openstack flavor show bare-metal-gold -f json -c name -c vcpus -c ram -c disk -c properties{  "name": "bare-metal-gold",  "vcpus": 64,  "ram": 131072,  "disk": 371,  "properties": "resources:CUSTOM_GOLD='1',                 resources:DISK_GB='0',                 resources:MEMORY_MB='0',                 resources:VCPU='0'"}

请注意,vCPU/RAM/Disk资源仅供参考,并通过属性归零以进行调度。我们稍后将进一步讨论这个问题。

那网络呢?

在我们的混合环境中,我们可能希望vm和裸机实例能够相互通信,或者希望它们彼此隔离。这两种模型都是可能的,并且工作方式与典型的neutron网络一样——neutron网络彼此隔离,直到通过neutron路由器连接。

裸机计算节点通常使用VLAN或扁平网络。当然,通过网络硬件和Neutron插件的正确组合,其他模型也是可以的。对于VLAN网络,假设虚拟机管理程序与裸机计算节点连接到同一物理网络,然后将VM与裸机计算实例连接到同一VLAN,这将在它们之间提供L2连接。或者,应该可以使用Neutron路由器将VLAN上的裸机实例与另一个网络(例如VXLAN)上的VM相连,二这将在他们之间提供L3连接。

实际上这是什么样的?我们需要同时支持VM和裸机网络的Neutron plugins/drivers程序的组合。要将裸机服务器连接到租户网络,Neutron必须配置物理网络设备。我们通常使用networking-generic-switch ML2机制驱动程序,尽管networking-ansible驱动程序正在成为一种供应商中立的替代方案。这些驱动程序支持裸机端口,即neutron端口与VNIC_TYPE的baremetal。特定于供应商的驱动程序也可用,并且可能同时支持VM和裸机。

有何问题?

更成熟的云可能遇到的一个问题是从基于标准资源类(vCPU、RAM、disk)的调度过渡到基于自定义资源类的调度。如果存在在Rocky发行版或更早版本中创建的旧裸机实例,则除了自定义资源类之外,它们在Placement中还可能具有标准资源类清单。例如,以下是报告给Placement的此类节点的清单:

$ openstack resource provider inventory list +---------------+-----------------+----------+----------+-----------+----------+--------+| resource_class | allocation_ratio | max_unit | reserved | step_size | min_unit |  total |+---------------+-----------------+----------+----------+-----------+----------+--------+| VCPU          |             1.0 |       64 |        0 |         1 |        1 |     64 || MEMORY_MB     |             1.0 |   131072 |        0 |         1 |        1 | 131072 || DISK_GB       |             1.0 |      371 |        0 |         1 |        1 |    371 || CUSTOM_GOLD   |             1.0 |        1 |        0 |         1 |        1 |      1 |+---------------+-----------------+----------+----------+-----------+----------+--------+

如果将此节点分配给一个flavor请求(或未显式清空)标准资源类的实例,我们将有如下用法:

$ openstack resource provider usage show +----------------+--------+| resource_class |  usage |+----------------+--------+| VCPU           |     64 || MEMORY_MB      | 131072 || DISK_GB        |    371 || CUSTOM_GOLD    |      1 |+----------------+--------+

如果删除此实例,则标准资源类清单将变为可用,并且可由VM的调度程序选择。这不可能很好地结束。我们必须做的是确保不将这些资源报告给Placement。默认情况下,这是在Stein版本的Nova中完成的,并且可以通过在nova.conf中设置以下内容来配置Rocky以执行相同的操作:

[workarounds]report_ironic_standard_resource_class_inventory = False

但是,如果我们这样做,Nova将尝试从我们的实例已经消耗的Placement资源提供程序中移除库存,并将收到一个HTTP 409冲突。这将很快使我们的日志充满无用的告警。

Flavor迁移

值得庆幸的是,有一个解决方案。我们可以修改现有实例中的使用的flavor以删除标准资源类清单,这将导致从Placement中删除这些资源的分配。这将使Nova可以从资源提供者处删除库存。Matt Riedemann启动了一个Nova Patch,它将删除我们的标准资源类清单。该补丁需要推到生产线上,但效果很好,足以被 Rocky版本 生产使用。

迁移可以离线或在线完成。我们选择离线进行此操作,以避免部署此修补程序。对于每个要迁移的节点:

nova-manage db ironic_flavor_migration --resource_class  --host  --node 

或者,如果所有节点都具有相同的资源类:

nova-manage db ironic_flavor_migration --resource_class  --all

您可以通过数据库检查实例包含的flavor是否已正确更新:

sql> use novasql> select flavor from instance_extra;

现在(仅适用于Rocky),可以禁用标准资源类清单报告。在nova计算服务运行了一段时间之后,展示位置将被更新:

$ openstack resource provider inventory list +---------------+------------------+----------+----------+-----------+----------+-------+| resource_class| allocation_ratio | max_unit | reserved | step_size | min_unit | total |+---------------+------------------+----------+----------+-----------+----------+-------+| CUSTOM_GOLD   |              1.0 |        1 |        0 |         1 |        1 |     1 |+---------------+------------------+----------+----------+-----------+----------+-------+$ openstack resource provider usage show +----------------+--------+| resource_class |  usage |+----------------+--------+| CUSTOM_GOLD    |      1 |+----------------+--------+

摘要

我们希望这表明OpenStack现在处于虚拟机和裸机可以和平共处状态,即使对于那些讨厌的场景。感谢Nova团队努力使Ironic成为一流的项目。

原文: https://www.stackhpc.com/mixed-vm-bare-metal.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/467833.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

看看大神是如何计算32位数中‘1’的个数

偶然看到一份代码,代码是计算一个int数中 ‘1’ 的个数的,当然,可能这不是什么值得讨论的事情,但如果你看看大神如何写这段代码的,就觉得这个是一个需要了解的知识。int count_bits(int x) {register int xxx;xxxx-((…

MySQL运算符,函数,索引,图形化管理工具

文章目录运算符算术运算符比较运算符逻辑运算符MySQL运算符数字函数字符串函数日期时间函数条件函数系统信息函数加密函数其他常用函数MySQL索引索引的概念索引的分类创建索引创建表时创建索引在已经存在的表上创建索引删除索引MySQL图形化管理工具PHPMyAdminSQLyog运算符 算术…

Linux下的gpio,gpiod

GPIO 应该是每个嵌入式设备都避免不了的。最近在做项目的时候,也遇到这方面的问题,所以简单总结一下现在内核里面多了gpiod的来控制gpio口,相对于原来的形式,使用gpiod的好处是我们申请后不进行free也没有什么问题。但是你要是使用…

剖析大神代码,计算整型里面1的个数

昨天的文章,可能很多人看了不知道怎么回事,确实,我也是看了之后一头雾水。先给出个简单的例子#include "stdio.h"int count_bits4(char x) {x (x&0x55) ((x>>1)&0x55);x (x&0x33) ((x>>2)&0x33);x…

机器学习导论 与数学分析

文章目录机器学习定义说人话例子专家系统 定义好, 应招,速度快机器学习 实验 奖惩 调参对象任务 TASK T一个或多个经验 EXPERIENCE性能PERFORMANCE类比人类学习监督学习半监督学习无监督学习增强学习可解决问题不可解决问题举例f(x&#xff0…

聊聊、Highcharts 动态数据

最近项目中需要用到图表,找了几个开源框架,最后选择 Highcharts,原因是 Highcharts 功能强大,稳定,方便,而且开源,社区比较成熟。 首先下载 Highcharts,导入项目。 在 HTML 页面引入…

你知道用git打补丁吗?

#常规操作一个常规的使用git 生成补丁的方式git diff ./ > xxx.patch patch -p1 < xxx.patch但是这样生成的补丁有一个问题&#xff0c;这个是差分形式的diff --git a/kernel-4.4/drivers/input/touchscreen/goodix.c b/kernel-4.4/drivers/input/touchscreen/goodix.c i…

概率论与贝叶斯先验

文章目录概率论与贝叶斯先验概率论基础问题代码图像本福特定律应用&#xff1a;公路堵车模型代码模型初速不同&#xff1a;影响不大减速概率&#xff1a;影响大应用&#xff1a;商品推荐解答概率公式应用样本贝叶斯公式分布两点分布二项分布泊松分布期望和方差表示强度应用均匀…

vue项目导入外部css样式和js文件

转自&#xff1a;http://blog.csdn.net/xiejunna/article/details/54943957 css文件放入static文件夹下。 转载于:https://www.cnblogs.com/ourLifes/p/7444074.html

Linux内核0.12完全注释

推荐一本书 Linux 0.12内核完全注释 先把麻雀解剖了&#xff0c;再去研究老鹰和飞机可能会更好。现在市面的很多书籍都是基于比较新的内核讲解的&#xff0c;2.6的内核或者4.4的内核&#xff0c;因为内核版本越高&#xff0c;里面的东西就越多&#xff0c;想要讲解明白就需要花…

矩阵和线性代数

文章目录矩阵和线性代数矩阵SVD提法举例推导代码分解效果方阵行列式范德蒙行列式作用代数余子式伴随矩阵方阵的逆矩阵乘法模型举例概率转移矩阵平稳分布&#xff1a;向量乘法矩阵的秩秩与方程组的解推论向量组等价系数矩阵对CAB重认识正交阵特征值和特征向量性质不同特征值对应…

对比一段ADC键值读取的代码

最近接触到的一个代码&#xff0c;这个代码看起来很简单&#xff0c;但是却蕴藏了人类的智慧与结晶。正是这些不断产生的智慧与结晶&#xff0c;让我们的电子产品越来越稳定&#xff0c;越来越智能。周五了&#xff0c;评论文章&#xff0c;选两个同学赠送书籍《Linux内核完全剖…

HTML5权威指南 11.通信API

1 <!DOCTYPE html>2 <html>3 4 <head>5 <meta charset"UTF-8">6 <title></title>7 <script type"text/javascript">8 //&#xff08;1&#xff09;监听message事件9 window.addEve…

在线登记系统代码 php_PHP框架实现WebSocket在线聊天通讯系统

ThinkPHP使用Swoole需要安装think-swooleComposer包&#xff0c;前提系统已经安装好了SwoolePECL拓展tp5的项目根目录下执行composer命令安装think-swoole&#xff1a;composerrequiretopthink/think-swoole话不多说&#xff0c;直接上代码&#xff1a;新建WebSocket.php控制器…

机器学习数据包之numpy

numpy 属性 import numpy as np#矩阵运算arraynp.array([[1,2,3],[2,3,4]])print (array)[[1 2 3][2 3 4]]维度 print(number of dim,array.ndim)number of dim 2形状 print(shape,array.shape)shape (2, 3)大小 print(size,array.size)size 6创建 创建类型 anp.array([…

RK 利用SARADC 来做多个按键

#DTS配置#配置DTS节点#驱动文件中匹配 DTS 节点#驱动说明#获取ADC通道#获取ADC值#计算采集到的电压#接口说明#调试方法#节点ADC值RK3399开发板上的 AD 接口有两种&#xff0c;分别为&#xff1a;温度传感器 (Temperature Sensor)、逐次逼近ADC (Successive Approximation Regis…

概率论之pandas

快速入门 1 import numpy as npspd.series([1,3,5,np.nan,8,4])Series spd.Series([1,3,5,np.nan,8,4])sOut[6]: 0 1.01 3.02 5.03 NaN4 8.05 4.0dtype: float64date_range datespd.date_range(20190301,periods6)datesOut[10]: DatetimeIndex([2019-03-…

学习,一定是脱“贫”致富的捷径

周末加班&#xff0c;加班后觉得有点无聊&#xff0c;到公司阳台坐了坐&#xff0c;想到最近的工作和生活&#xff0c;也理了理最近的状态&#xff0c;然后分享了一段话在知识星球里。如下:我平时很少静下来想东西&#xff0c;其中一个原因是因为我害怕安静&#xff0c;晚上睡觉…

人应该活成什么样子?该以什么方式活着?

“您幸福吗&#xff1f;”“我是外地打工的&#xff0c;不要问我。”“您幸福吗&#xff1f;”“我姓曾。”相信大家还记得这段央视走基层采访的经典问答。“幸福是什么”是一个人类社会中被广泛讨论的话题&#xff0c;人要怎么生活才能获得幸福&#xff0c;一直是众生要追寻的…

MIPI白皮书

#mipi 5G中优势#5G手机中的mipi#mipi#背景2020年 是5G元年&#xff0c;很多行业因5g重新定义。显示行业也不例外&#xff0c;针对5G&#xff0c;mipi联盟发表了对应的白皮书 描述了现有的MIPI规范如何能够支持第一代5G智能手机以及其他新兴的5G移动平台&#xff0c;包括互联/自…