OpenStack之Nova
一 、Nova
使用OpenStack Compute来托管和管理云计算系统。 OpenStack Compute是基础架构即服务
(IaaS)系统的主要部分。 主要模块在Python中实现:
1因为认证,与OpenStack 身份认证keystone 交互。
2因为磁盘和服务器镜像, 与镜像服务Glance 交互。
3因为提供图形界面,与仪表盘Dashboard交互。
Nova是OpenStack云中的计算组织控制器。支持OpenStack云中实例(instances)生命周期的所有活动都由Nova处理。这样使得Nova成为一个负责管理计算资源、网络、认证、所需可扩展性的平台。但是,Nova自身并没有提供任何虚拟化能力,相反它使用libvirt API来与被支持的Hypervisors交互。Nova 通过一个与Amazon Web Services(AWS)EC2 API兼容的web services API来对外提供服务。
OpenStack Compute与OpenStack Identity(身份)进行交互以进行身份验证; 用于磁盘和服务器映像的OpenStack Image服务; 和用于用户和管理界面的OpenStack仪表板。 图像访问受到项目和用户的限制; 每个项目的配额有限(例如数量)。 OpenStack Compute可以在标准硬件上水平扩展,并下载图像以启动实例。
功能和特点:
实例生命周期管理
管理计算资源
网络和认证管理
REST风格的API
异步的一致性通信
Hypervisor透明:支持Xen,XenServer/XCP, KVM, UML, VMware vSphere and Hyper-V
OpenStack Compute由以下几个方面组成:
novaapi 服务
接受并响应最终用户的计算API调用。 该服务支持OpenStack Compute API,Amazon EC2 API 和特殊的Admin API,用于特权用户执行管理操作。 它执行一些策略并启动大多数业务流程活动,例如运行一个实例。
openstack云平台所有的服务相互之间进行通讯走各个服务的API接口。
访问API的方式:CLI命令行方式、web方式、第三方工具
nova api metadata 服务
接受来自实例的元数据请求,保存相关虚拟机的硬件数据,同时需要使用network。 当您使用nova network安装在多主机模式下运行时,通常会使用nova api metadata服务。
nova compute 计算服务
创建虚拟机的方式:CLI形式(virt-manager、virsh install)、Nova-compute服务形式。
两种方式最终都是通过libvirtd创建虚拟机。
nova compute 计算服务功能:
1 定时向OpenStack报告计算节点的状态(CPU、内存等资源的使用状态)。
2 nova compute 与Hypervisor一起实现OpenStack对instance(实例)生命周期的管理。
3 通过虚拟机管理程序API创建和终止虚拟机实例的工作程序守护程序。
(1)适用于XenServer / XCP的XenAPI
(2)KVM或QEMU的libvirt
(3)适用于VMware的VMwareAPI
处理相当复杂。 基本上,守护程序接受队列中的操作,并执行一系列系统命令,例如启动
KVM实例并更新数据库中的状态。
nova place mentapi 服务
跟踪每个提供商的库存和使用情况。有关详细信息,请参阅Placement API。
nova-compute服务定时将收到的计算节点的信息(内存、CPU)发送给nova-placement-api服务。
nova-compute服务收集信息过程:kvm虚拟化层到libvirtd服务在到nova-compute服务。
nova-placement-api服务部署在控制节点上。
nova scheduler 服务
从队列获取虚拟机实例请求,并确定运行哪个计算服务器主机。决策一个虚拟机应该调度到哪个计算节点上,需要分两个步骤:
- 过滤(过滤内容包括计算节点的内存、CPU等)
- 调度算法:
随机算法:计算主机在所有可用域内随机选择
可用域算法:跟随机算法相仿,但是计算主机在指定的可用域内随机选择。
简单算法:这种方法选择负载最小的主机运行实例。负载信息可通过负载均衡器获得。
nova conductor module 模块
nova compute服务与数据库之间的交互。它消除了由novacompute服务器对云数据库的直接访问。新星导体模块水平放置。但是,不要在运行novacompute服务的节点上部署它。
nova-conductor是nova-compute与数据库的中间件,nova-compute对数据库的操作都借由nova-conductor完成,nova-conductor通过rpc对外提供API服务。
数据库写入数据时必须经过novaconductor module 模块,读取不必经过novaconductor module 模块,这样保证了数据库安全性。并且novaconductor module 模块只能在控制节点上部署。
novacert 模块
为X509证书提供Nova Cert服务的服务器守护程序。用于生成eucabundleimage的证书。只需
要EC2 API。
nova consoleauth 守护进程
为控制台代理提供的用户授权令牌。参见novanovncproxy和novaxvpvncproxy。此服务必须运行才能使控制台代理工作。您可以在集群配置中针对单个novaconsoleauth服务运行任一类型的代理
nova novn cproxy 守护进程
提供通过VNC连接访问运行实例的代理,图形化远程连接。 支持基于浏览器的novnc客户端。
nova spicehtml5proxy 守护进程
提供通过SPICE连接访问运行实例的代理。 支持基于浏览器的HTML5客户端。
nova xvpvncproxy 守护进程
提供通过VNC连接访问运行实例的代理。 支持特定于OpenStack的Java客户机。
the queue
服务内部守护进程之间传递消息的中心枢纽。 通常用RabbitMQ实现,异步传输,减少等待时间。也可以用另一个AMQP消息队列来实现,如ZeroMQ。
SQL数据库
二、nova的逻辑架构
存储云基础架构的大部分构建时间和运行时状态,包括:
(1)可用的实例类型
(2)正在使用的实例
(3)可用网络
(4)项目
理论上,OpenStack Compute可以支持SQLAlchemy支持的任何数据库。 公共数据库是用于测试和开发工作的SQLite3,MySQL,MariaDB和PostgreSQL。
OpenStack异构:可管理不同kvm、VMware、xen类型的虚拟机。
Nova 逻辑架构

