nova组件简介
目录
组件关系图
controller节点
openstack-nova-api.service:
openstack-nova-conductor.service:
openstack-nova-consoleauth.service:
openstack-nova-novncproxy.service:
openstack-nova-scheduler.service:
openstack-nova-conductor.service详解
作用和功能:
工作流程:
openstack-nova-conductor.service与openstack-nova-scheduler.service在调度功能上的区别
openstack-nova-conductor.service 的调度功能:
openstack-nova-scheduler.service 的调度功能:
总结:
compute节点
openstack-nova-compute.service
作用和功能:
总结:
nova相关服务代码路径
组件关系图

controller节点
[root@controller ~]# rpm -qa | grep nova
openstack-nova-conductor-18.3.0-1.el7.noarch
puppet-nova-13.3.1-1.el7.noarch
openstack-nova-common-18.3.0-1.el7.noarch
openstack-nova-scheduler-18.3.0-1.el7.noarch
openstack-nova-console-18.3.0-1.el7.noarch
openstack-nova-api-18.3.0-1.el7.noarch
openstack-nova-placement-api-18.3.0-1.el7.noarch
python2-novaclient-11.0.1-1.el7.noarch
python-nova-18.3.0-1.el7.noarch
openstack-nova-novncproxy-18.3.0-1.el7.noarch[root@controller ~]# systemctl list-unit-files | grep -i nova | grep ena
openstack-nova-api.service enabled
openstack-nova-conductor.service enabled
openstack-nova-consoleauth.service enabled
openstack-nova-novncproxy.service enabled
openstack-nova-scheduler.service enabled
这五个服务都是与OpenStack项目中的Nova组件相关的服务,用于管理和提供计算资源的功能。以下是它们的作用:
-
openstack-nova-api.service:
- 作用:提供了OpenStack Nova API 服务,允许用户和其他OpenStack组件通过API进行与计算资源相关的操作,例如创建、管理和监控虚拟机实例。
-
openstack-nova-conductor.service:
- 作用:Nova Conductor服务充当调度和创建实例的中间层,负责处理来自Nova API的请求并将它们传递给合适的计算节点。这有助于分离控制节点和计算节点的功能,提高系统的可伸缩性。
-
openstack-nova-consoleauth.service:
- 作用:提供了Nova Console Authorization服务,用于验证和授权对控制台的访问。当用户尝试连接到虚拟机控制台时,此服务确保用户有权访问相关的控制台。
-
openstack-nova-novncproxy.service:
- 作用:Nova NoVNC Proxy服务允许用户通过Web浏览器访问虚拟机的图形控制台。这个服务负责代理和提供对虚拟机图形控制台的访问。
-
openstack-nova-scheduler.service:
- 作用:Nova Scheduler服务负责根据用户请求和系统资源的可用性,选择合适的计算节点来启动虚拟机实例。它确保虚拟机实例被分配到适当的计算节点上,以满足用户的需求并实现负载均衡。
这些服务一起协作,为OpenStack云平台提供了计算资源管理的核心功能。
openstack-nova-conductor.service详解
openstack-nova-conductor.service 是 OpenStack 中 Nova 组件的一个服务,其主要作用是充当调度和创建实例的中间层,通过将请求从 Nova API 传递到合适的计算节点来协助分离控制节点和计算节点的功能。以下是对 openstack-nova-conductor.service 的详细介绍:
作用和功能:
-
调度功能:
- Nova Conductor 负责实现虚拟机实例的调度。当用户通过 Nova API 提交创建虚拟机的请求时,Conductor 会决定将实例分配到哪个计算节点上运行。这有助于确保资源的合理利用和负载均衡。
-
实例创建和管理:
- 接收来自 Nova API 的创建虚拟机的请求,并负责将这些请求传递给计算节点。通过 Conductor,可以在计算节点上启动、停止、暂停等虚拟机实例的操作。
-
中间层的作用:
- 作为中间层,Conductor 的存在使得 Nova 控制节点和计算节点之间的通信更加高效和解耦。它充当了请求的代理,处理了一些计算节点上不需要直接执行的任务,使得计算节点可以专注于实际的虚拟机实例的管理和运行。
-
分布式架构支持:
- Nova Conductor 的设计使得它能够支持分布式架构。这对于大规模的云平台来说是至关重要的,因为它允许 Nova 部署在多个节点上,以提高系统的可伸缩性和容错性。
工作流程:
- 用户通过 Nova API 提交创建虚拟机的请求。
- Nova API 将请求发送到 Nova Conductor。
- Nova Conductor 决定将虚拟机实例分配到哪个计算节点上。
- Nova Conductor 将请求传递给相应的计算节点。
- 计算节点执行实际的虚拟机实例创建和管理操作。
- 计算节点将结果返回给 Nova Conductor。
- Nova Conductor 将结果传递给 Nova API,最终反馈给用户。
通过这个工作流程,Nova Conductor 起到了协调和调度的作用,确保虚拟机实例被有效地分配和管理。
openstack-nova-conductor.service与openstack-nova-scheduler.service在调度功能上的区别
openstack-nova-conductor.service 和 openstack-nova-scheduler.service 都在 OpenStack 中的 Nova 组件中扮演了调度的角色,但它们的功能和职责略有不同。
openstack-nova-conductor.service 的调度功能:
-
调度实例的位置:
- Nova Conductor 通过将请求从 Nova API 传递到合适的计算节点,实现了虚拟机实例的调度。它确保将实例分配到可用的计算节点上,考虑到系统资源的利用率和负载均衡。
-
中间层的作用:
- Nova Conductor 充当了调度和计算节点之间的中间层。它负责处理一些计算节点上不需要直接执行的任务,从而解耦了控制节点和计算节点之间的通信。
-
实例的创建和管理:
- 在实现调度的同时,Nova Conductor 也负责实例的创建和管理。它接收来自 Nova API 的创建虚拟机的请求,并将这些请求传递给适当的计算节点。
openstack-nova-scheduler.service 的调度功能:
-
决定实例的位置:
- Nova Scheduler 负责决定将虚拟机实例分配到哪个计算节点上。它在接收到来自 Nova API 的请求时,通过考虑计算节点的可用性、负载和其他条件,选择最合适的节点来放置实例。
-
负载均衡:
- Nova Scheduler 通过考虑各个计算节点的负载情况,努力实现资源的均衡分配。这有助于防止某些计算节点过载,同时保证系统资源的有效利用。
-
可插拔的调度器:
- Nova Scheduler 具有可插拔的调度器框架,允许管理员选择使用不同的调度算法。这样,可以根据实际需求配置调度器,以满足不同环境和策略的需求。
总结:
-
openstack-nova-conductor.service主要负责调度和管理虚拟机实例的创建,充当了调度和计算节点之间的中间层。 -
openstack-nova-scheduler.service则专注于选择最合适的计算节点来放置虚拟机实例,实现资源的均衡分配。
综合来看,Nova Conductor 更加直接参与实例的创建和管理,而 Nova Scheduler 则更专注于选择合适的计算节点进行实例的分配。在一些部署中,它们可能会协同工作以实现全面的资源管理和调度。
compute节点
[root@compute1 compute]# rpm -qa | grep nova
openstack-nova-compute-18.3.0-1.el7.noarch
python-nova-18.3.0-1.el7.noarch
openstack-nova-novncproxy-18.3.0-1.el7.noarch
openstack-nova-common-18.3.0-1.el7.noarch
openstack-nova-migration-18.3.0-1.el7.noarch
python2-novaclient-11.0.1-1.el7.noarch[root@compute1 ~]# systemctl list-unit-files | grep -i nova
openstack-nova-compute.service enabled
由于计算节点也安装了nova客户端,所以nova命令行也可以使用(进行身份验证即可)
openstack-nova-compute.service
openstack-nova-compute.service 是 OpenStack 中 Nova 组件的一个服务,它在计算节点上运行,并负责实际的虚拟机实例的创建、管理和监控。以下是该服务的主要功能:
作用和功能:
-
虚拟机实例的创建和管理:
- Nova Compute 服务负责在计算节点上启动、停止、暂停、重启等虚拟机实例的操作。当 Nova Conductor 接收到来自 Nova API 的创建虚拟机的请求后,它将请求传递给相应的 Nova Compute 服务来执行实际的操作。
-
资源的监控和报告:
- Nova Compute 监控计算节点上的资源使用情况,包括 CPU、内存、磁盘等。这些监控信息对于调度器(比如 Nova Scheduler)做出智能的虚拟机实例分配决策非常重要。
-
虚拟机的生命周期管理:
- Nova Compute 管理虚拟机实例的整个生命周期,包括创建、暂停、恢复、迁移、销毁等操作。这确保了在整个云平台中,虚拟机实例的状态得以有效管理。
-
与其他组件的通信:
- 与 Nova Conductor、Nova API 以及其他相关服务的通信。Nova Compute 接收来自 Conductor 的指令,执行相应的操作,并将结果反馈给 Conductor。这种协作确保了在分布式环境中的计算节点能够有效地执行管理任务。
-
Hypervisor 交互:
- 与底层的虚拟化技术(例如 KVM、QEMU、VMware 等)进行交互,以实现虚拟机的创建、启动和管理。Nova Compute 通过支持多种不同的 Hypervisor,使得 OpenStack 能够在不同的虚拟化环境中运行。
总结:
openstack-nova-compute.service 在整个 OpenStack 架构中的作用非常关键,它负责将云计算平台的抽象概念(虚拟机实例)映射到实际的计算节点上,通过与其他 Nova 组件协同工作,实现了虚拟化环境中的资源管理和虚拟机实例的运行。
nova相关服务代码路径
OpenStack所有代码都是python写的,代码默认存放路径为/usr/lib/python2.7/site-packages/
此处以openstack-nova-api.service为例进行查看演示
[root@controller nova]# systemctl status openstack-nova-api.service
● openstack-nova-api.service - OpenStack Nova API ServerLoaded: loaded (/usr/lib/systemd/system/openstack-nova-api.service; enabled; vendor preset: disabled)Active: active (running) since Mon 2023-10-09 08:42:44 CST; 4h 15min agoMain PID: 1607 (nova-api)CGroup: /system.slice/openstack-nova-api.service├─1607 /usr/bin/python2 /usr/bin/nova-api├─3565 /usr/bin/python2 /usr/bin/nova-api├─3568 /usr/bin/python2 /usr/bin/nova-api├─3575 /usr/bin/python2 /usr/bin/nova-api└─3576 /usr/bin/python2 /usr/bin/nova-apiOct 09 08:42:15 controller systemd[1]: Starting OpenStack Nova API Server...
Oct 09 08:42:44 controller systemd[1]: Started OpenStack Nova API Server.[root@controller nova]# cat /usr/lib/systemd/system/openstack-nova-api.service
[Unit]
Description=OpenStack Nova API Server
After=syslog.target network.target[Service]
Type=notify
NotifyAccess=all
TimeoutStartSec=0
Restart=always
User=nova
ExecStart=/usr/bin/nova-api[Install]
WantedBy=multi-user.target[root@controller nova]# cat /usr/bin/nova-api
#!/usr/bin/python2
# PBR Generated from u'console_scripts'import sysfrom nova.cmd.api import mainif __name__ == "__main__":sys.exit(main())
[root@controller nova]# pwd
/usr/lib/python2.7/site-packages/nova
[root@controller nova]#
[root@controller nova]# ll /usr/lib/python2.7/site-packages/nova/cmd/api.py
-rw-r--r-- 1 root root 2246 Feb 29 2020 /usr/lib/python2.7/site-packages/nova/cmd/api.py[root@controller nova]# cat /usr/lib/python2.7/site-packages/nova/cmd/api.py
...
def main():config.parse_args(sys.argv)logging.setup(CONF, "nova")objects.register_all()gmr_opts.set_defaults(CONF)if 'osapi_compute' in CONF.enabled_apis:# NOTE(mriedem): This is needed for caching the nova-compute service# version.objects.Service.enable_min_version_cache()log = logging.getLogger(__name__)gmr.TextGuruMeditation.setup_autorun(version, conf=CONF)launcher = service.process_launcher()started = 0for api in CONF.enabled_apis:should_use_ssl = api in CONF.enabled_ssl_apistry:server = service.WSGIService(api, use_ssl=should_use_ssl)launcher.launch_service(server, workers=server.workers or 1)started += 1except exception.PasteAppNotFound as ex:log.warning("%s. ``enabled_apis`` includes bad values. ""Fix to remove this warning.", ex)if started == 0:log.error('No APIs were started. ''Check the enabled_apis config option.')sys.exit(1)launcher.wait()
相关文章:
nova组件简介
目录 组件关系图 controller节点 openstack-nova-api.service: openstack-nova-conductor.service: openstack-nova-consoleauth.service: openstack-nova-novncproxy.service: openstack-nova-scheduler.service: openstack-nova-conductor.service详解 作用和功能&…...
【Vue】响应式与数据劫持
Vue.js 是一个渐进式的 JavaScript 框架,其中最重要的一个特性就是响应式(Reactivity)。Vue 借助数据劫持(Data Observation)技术实现了对数据的响应式更新,当数据发生变化时,它会自动重新渲染视…...
Modbus RTU转Profinet网关连接PLC与变频器通讯在机床上应用案例
背景:以前在机床加工车间里,工人们忙碌地操作着各种机床设备。为了使整个生产过程更加高效、流畅,进行智能化改造。 方案:在机床上,PLC通过Modbus RTU转Profinet网关连接变频器进行通讯:PLC作为整个生产线…...
Autoware 整体架构
Autoware 整体架构 测试...
【maven】手动指定jar推送
说明 为了推送第三方的jar,有时需要指定对应的jar推送到私有仓库。 示例 mvn deploy:deploy-file --settings /home/xxx/.m2/settings.xml -DgroupIdgroupId的值 -DartifactIdartifactId的值 -Dversionjar包的版本号 -Dpackagingjar -Dfilejar的路径 -Durlhttp:/…...
算法---定长子串中元音的最大数目
题目 给你字符串 s 和整数 k 。 请返回字符串 s 中长度为 k 的单个子字符串中可能包含的最大元音字母数。 英文中的 元音字母 为(a, e, i, o, u)。 示例 1: 输入:s “abciiidef”, k 3 输出:3 解释:…...
美国汽车零部件巨头 AutoZone 遭遇网络攻击
Security Affairs 网站披露,美国汽车配件零售商巨头 AutoZone 称其成为了 Clop MOVEit 文件传输网络攻击的受害者,导致大量数据泄露。 AutoZone 是美国最大的汽车零配件售后市场经销商之一,在美国、墨西哥、波多黎各、巴西和美属维尔京群岛经…...
WPF面试题入门篇
入门篇[2] 1. 谈谈什么是WPF? WPF(Windows Presentation Foundation)是微软公司开发的一种用于创建Windows应用程序的用户界面框架。它是.NET Framework的一部分,提供了一种基于XAML(可扩展应用程序标记语言…...
opencv-ORB检测
ORB(Oriented FAST and Rotated BRIEF)是一种图像特征检测和描述算法,结合了 FAST 关键点检测器和 BRIEF 描述子的优点。ORB 算法具有良好的性能,特别适用于实时应用,如目标追踪、相机定位等。 以下是 ORB 算法的一般…...
please upgrade numpy version to >=1.20
升级 upgrade numpy_升级numpy-CSDN博客 pip install numpy --upgrade 没有pip conda install numpy --upgrade 会报错 conda list numpy来查看numpy版本 似乎这个numpy要看numpy-base这个 似乎没有pip...
关于进制的转化
二进制转十进制: 🔰 方法一:二进制转十进制,用各数的码位与位权的乘积之和,说白了就是用从右到左的每个数去乘以2的幂次方(最右边是0),然后就所有的数相加。 补充:位权是…...
JVM 之 字节码指令
目录 一. 前言 二. 指令集 2.1. 支持的数据类型 2.2. 指令分类 三. 指令手册 3.1. 操作数栈 3.2. 运算与转换 3.3. 条件转移 3.4. 类与数组 3.5. 调度与返回加 finally 3.6. 指令手册汇总 3.7. 示例 一. 前言 字节码指令集的特点是数据量短小精干,便于传…...
阿里云跨账号建立局域网
最近有活动,和好友一并薅了下阿里云的羊毛。琢磨着两台机器组一个局域网,于是有了这个需求,把步骤记录一下: 假设两台机器叫A和B,我们开始进行建立和组网 1. 建立ECS 把A机器公共环境装好,然后使用《实例与…...
【OpenSTL】方便好用的时空预测开源库
OpenSTL:方便好用的时空预测开源库 时空预测学习是一种学习范式,它使得模型能够通过在无监督的情况下从给定的过去帧预测未来帧,从而学习空间和时间的模式。尽管近年来取得了显著的进展,但由于不同的设置、复杂的实现和难以复现性…...
【Unity】IBeginDragHandler、IDragHandler 和 IEndDragHandler 介绍
IBeginDragHandler、IDragHandler 和 IEndDragHandler 介绍 IBeginDragHandler、IDragHandler 和 IEndDragHandler 是 Unity 引擎中的三个接口,用于处理 UI 元素的拖放事件。这些接口通常结合使用,构成了 Unity 引擎的拖放事件系统。 IBeginDragHandler…...
杰发科技AC7801——Flash模拟EEP内存分布情况
简介 本文记录了在使用AutoChips芯片Flash模拟EEP过程中的一些理解 核心代码如下 #include <stdlib.h> #include "ac780x_sweeprom.h" #include "ac780x_debugout.h"#define SWEEPROM_SIZE (2048UL) /* Ssoftware eeprom size(Byte) */ #define TE…...
【前端知识】Node——http模块url模块的常用操作
一、创建简易Server const http require(http); const URL require(url);const HTTP_PORT 8088;const server http.createServer((req, res) > {// req:request请求对象,包含请求相关的信息;// res:response响应对象&…...
平衡二叉树 (简单易懂)
目录 一、概念 二、性质 三、插入操作 四、旋转操作 五、删除操作 六、代码实现 七、复杂度 一、概念 平衡二叉树(Balanced Binary Tree)是一种特殊的二叉搜索树(Binary Search Tree,BST),它在插入和…...
Vue.observable 是什么
Observable 翻译过来我们可以理解成可观察的 Vue.js2.6 新增 Vue.observable,让一个对象变成响应式数据。Vue 内部会用它来处理 data 函数返回的对象 。 返回的对象可以直接用于渲染函数和计算属性内,并且会在发生变更时触发相应的更新。也可以作为最小化…...
【五年创作纪念日】
机缘 我成为创作者的过程并不复杂,可以说是一个自然的发展。我是一名软件工程师,日常的工作主要是编程和解决问题。在工作的过程中,我发现有很多时候我需要查找一些特定的技术问题或者寻找一些最佳实践来解决我遇到的问题。在这个过程中&…...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...
深入剖析AI大模型:大模型时代的 Prompt 工程全解析
今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...
docker详细操作--未完待续
docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...
Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...
Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...
IT供电系统绝缘监测及故障定位解决方案
随着新能源的快速发展,光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域,IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选,但在长期运行中,例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...
Linux --进程控制
本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...
基于 TAPD 进行项目管理
起因 自己写了个小工具,仓库用的Github。之前在用markdown进行需求管理,现在随着功能的增加,感觉有点难以管理了,所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD,需要提供一个企业名新建一个项目&#…...
代码随想录刷题day30
1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...
【Go语言基础【13】】函数、闭包、方法
文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...
