OpenStack之Nova

news2024/10/25 4:14:01

一 、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由以下几个方面组成:

nova­api 服务

    接受并响应最终用户的计算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 ment­api 服务

跟踪每个提供商的库存和使用情况。有关详细信息,请参阅Placement API。

nova-compute服务定时将收到的计算节点的信息(内存、CPU)发送给nova-placement-api服务。

nova-compute服务收集信息过程:kvm虚拟化层到libvirtd服务在到nova-compute服务。

nova-placement-api服务部署在控制节点上。

nova­ scheduler 服务

从队列获取虚拟机实例请求,并确定运行哪个计算服务器主机。决策一个虚拟机应该调度到哪个计算节点上,需要分两个步骤:

  1. 过滤(过滤内容包括计算节点的内存、CPU等)
  2. 调度算法:

       随机算法:计算主机在所有可用域内随机选择

       可用域算法:跟随机算法相仿,但是计算主机在指定的可用域内随机选择。

       简单算法:这种方法选择负载最小的主机运行实例。负载信息可通过负载均衡器获得。

nova­ conductor module 模块

nova ­compute服务与数据库之间的交互。它消除了由nova­compute服务器对云数据库的直接访问。新星导体模块水平放置。但是,不要在运行nova­compute服务的节点上部署它。

nova-conductor是nova-compute与数据库的中间件,nova-compute对数据库的操作都借由nova-conductor完成,nova-conductor通过rpc对外提供API服务。

数据库写入数据时必须经过nova­conductor module 模块,读取不必经过nova­conductor module 模块,这样保证了数据库安全性。并且nova­conductor module 模块只能在控制节点上部署。

nova­cert 模块

为X509证书提供Nova Cert服务的服务器守护程序。用于生成euca­bundle­image的证书。只需

要EC2 API。

nova­ consoleauth 守护进程

为控制台代理提供的用户授权令牌。参见nova­novncproxy和nova­xvpvncproxy。此服务必须运行才能使控制台代理工作。您可以在集群配置中针对单个nova­consoleauth服务运行任一类型的代理

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

  1. 修改配置文件 /etc/nova/nova.conf 、  /etc/httpd/conf.d/00-nova-placement-api.conf
  2. 同步数据库;

   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、查看支持虚拟化的计算机

查看服务目

查看当前镜像文件

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

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

相关文章

Hello C++ (c++是什么/c++怎么学/c++推荐书籍)

引言 其实C基础语法基本上已经学完,早就想开始写C的博客了,却因为其他各种事情一直没开始。原计划是想讲Linux系统虚拟机安装的,后来考虑了一下还是算了,等Linux学到一定程度再开始相关博客的写作和发表吧。今天写博客想给C开个头…

C++的类和对象(四):拷贝构造函数

目录 拷贝构造函数 特性 自定义类型的传值传参和传引用传参对比 赋值运算符重载 拷贝构造函数 基本概念:只有单个形参,该形参是对本类类型对象的引用(一般常用const修饰),在创建一个已存在对象一模一样的新对象时…

每日OJ题_牛客_井字棋