1、客户端利用 API 发出请求,要求启动一个实例。
2、该请求通过一系列检查 (比如身份验证、配额、权限等等)后,由 Nova API 服务器进行处理。
3、Nova API 服务器将客户端请求的URL进行拆分,存储到消息队列中。
4、Nova-scheduler服务接受到启动实例的任务后,先去查看Nova-placement-api服务收集到的信息。
5、Nova-scheduler服务根据调度规则决定在哪运行实例 — 即从 N 个计算节点中选取符合规则的节点。
6、Nova-scheduler服务通过队列向指定的计算节点发出消息让其开始创建实例。
7、计算节点通用 Glance API 在 Glance 注册表中查找所需的镜像文件。
8、Glance API 向计算节点返回该镜像文件的物理位置和元数据。
9、得到了物理位置等信息,计算节点就可以 Swift Proxy 请求镜像文件。
10、Swift Proxy 从 Swift 工作单元中获得映象,并将其传递给计算节点。
11、获得了镜像文件之后,计算节点就可以利用 libvirt API 来与被支持的Hypervisors交互。
12、计算节点将下载到本地的镜像文件派生出一个镜像文件供实例使用,并且计算节点会在数据库中更新实例的详细信息。
13、计算节点向网络节点的队列发出消息以便为实例配置网络。
14、一旦收到返回的网络信息,计算节点就开始最后的配置调整,并启动实例。
15、创建实例完成之后,无论成功与否,计算节点都会更新数据库,并在消息队列中发出通知。
三 、base节点设置
1、创建数据库nova、nova_api、nova_cell0;

2、创建用户、设置登录密码、权限、登录方式;


四、并查看数据库中所有用户
1、ctrl节点设置
1.1、创建nova相关用户、为nova用户设置角色、创建nova服务


1.2、为nova节点创建compute类型、范围为RegionOne的endpoint;


1.3创建placement用户、并添加到admin角色中、为placement创建placement服务

1.4为placement服务创建endpoint


(1)安装nova相关软件;
yum install \
openstack-nova-api \ openstack-nova-conductor \ openstack-nova-novncproxy \ openstack-nova-scheduler \ openstack-nova-placement-api \ openstack-nova-console
- 修改配置文件 /etc/nova/nova.conf 、 /etc/httpd/conf.d/00-nova-placement-api.conf
- 同步数据库;


1.5、重启服务、并开机自启;
systemctl restart openstack-nova-api openstack-nova-consoleauth openstack-nova-scheduler openstack-nova-conductor openstack-nova-novncproxy
systemctl enable openstack-nova-api openstack-nova-consoleauth openstack-nova-scheduler openstack-nova-conductor openstack-nova-novncproxy
四、compute节点配置
1.1克隆虚拟机

1.2在新克隆的虚拟机上修改IP、dns、主机名;并在DNS中添加新虚拟机的正解、反解


