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

配置与管理防火墙
配置与管理防火墙 1,概念:设置在不同网络或网络安全域之间的一系列部件的组合。 2,功能:保护内网中易手攻击的服务;控制内外网之间网络系统的访问;隐藏内网的IP地址及结构的细节,提高网络保护…...

【SpringBoot】-- 实现本地文件/图片上传到服务器生成url地址
在java项目中你可能会有以下需求:用户上传本地图片,然后展示在网页上。本篇文章将使用阿里云oss实现上传图片到oss,oss生成url。 一、准备工作 首先进入阿里云,按如下操作 进入创建页面,修改读写权限为公共读 然后进…...

计算机基础专升本笔记十四-计算机网络基础(一)
计算机基础专升本笔记十四-计算机网络基础(一) 一、计算机网络的发展历程 第一代计算机网络(数据通信) 以数据通信为主的第一代计算机网络。主要是指美国军方用于防控系统的一种联机系统。它只是计算机网络的雏形。 第二代计算…...

【华为OD机试】转盘寿司【C卷|100分】
【华为OD机试】-真题 !!点这里!! 【华为OD机试】真题考点分类 !!点这里 !! 题目描述 寿司店周年庆,正在举办优惠活动回馈新老客户。 寿司转盘上总共有 n 盘寿司,prices[i] 是第 i 盘寿司的价格, 如果客户选择了第 i 盘寿司,寿司店免费赠送客户距离第 i 盘寿司最近的下一…...

使用Node JS获取WI-FI密码
演示效果 全局安装wifi-password-cli依赖 shell 复制代码 npm install wifi-password-cli -g # or npx wifi-password-cli 使用 shell 复制代码 $ wifi-password [network-name] $ wifi-password 12345678 $ wifi-password 办公室wifi a1234b2345 觉得Node.js很神奇是…...

先缓存第二集抖音接入 ,最近加班猛,就分享简单的知识,如何使用:关于使用replace的用法正则表达式
1、需求:比如在cocos creator策划让你制作一个预制体,标题要读取配置,然后中间显示的内容要滚动的,要做成一个通用的,然后给到的配置表是这样子的: 配置表:假设字段是这样子的 content "内容标题&…...

企微hook源码
企微hook源码已经在QQ群内开源。速度进群下载,避免和谐。 QQ群:649480745...

vsphere虚拟机迁移是灰色如何解决
vsphere虚拟机迁移是灰色如何解决 问题描述: 在vsphere中,迁移虚拟机时迁移按钮是灰色,无法迁移,关机之后也无法迁移 虚拟机按钮为灰色 找到虚拟机存储对应的位置,查询是否有.vmx虚拟机文件 查询中发现有.vmx文件存…...

swift 闭包捕获列表
以下函数会打印出什么? var car "Benz" let closure { [car] in print("I drive \(car)") } car "Tesla" closure() 因为 clousre 已经申明将 car 复制进去了([car]),此时clousre 里的 car…...

JavaWeb04-Request,Response
目录 一、Request(请求) 1.作用 2.继承体系 3.获取请求数据 (1)请求行 (2)请求头 (3)请求体(POST) (5)Request通用方式获取请求…...