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…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...
Qt Http Server模块功能及架构
Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...
.Net Framework 4/C# 关键字(非常用,持续更新...)
一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...

人机融合智能 | “人智交互”跨学科新领域
本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...

Kafka入门-生产者
生产者 生产者发送流程: 延迟时间为0ms时,也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于:异步发送不需要等待结果,同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...

通过MicroSip配置自己的freeswitch服务器进行调试记录
之前用docker安装的freeswitch的,启动是正常的, 但用下面的Microsip连接不上 主要原因有可能一下几个 1、通过下面命令可以看 [rootlocalhost default]# docker exec -it freeswitch fs_cli -x "sofia status profile internal"Name …...

Ubuntu系统复制(U盘-电脑硬盘)
所需环境 电脑自带硬盘:1块 (1T) U盘1:Ubuntu系统引导盘(用于“U盘2”复制到“电脑自带硬盘”) U盘2:Ubuntu系统盘(1T,用于被复制) !!!建议“电脑…...