1.3宿主机开启透传、然后重启该虚拟机、查看透传状态、查看一层虚拟机是否具有kvm_intel模块、是否支持vmx

重启、开机自启libvirtd

1.4、安装 openstack-nova-compute 软件

1.5、修改配置文件/etc/nova/nova.conf,并查看支持vmx或svm的CPU核心数量

1.6、重启、开机自启动libvirtd、openstank-nova-compute

1.7、查看支持虚拟化的计算机


查看服务目

查看当前镜像文件

相关文章:
OpenStack之Nova
一 、Nova 使用OpenStack Compute来托管和管理云计算系统。 OpenStack Compute是基础架构即服务 (IaaS)系统的主要部分。 主要模块在Python中实现: 1因为认证,与OpenStack 身份认证keystone 交互。 2因为磁盘和服务器镜像…...
虽说主业搞前端,看到如此漂亮的网页UI,也是挪不开眼呀。
漂亮的网页UI能够吸引人的眼球,给人留下深刻的印象。作为前端开发人员,可以通过不断学习和掌握设计技巧和工具,提升自己的UI设计能力,为用户提供更好的视觉体验。 以下是一些提升网页UI设计能力的建议: 学习设计基础知…...
嵌入式学习第二十六天!(网络传输:TCP编程)
TCP通信: 1. TCP发端: socket -> connect -> send -> recv -> close 2. TCP收端: socket -> bind -> listen -> accept -> recv -> send -> close 3. TCP需要用到的函数: 1. co…...
【LeetCode】升级打怪之路 Day 14:二叉树的遍历
今日题目: 144. 二叉树的前序遍历94. 二叉树的中序遍历145. 二叉树的后序遍历102. 二叉树的层序遍历107. 二叉树的层序遍历 II199. 二叉树的右视图637. 二叉树的层平均值429. N 叉树的层序遍历515. 在每个树行中找最大值116. 填充每个节点的下一个右侧节点指针117. …...
[Unity实战]使用NavMeshAgent做玩家移动
其实除了Character Controller, Rigidbody,我们还可以使用NavMeshAgent去做。这么做的好处是能避免玩家去莫名其妙的地方(毕竟基于烘焙过的导航网格),一般常见于元宇宙应用和mmo。 根据Unity手册,NavMeshAgent 也有和…...
官网:随便搞个?那不如不搞,搞不好就给公司减分了。
官网建设确实需要认真对待,不能随便搞。一个粗制滥造的官网可能会给公司带来负面影响,降低品牌形象和用户体验。以下是一些官网建设的重要原则: 专业性:官网应该展示公司的专业性和专业知识。它应该以专业的设计、内容和功能来展示…...
Ansible 基础入门
2)Ansible 介绍 Ansible 基本概念 Ansible 是一种自动化运维工具,基于 Paramiko 开发的,并且基于模块化工作,Ansible 是一种集成 IT 系统的配置管理、应用部署、执行特定任务的开源平台,它是基于 Python 语言…...
讨论:5万官网是建站界的劳斯莱斯了吧,到了软件开发领域呢?
如题,所以赛道选择很重要,当然难度系数也不一样。能花5万元做官网的,凤毛麟角,如果是做软件开发,5万元顶多算个起步价,老铁们,是这样吗?...
手写分布式配置中心(三)增加实时刷新功能(短轮询)
要实现配置自动实时刷新,需要改造之前的代码。代码在https://gitee.com/summer-cat001/config-center 服务端改造 服务端增加一个版本号version,新增配置的时候为1,每次更新配置就加1。 Overridepublic long insertConfigDO(…...
【RabbitMQ】WorkQueue
📝个人主页:五敷有你 🔥系列专栏:MQ ⛺️稳中求进,晒太阳 Work Queues Work queues任务模型,简单来说就是让多个消费者绑定到一个队列,共同消费队列中的消息 当消息处理比较耗时的时候&…...
国内免费好用 Chat GPT推荐
无论您是寻找技术洞见还是灵感激发,此网站是您的绝佳去处。探索着名作家的精彩观点和创意解决方案,它不仅是知识的源泉,更是思维的驱动力。在这里,您将发现无尽的学习资源和启发,助您不断前行这是一款基于OpenAi开发的…...
基于springboot实现在线考试系统项目【项目源码+论文说明】
基于springboot实现在线考试系统演示 摘要 时代在变化,科技技术以无法预测的速度在达到新的高度,并且被应用于社会生活的各个领域,随着生活的加快,也使很多潜在的点逐渐突显出来,社会对于人才的要总是非常迫切的&…...
golang中go build 后读取配置文件
golang打包后读取配置文件 在用go写代码的时候,为了好用经常使用go build 打包,如果我们用到了配置文件,就总是导致不能找到文件所在位置了出现bug,所以以下代码就解决了这个问题。 核心代码: file, err : exec.Look…...
为raspberrypi编译bpftrace调试工具
基于eBPF的嵌入式应用调试 笔者之前写过几篇有关于使用eBPF调试Linux内核和应用的博客,其中提到,在嵌入式设备上使用BCC或bpftrace是不可行的;主要原因在于嵌入式设备的资源有限,而这两个调试工具依赖python/clang/llvm等库&…...
分段线性化问题探析
目录 1 使用0-1变量将分段函数转换为线性约束 2 连续函数采用分段线性化示例 3 matlab程序测试 4 matlab测试结果说明 5 分段线性化应用 1 使用0-1变量将分段函数转换为线性约束 2 连续函数采用分段线性化示例 3 matlab程序测试 clc;clear all; gn10;tn1; x_pfsdpvar(1, t…...
从零学算法2917
2917.给你一个下标从 0 开始的整数数组 nums 和一个整数 k 。 nums 中的 K-or 是一个满足以下条件的非负整数: 只有在 nums 中,至少存在 k 个元素的第 i 位值为 1 ,那么 K-or 中的第 i 位的值才是 1 。 返回 nums 的 K-or 值。 注意 …...
[HackMyVM] 靶场 Wave
kali:192.168.56.104 主机发现 arp-scan -l # arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:d2:e0:49, IPv4: 192.168.56.104 Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan) 192.168.56.1 0a:00:27:00:00:05 (Un…...
云渲染平台都开始涨价了?2024年性价比高的云渲染平台推荐
最近部分云渲染平台开始涨价,不论是通过调整机器性能,还是直接提价,都会对成本产生影响。这对已经习惯了平台价格的用户来说,并不是一件好事。这里举一些例子: 比如平台A,原“首小时渲染0.66元模式”已经下…...
搜索-BFS Meteor Shower S(流星雨)
Meteor Shower S(流星雨) 题目连接 题目描述 贝茜听说一场特别的流星雨即将到来:这些流星会撞向地球,并摧毁它们所撞击的任何东西。她为自己的安全感到焦虑,发誓要找到一个安全的地方(一个永远不会被流星…...
RabbitMQ实战:Springboot集成RabbitMQ并验证五种消息模型
这目录 一、添加依赖二、配置文件中添加RabbitMQ访问配置三、消息生产者代码四、消息消费者代码五、验证参考资料 一、添加依赖 <!--AMQP依赖,包含RabbitMQ--><dependency><groupId>org.springframework.boot</groupId><artifactId>s…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...
RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...
在Ubuntu24上采用Wine打开SourceInsight
1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...
保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...
IP如何挑?2025年海外专线IP如何购买?
你花了时间和预算买了IP,结果IP质量不佳,项目效率低下不说,还可能带来莫名的网络问题,是不是太闹心了?尤其是在面对海外专线IP时,到底怎么才能买到适合自己的呢?所以,挑IP绝对是个技…...
算法:模拟
1.替换所有的问号 1576. 替换所有的问号 - 力扣(LeetCode) 遍历字符串:通过外层循环逐一检查每个字符。遇到 ? 时处理: 内层循环遍历小写字母(a 到 z)。对每个字母检查是否满足: 与…...
scikit-learn机器学习
# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...
NPOI操作EXCEL文件 ——CAD C# 二次开发
缺点:dll.版本容易加载错误。CAD加载插件时,没有加载所有类库。插件运行过程中用到某个类库,会从CAD的安装目录找,找不到就报错了。 【方案2】让CAD在加载过程中把类库加载到内存 【方案3】是发现缺少了哪个库,就用插件程序加载进…...
关于uniapp展示PDF的解决方案
在 UniApp 的 H5 环境中使用 pdf-vue3 组件可以实现完整的 PDF 预览功能。以下是详细实现步骤和注意事项: 一、安装依赖 安装 pdf-vue3 和 PDF.js 核心库: npm install pdf-vue3 pdfjs-dist二、基本使用示例 <template><view class"con…...