目录 牛客_井字棋 解析代码 牛客_井字棋 井字棋__牛客网 解析代码 class Board {public:bool checkWon(vector<vector<int> > board) {// 当前玩家是否胜出&#xff01;&#xff01;&#xff01;不是有玩家胜出int row board.size(), col board[0].size();fo…

基于similarities的文本语义相似度计算和文本匹配搜索

similarities 实现了多种相似度计算、匹配搜索算法&#xff0c;支持文本、图像&#xff0c;python3开发。 安装 pip3 install torch # conda install pytorch pip3 install -U similarities或 git clone https://github.com/shibing624/similarities.git cd similarities py…

基于R语言lavaan的SEM在复杂统计建模中的科研技术新突破

此外&#xff0c;我们还将深入探讨R语言的基础知识、结构方程模型的基本原理、lavaan程序包的使用方法等内容。无论是潜变量分析、复合变量分析&#xff0c;还是非线性/非正态/缺失数据处理、分类变量分析、分组数据处理等复杂问题&#xff0c;我们都将一一为您解析。 希望通过…

数据结构与算法-线性查找

引言 在计算机科学领域&#xff0c;数据结构和算法是构建高效软件系统的核心要素。今天我们将聚焦于最基础且广泛应用的一种查找算法——线性查找&#xff0c;并探讨其原理、实现步骤以及实际应用场景。 一、什么是线性查找&#xff1f; 线性查找&#xff08;Linear Search&am…

ChaosBlade故障注入工具--cpu,内存,磁盘占用\IO,网络注入等

前言&#xff1a; 本文介绍一款开源的故障注入工具chaosblade&#xff0c;该工具原本由阿里研发&#xff0c;现已开源&#xff1b;工具特点&#xff1a;功能强大&#xff0c;使用简单。 该工具故障注入包含&#xff1a;cpu&#xff0c;内存&#xff0c;磁盘io&#xff0c;磁盘…

2024.3.7 FreeRTOS 作业

思维导图 练习题 1.使用ADC采样光敏电阻数值&#xff0c;如何根据这个数值调节LED灯亮度。 //打开定时器3的通道3&#xff0c;并且设置为PWM功能HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_3);/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1…

牛客网 华为机试 坐标移动

本题是需要将输入的字符串&#xff0c;得到移动位置的信息&#xff0c;同时要判断移动信息的合法性。 所以我们可以考虑先通过正则表达式过滤得到正确的字符串。 正确的字符串应该以ADWS其中一个字母开头&#xff0c;然后后面接着1个或者2个&#xff08;0-9&#xff09;的数字。…

灵根孕育源流出,心性修持大道生

解法&#xff1a; 手动本地跑了一下1e9&#xff0c;显然超时。 然后预处理发现开不了这么大的数组。 肯定有规律&#xff0c;打表看看 代码如下 #include<iostream> #include<vector> #include<algorithm> #include<cmath> using namespace std; #…

NetSuite Mass Update 批量更新功能

NetSuite中有一个小而精的便捷功能&#xff0c;但是也是一个很容易在实践中被大家遗忘的隐藏功能&#xff0c;就是Mass Update批量更新&#xff0c;在此想和各位分享一下&#xff5e;该功能主要是可以帮助用户快速将符合固定标准的记录中的单个/多个字段直接进行批量更新。如果…

016集——n等分cad多段线、弧、圆等——vba实现

cad命令行输入“div”选择图元后可n等分图元&#xff0c;若图中有大量图元需要n等分&#xff0c;这时可借助vba一键实现。 代码逻辑框架为&#xff1a;通过创建句柄函数来选择实体&#xff0c;通过sendcommand函数向命令行输入命令。 先来个小程序练练手&#xff1a;在屏幕上指…

leetcode 热题 100_滑动窗口最大值

题解一&#xff1a; 双端队列&#xff1a;滑动窗口的本质是在窗口末尾添加一个元素&#xff0c;并移除头部的一个元素。对于添加的元素&#xff0c;直接和当前最大值比较即可&#xff0c;但对于移除的元素&#xff0c;如果移除的是原先的最大值&#xff0c;则需要重新遍历窗口寻…

【语法】C++学习

注意 使用devc对vector初始化使用vector v1 {1, 2, 3, 4, 5}; 报错 解决 在编译器选项中加入以下代码 -static-libgcc -stdc11

MySQL-查询SQL语句的执行过程:连接器->查询缓存(8就没了)->分析器->优化器->执行器->返回结果

MySQL-查询SQL语句的执行过程&#xff1a;连接器->查询缓存<8就没了>->分析器->优化器->执行器->返回结果 查询SQL语句的执行过程1、主要步骤2、实用案例 查询SQL语句的执行过程 1、主要步骤 在MySQL中&#xff0c;一条查询SQL语句的执行过程非常复杂且…

利用auto-py-to-exe库的简单图形界面实现.py到.exe的转换

文章目录 1. auto-py-to-exe 简介2. 安装与使用3. 配置项介绍4. 打包完成 1. auto-py-to-exe 简介 运行 .py 文件需要配套相应的 Python 解释器和相关的依赖项&#xff0c;而很多时候我们会面临光有待演示的 .py 程序&#xff0c;而没有支持演示的环境的尴尬。一种解决办法就是…

代码随想录 回溯算法-子集

目录 78.子集 90.子集|| 491.非递减子序列 78.子集 78. 子集 中等 给你一个整数数组 nums &#xff0c;数组中的元素 互不相同 。返回该数组所有可能的 子集 &#xff08;幂集&#xff09;。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 示例 1&#…

教程篇:Groq API+沉浸式翻译插件 体验最快AI翻译

1、进入https://console.groq.com/keys 申请一个API&#xff08;目前免费&#xff01;抓紧白嫖&#xff09; 2、安装Chrome插件&#xff1a;沉浸式翻译。 https://immersivetranslate.com/ 3、照着抄&#xff08;注意将apikey&#xff0c;换成自己申请的groq的api-key&…

算法刷题Day1 | 704.二分查找、27.移除元素

目录 0 引言1 二分查找1.1 我的解题1.2 修改后1.3 总结 2 移除元素2.1 暴力求解2.2 双指针法&#xff08;快慢指针&#xff09; &#x1f64b;‍♂️ 作者&#xff1a;海码007&#x1f4dc; 专栏&#xff1a;算法专栏&#x1f4a5; 标题&#xff1a;代码随想录算法训练营第一天…