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

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.hqwc.cn/news/519115.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

你不知道的Postman的Mock接口测试,看这一篇就够了

前言 创建Mock服务 你可以从Postman已有的测试集(Collection)中创建Mock Server或者直接创建Mock Server(我们这里选择从已有的测试集中创建Mock Server) Mock server详细配置页面,在此页面中我们可以设置: Name the mock serv…

Pytorch从零开始实战20

Pytorch从零开始实战——指定生成手势图像 本系列来源于365天深度学习训练营 原作者K同学 文章目录 Pytorch从零开始实战——指定生成手势图像环境准备模型选择模型训练可视化分析生成指定图像总结 环境准备 本文基于Jupyter notebook,使用Python3.8&#xff0c…

使用Python及Pandas库高效处理大规模CSV数据集:实战解析与代码案例

引言 在数据科学与大数据领域,Python凭借其丰富的数据处理库如Pandas而广受青睐。Pandas库尤其擅长处理表格型数据,如CSV文件,它可以高效地执行读取、清洗、操作和分析大量数据的任务。本文将带领读者深入探讨如何利用Python和Pandas库处理大…

【文件增量备份系统】备份业务实现与性能优化

文章目录 性能优化原方案缓冲区备份方案优点缺点 缓冲区备份方案实现备份原理ControllerService说明 性能优化 原方案 递归扫描数据源的所有文件,每扫描一个,就判断当前文件需不需要备份,如果需要备份,直接执行备份,…

FreeRTOS操作系统学习——任务管理

任务概念 在FreeRTOS中,一个任务相当于一个线程,可以有很多的任务,每个人任务可以设置不同的优先级。相同优先级的任务轮流使用CPU,高优先级的任务可以一直使用CPU,直到主动放弃,低级的任务才有被执行的机…

深入解析Mybatis-Plus框架:简化Java持久层开发(八)

🍀 前言 博客地址: CSDN:https://blog.csdn.net/powerbiubiu 👋 简介 本章节介绍如何通过Mybatis-Plus更新数据库中的数据。 本章节不需要前置准备,继续使用之前的测试类,数据库表进行操作。 &#x1f4…

2024 最新Google play应用上架详细流程

众所周知,Google Play 是应用出海开发者发布和推广 Android 应用的首选平台。今天跟大家分享一下在Google Paly上架应用的详细且实用的指南。 一、前提准备 可以正常访问Google play开发者平台的网络 已经注册好了的开发者账号 应用的Android App Bundle文件 隐私…

Python 中实现 CDF 累积分布图的两种方法

什么是累积分布 累积分布函数,又叫分布函数,是概率密度函数的积分,能完整描述一个实随机变量X的概率分布。一般以大写“CDF”(Cumulative Distribution Function)标记。 《百度百科》 累积分布函数,又叫分…

电子签名签章:重塑企业办公方式,开启智能合约新时代!

在现代社会,随着科技的发展,纸质文件逐渐被电子文件所取代,传统的签名方式也面临着数字化的转型。电子签名签章云服务就是在这样的背景下应运而生的一种新型技术服务,它结合了云计算、大数据、人工智能等前沿技术,为用…

input输入框的23中类型

HTML 的 <input> 元素支持多种类型&#xff0c;这些类型决定了用户如何与表单控件进行交互。以下是 HTML5 中 <input> 元素的 23 种类型&#xff0c;以及每种类型的代码示例和效果图的描述&#xff08;请注意&#xff0c;由于文本的限制&#xff0c;我无法直接在这…

LVGL如何创建页面并实现页面的切换

如何绘制一个页面 先搞清楚一个问题&#xff0c;那就是绘制一个页面&#xff0c;是直接创建一个新的屏幕&#xff0c;还是基于默认的屏幕创建一个一个的父类呢&#xff1f; 参考这篇文章 LVGL_多界面切换_lvgl 多页面建立-CSDN博客 可知通常是创建一个新的屏幕&#xff0c;每个…

谈谈this对象的理解以及this的指向问题

文章目录 this的定义绑定规则默认绑定隐式绑定new绑定显示修改箭头函数this的指向问题丢失的this有需要的请私信博主&#xff0c;还请麻烦给个关注&#xff0c;博主不定期更新&#xff0c;或许能够有所帮助&#xff01;&#xff01;请关注公众号 this的定义 函数的 this 关键字…