踏入OpenStack大门,Nova计算服务讲解

2023-05-16

文章目录

  • 一、Nova计算服务概述
    • 1.1 Nova简介
    • 1.2 Nova系统架构
    • 1.3 Nova 部署 Cell
  • 二、Nova组件详细介绍
    • 2.1 API(通信接口)
    • 2.2 Scheduler(调度器)
      • 2.2.1 Filter(过滤器)
      • 2.2.2 weight(权重)
    • 2.3 Compute(计算器)
      • 2.3.1 支持方式
      • 2.3.2 功能
    • 2.4 Conductor(管理器)
    • 2.5 PlacementAPI(安置接口)

一、Nova计算服务概述

1.1 Nova简介

  • 计算服务是openstack最核心的服务之一,负责维护和管理云环境的计算资源,它在openstack项目中代号是nova。
  • nova自身并没有提供任何虚拟化能力,它提供计算服务,使用不同的虚拟化驱动来与底层支持的Hypervisor(虚拟机管理)进行交互。所有的计算实例(虚拟服务器)有Nova进行生命周期的调度管理(启动、挂起、停止、删除等)
  • Nova需要keystone、glance、neutron、cinder和swift等其他服务的支持,能与这些服务集成,实现如加密磁盘、裸金属计算实例等。

1.2 Nova系统架构

在这里插入图片描述

  • DB:用于数据存储的sql数据库。
  • API:用于接收HTTP请求、转换命令、通过消息队列或HTTP与其他组件通信的nova组件。
  • Scheduler:用于决定哪台计算节点承载计算实例的nova调度器。
  • Network:管理IP转发、网桥或虚拟局域网的nova网络组件。
  • Compute:管理虚拟机管理器与虚拟机之间通信的nova计算组件。
  • Conductor:处理需要协调(构建虚拟机或调整虚拟机大小)的请求,或者处理对象转换

1.3 Nova 部署 Cell

在这里插入图片描述

  • 当openstack nova集群的规模变大时,数据库和消息队列服务就会出现瓶颈问题。Nova为提高水平扩展及分布式、大规模的部署能力,同时又不增加数据库和消息中间件的复杂度,引入了Cell概念。
  • Cell可译为单元。为支持更大规模的部署,openstack将大的nova集群分成小的单元,每个单元都有自己的消息队列和数据库,可以解决规模增大时引起的瓶颈问题。在Cell中,Keystone. Neutron. Cinder.Glance等资源是共享的。
  • 多Cell部署架构图,如下:
    在这里插入图片描述

二、Nova组件详细介绍

2.1 API(通信接口)

在这里插入图片描述

  • API是客户访问nova的http接口,它由nova-api服务实现,nova-api服务接收和响应来自最终用户的计算api请求。作为openstack对外服务的最主要接口,nova-api提供了一个集中的可以查询所有api的端点。
  • 所有对nova的请求都首先由nova-api处理。API提供REST标准调用服务,便于与第三方系统集成。
  • 最终用户不会直接改送RESTful API请求,而是通过openstack命令行、dashbord和其他需要跟nova交换的组件来使用这些API。

2.2 Scheduler(调度器)

  • Scheduler可译为调度器,由nova-scheduler服务实现,主要解决的是如何选择在哪个计算节点上启动实例的问题。它可以应用多种规则,如果考虑内存使用率、cpu负载率、cpu构架(intellamd)等多种因素,根据一定的算法,确定虚拟机实例能够运行在哪一台计算服务器上。Nova-scheduler服务会从队列中接收一个虚拟机实例的请求,通过读取数据库的内容,从可用资源池中选择最合适的计算节点来创建新的虚拟机实例。
  • 创建虚拟机实例时,用户会提出资源需求,如cpu.内存、磁盘各需要多少。Openstack将这些需求定义在实例类型中,用户只需指定使用哪个实例类型。
  • 调度器的类型
    • 随机调度器(chance scheduler):从所有正常运行nova-compute服务的节点中随机选择。
    • 过滤器调度器(filter scheduler):根据指定的过滤条件以及权重选择最佳的计算节点。Filter又称筛选器。
    • 缓存调度器(caching scheduler):可看作随机调度器的一种特殊类型,在随机调度的基础上将主机资源信息缓存在本地内存中,然后通过后台的定时任务定时从数据库中获取最新的主机资源信息。

2.2.1 Filter(过滤器)

  • Filter Scheduler首先得到未经过滤的主机列表,然后根据过滤属性,选择符合条件的计算节点主机
  • scheduler_available_filters选项用于配置可用过滤器,默认是所有nova自带的过滤器都可以用于过滤作用
Scheduler_available_filters = nova.scheduler.filtersall filters
  • 另外还有一一个选项schedyler_default_filters用于指定nova-scheduler服务真正使用的过滤器,默认值如下
Scheduler_ delault filters = RetryFilters, AvailabiltyZoneFilter, RamFilter,
ComputeFilter, ComputeCapabilitiesFilter, ImagePropertiesFilter,
ServerGroupAntiffinityFilter, ServerGroupAffinityFilter

过滤器将从以下几个方面进行过滤:

  • RetryFilter(再审过滤器)
    主要作用是过滤掉之前已经调度过的节点。如A. B、C都通过了过滤,A权重最大被选中执行操作,由于某种原因,操作在A上失败了。Nova-litr将重新执行过滤操作,那么此时A就被会RetryFilter直接排除,以免再次失败
  • AvailabilityZoneFilter (可用区域过滤器)
    为提高容灾性并提供隔离服务,可以将计算节点划分到不同的可用区域中Openstack默认有一一个命名为nova的可用区域, 所有的计算节点初始是放在nova区域中的。用户可以根据需要创建自己的-一个可用区域。创建实例时,需要指定将实例部署在哪个可用区域中。Nova scheduler执行过滤操作时,会使用AvailabilityZoneFilter不属于指定可用区域计算节 点过滤掉
  • RamFilter (内存过滤器)
    根据可用内存来调度虚拟机创建,将不能满足实例类型内存需求的计算节点过滤掉,但为了提高系统资源利用率,Openstack在计算节 点的可用内存时允许超过实际内存大小,超过的程度是通过nova .con配置文件中ram. allocation. ratio参数来控制的,默认值是1.5。
vi /etc/nova/nova.conf
ram_allocation_ratio=1.5
  • DiskFilter (硬盘调度器)
    根据磁盘空间来调度虚拟机创建,将不能满足类型磁盘需求的计算节点过滤掉。磁盘同样允许超量,超量值可修改nova .con中disk. alocation. _ratio参数控制,默认值是1.0。
vi /etc/nova/nova.conf
disk_allocation_ratio=1.0
  • CoreFilter(核心过滤器)
    根据可用CPU核心米响度应拟忆创廷,将个能满正头例夫型VCPU需冰的计算节点过宽掉。vCPU也允许超量,超量值是通过修改nova. conf中cpu_ llocation. ratio参数控制,默认值是16。
vi /etc/nova/nova. conf
cpu_allocation_ratio=16.0
  • ComputeFilter(计算过滤器)
    保证只有nova-compute服务正常工作的计算节点才能被nova-scheduler调度,它是必选的过滤器。
  • ComputeCapablilitiesFilter (计算能力过滤器)
    根据计算节点的特性来过滤,如x86_ 64和ARM架构的不同节点,将实例分别进行过滤
  • ImagePropertiesFilter(镜像属性过滤器)
    根据所选镜像的属性来筛选匹配的计算节点。通过元数据来指定其属性。如希望镜像只运行在KVM的Hyperisor上,可以通过Hypervisor Type属性来指定。
  • ServerGroupAntiAffinityFilter( 服务器组反亲和性过滤器)
    要求尽量将实例分散部署到不同的节点上。即考虑到实例之间的服务会相互冲突,将实例泡在不同的服务器上
  • ServerGroupffinityilter(服务器组亲和性过滤器)
    与反亲和性过滤器相反,此过滤器尽量将实例部署到同一个计算节点上
    在这里插入图片描述

计算节点的资源会通过计划任务的方式会分两次实时更新到数据库。
创建虚拟机的时候, Scheduler 会根据 DB 库中收集的计算节点的资源。
在 Scheduler 创建计算节点后,会返回一个值给 DB 库,从而在下一次创建虚拟机的时候,不会因为 DB 库中更新不及时的原因造成创建虚拟机失败

2.2.2 weight(权重)

  • 根据权重大小进行分配,默认根据资源可用空间进行权重排序
  • OpenStack源码位置
/usr/lib/python2.7/site-packages
  • 权重源码位置
/usr/lib/python2.7site-packages/nova/scheduler/weights

2.3 Compute(计算器)

  • Nova-compute在计算节点上运行,负责管理节点上的实例。通常一个主机运行一个Nova-compute服务,一个实例部署在哪个可用的主机上取决于调度算法。OpenStack对实例的操作,最后都是提交给Nova-compute来完成。
  • Nova-compute可分为两类,一类是定向openstack报告计算节点的状态,另一类是实现实例生命周期的管理。

2.3.1 支持方式

通过Driver (驱动)架构支持多种Hypervisor虚拟机管理器

  • 面对多种Hypervisor, nova-compute为这些Hypervisor定义统一的接口。
  • Hypervisor只需要实现这些接口, 就可以Driver的形式即插即用到OpenStack系统中。

2.3.2 功能

  • 定期向OpenStack报告计算节点的状态
    1.每隔一-段时间,nova-compute就会报告当前计算节点的资源使用情况和nova-compu
    服务状态。
    2.nova-compute是通过Hypervisor的驱动获取这些信息的。
  • 实现虚拟机实例生命周期的管理
    1.OpenStack对虚拟机实例最主要的操作都是通过nova-compute实现的。创建、关闭、重启、挂起、恢复、中止、调整大小、迁移、快照。
    2.以实例创建为例来说明nova- compute的实现过程。
    (1)为实例准备资源。
    (2)创建实例的镜像文件。
    (3)创建实例的XML定义文件。
    (4)创建虚拟网络并启动虚拟机。

2.4 Conductor(管理器)

  • 由nova-conductor模块实现,旨在为数据库的访问提供一层安全保障。Nova-conductor作为nova-compute服务与数据库之间交互的中介,避免了直接访问由nova-compute服务创建对接数据库。
  • Nova-compute访问数据库的全部操作都改到nova-conductor中,nova-conductor作为对数据库操作的一个代理,而且nova-conductor是部署在控制节点上的。
  • Nova-conductor有助于提高数据库的访问性能,nova-compute可以创建多个线程使用远程过程调用(RPC)访问nova-conductor。
  • 在一个大规模的openstack部署环境里,管理员可以通过增加nova-conductor的数量来应付日益增长的计算节点对数据库的访问量。

2.5 PlacementAPI(安置接口)

  • 以从前对资源的管理全部由计算节点承担,在统计资源使用情况时,只是简单的将所有计算节点的资源情况累加起来,但是系统中还存在外部资源,这些资源由外部系充提供。如ceph、 nfs等提供的存储资源等。面对多种多样的资源提供者,管理员需要统一的、简单的管理接口来统计系统中资源使用情况,这个接口就是PlacementAPl。
  • PlacementAPl由nova-placement-api服务来实现, 旨在追踪记录资源提供者的目录和资源使用情况。
  • 被消费的资源类型是按类进行跟踪的。如计算节点类、共享存储池类、IP地址类等。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

踏入OpenStack大门,Nova计算服务讲解 的相关文章

  • Openstack常用命令

    目录 一 创建用户 二 创建删除模板和模板其他操作 三 创建更新删除镜像 四 创建网络 五 VPN的使用 六 创建容器swift模块 前言 在linux中使用openstakc命令前 需要source etc keystone admin
  • OpenStack--部署块存储cinder

    通过 cinder 使用 lvm 卷提供后端存储 官方部署文档 https docs openstack org ocata zh CN install guide rdo cinder html 1 数据库准备 1 创建数据库并授权 ro
  • Pecemaker+Corosync+Haproxy高可用Openstack集群实战

    一 DRBD简介 DRBD的全称为 Distributed Replicated Block Device DRBD 分布式块设备复制 DRBD是由内核模块和相关脚本而构成 用以构建高可用性的集群 其实现方式是通过网络来镜像整个设备 它允许
  • kolla-ansible部署openstack+opendaylight

    1 环境准备 准备三台机器 分别作为OpenStack的controller和compute节点 OpenDayLight节点 另外把controller作为本次的部署节点 其中controller和compute节点各两张网卡 odl节点
  • OpenStack企业级实战

    一 环境初始化 1 CentOS7一键安装OpenStack 安装参考 Install RDO 前提条件 准备一个8g或16g内存的centos7 有一块网卡可以访问internet 磁盘 40G cpu分2 4线程 cpu要开启虚拟化 r
  • OpenStack nova-compute 报TooOldComputeService版本过低问题

    项目场景 安装openstack的nova compute部分 问题描述 启动nova conductor时报错 查看nova conductor log 发现如下错误 Current Nova version does not suppo
  • OpenStack主要功能和作用

    OpenStack主要组件和作用 openstack是一个开源的云计算管理平台 由几个重要的组件结合起来完成工作 openstack支持所有类型的云环境 实施简单可以大规模扩展丰富标准统一的云计算管理平台 openstack通过各种互补的服
  • OpenStack实例控制台报错

    OpenStack实例控制台报错1006 环境说明 操作系统信息 CentOS Linux release 7 9 2009 Core Linux node2 yun com 5 4 226 1 el7 elrepo x86 64 Open
  • openstack实战之使用sysprep工具封装windows7镜像

    openstack实战之使用sysprep工具封装windows7镜像 在openstack云平台环境下 使用sysprep封装windows7系统主要目的是清理虚拟机的SID 避免使用同一windows7镜像克隆出的虚拟机出现相同的SID
  • Python运维开发:基于openstack RestfulAPI上传镜像和创建云主机

    基础环境 python 脚本文件头建议加入 encoding utf 8 避免编码错误 测试脚本代码用python3命令执行与测试 在linux系统中安装Python3 并安装request等依赖包 配置 有一台搭建好的open stack
  • neutron的DHCP错误之”sudo: unable to resolve host node-1\novs-vsctl:“

    问题背景 使用ESX创建虚拟机 并在虚拟机上创建一个三节点的openstack环境 参考官方的ICEHOUSE版本 注 ubuntu 14 04只支持到icehouse版 为加快虚拟机的创建时间 本文首先创建了一个控制节点c 1 并进行更新
  • cehp 维护(二)常见告警维护

    零 修订记录 序号 修订时间 修订内容 1 2021 11 18 新增 一 摘要 笨猪主要介绍ceph常见告警及维护方法或过程中遇到的问题 二 环境信息 2 1 ceph版本 cephadmin proceph01 ceph v ceph
  • Openstack - 更改仪表板的管理员密码

    在哪里可以更改 Openstack 中仪表板的管理员密码 我使用 packstack 安装程序安装了 openstack keystonerc admin 文件中的密码也不起作用 我使用 CentOS 6 3 并且我可以访问配置文件 用户名
  • 如何从外网访问MicroStack VM实例

    我已经安装了 MicroStack 并启动了一个 Cirros 实例 如中所述MicroStack 文档 一切都按预期进行 Cirros 实例位于10 20 20 202 22可以从安装了 MicroStack 的主机上获取 主机IP LA
  • openstacksdk如何更改当前用户密码

    我找到了CLI or API请求方法 它们对我有用 如下所示 source etc kolla admin openrc sh openstack user password set password newpsw original pas
  • 创建新的 docker-machine 实例始终无法使用 openstack 驱动程序验证证书

    每次我尝试通过创建一个新实例docker machine在开放堆栈上 我总是在验证证书时收到此错误 我必须在创建实例后立即重新生成证书才能使用这些实例 docker machine create driver openstack opens
  • 安装pbr时出错

    我想在运行 OSX 10 8 5 的计算机上安装 openstack 客户端 作为先决条件 我需要安装 pbr 所以 我做了以下事情 git clone git github com openstack dev pbr git cd pbr
  • 云平台- sudo:无法解析主机[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我在 Amazon EC2 和 openstack 上使用 Linux 作为基于云的服务器 当尝试运行时 sudo chhown ubun
  • 如何使用 cloud-init 安装 docker?

    我想在 Openstack 中创建实例 在通过 ssh 连接之前 这些实例中已经安装了 Docker 所以我很自然地对 Cloud init 技术感兴趣 因为它允许我们在第一次启动时在虚拟机上安装软件包 所以现在我尝试在启动时在我的实例上安
  • 服务无法启动虚拟机“DockerDesktopVM”,因为 Hyper-V 组件之一未运行

    我有 Window Server 2016 2019 虚拟机 Openstack 至此Hyper V安装成功 但无法启动 MobyLinuxVM ExposeVirtualizationExtensions 已通过 PowerShell 在

随机推荐

  • 双系统下ubuntu18.04装拓展显示屏血泪史

    1 背景 xff1a 买了块新显示器 xff0c 想在ubuntu18 04下使用 xff0c 得装驱动 xff0c 刚开始按网上的一个教程 xff0c 直接把内核装坏了 xff0c 后来重装过系统才最终完成拓展屏的功能实现 xff0c 特
  • ROS工作空间、功能包创建,编译相关的C++/python程序详解

    有关工作空间的结构 xff1a WorkSpace 自定义的工作空间 build xff1a 编译空间 xff0c 用于存放CMake和catkin的缓存信息 配置信息和其他中间文件 devel xff1a 开发空间 xff0c 用于存放编
  • VScode配置ROS环境下Debug调试

    参考 xff1a VScode debug ROS cpp程序设置 断点调试 ABC Orange的博客 CSDN博客 poll failed with error interrupted system call Get Started w
  • C++速成(封装、继承和多态)

    前前言 xff1a 如果有时间 xff0c 搜一个完整的教程看 xff0c 用到啥学啥 xff0c 这样可能可以省更多的时间 61 61 前言 xff1a C 43 43 的命名规范 C 43 43 命名规范 ajioy的博客 CSDN博客
  • 神经网络与深度学习课程总结二

    深度学习平台介绍 1 1PyTorch是一个Python的深度学习库 它最初由Facebook人工智能研 究小组开发 xff0c 而优步的Pyro软件则用于概率编程 1 1 1PyTorch基本使用 基本概念 张量 xff08 Tensor
  • 神经网络与深度学习课程总结三

    一 数据集与评价指标 算法评估 xff1a P R曲线 mAP计算 二 目标检测与YOLO 目标检测问题 xff1a 目标检测是在给定的图片中精确找到物体所在位置 并标注出物体的类别 物体的尺寸变化范围很大 摆放物体的角度 姿态不定 而且可
  • 神经网络与深度学习课程总结四

    一 数据处理基础 1 1特征编码 xff1a 第1列表示年龄 xff0c 是一个数值特征 第2列表示性别 xff0c 是一个只有一位 xff08 0 xff0c 1 xff09 的特征 0 gt Male 1 gt Female 第3列表示
  • 高大上的数据可视化图表,只需6步就能完成

    一份高质量的数据可视化图表 xff0c 能够让你清晰 全面地传达出数据信息 xff0c 成为你工作 学习 竞赛的助推器 xff01 因此 xff0c 一款功能强大的可视化软件显得尤为重要 xff01 最近博主在用的百度 Sugar BI x
  • 从零开始的MySQL学习,完全备份、增量备份和备份恢复

    文章目录 一 数据备份的重要性二 数据库备份的分类从物理与逻辑的角度从数据库的备份策略角度 三 完全备份完全备份的优点完全备份的缺点 四 mysqldump备份库备份单个库备份多个库备份所有库备份表 五 备份恢复source命令恢复mysq
  • 【错误归纳】rsync远程同步:报错password file must not be other-accessible

    实验场景 xff1a rsync远程同步 故障现象 xff1a 做rsync远程同步时 xff0c 当时在发起端输入了以下命令 调用了免密方式同步文件 rsync span class token operator span az span
  • Linux就该这么学,GlusterFS分布式原理和架构

    文章目录 一 GlusterFS概述GlusterFS的简介GlusterFS的特点GlusterFS的相关用语模块化堆栈式架构 二 GlusterFS工作原理GlusterFS工作流程弹性hash算法 三 GlusterFS的卷类型分布式
  • 【错误归纳】创建GlusterFS卷:报错Mount failed. Please check the log file for more details

    实验场景 xff1a 创建GlusterFS复制卷 故障现象 xff1a 创建GlusterFS复制卷 客户端挂载时出错 root 64 client mount glusterfs node1 rep vol hyc rep vol Mo
  • 【归纳总结】MySQL5.6与5.7区别

    文章目录 一 编译安装区别下载软件带boost的mysql源码安装不带boost的mysql源码安装 二 初识化时的区别三 功能和特性的区别 一 编译安装区别 Mysql5 7版本更新后有很多变化 xff0c 比如json等 xff0c 连
  • 今天也来点Docker,端口映射与容器互联

    文章目录 一 端口映射1 1 概述1 2 随机端口1 3 映射指定端口 二 容器互联 一 端口映射 1 1 概述 在启动容器的时候 xff0c 如果不指定对应的参数 xff0c 在容器外部是无法通过网络来访问容器内部的网络应用和服务的 当容
  • 今天也来点Docker,Consul服务(自动发现的Docker架构)

    文章目录 一 Consul 理论概述1 1 简介1 2 使用场景1 3 优势1 4 consul 端口 二 基于Docker的Consul服务搭建2 1 部署环境2 2 部署Consul服务2 3 容器服务自动加入nginx集群2 4 验证
  • 【错误归纳】yum安装docker-ce报错

    实验场景 xff1a yum安装docker ce 故障现象 xff1a root 64 docker2 yum repos d yum config manager add repo https mirrors aliyun com do
  • 今天也来点Docker,Docker-TLS加密通讯

    这里写目录标题 一 TLS加密通讯的概述二 TLS加密通讯的部署2 1 搭建环境2 2 部署过程2 3 验证加密通讯 一 TLS加密通讯的概述 用TLS加密通讯原因 xff1a 为了防止链路劫持 会话劫持等问题导致 Docker 通信时被中
  • Nginx+Tomcat动静分离的部署

    文章目录 一 动静分离的原理二 动静分离的优势三 项目部署3 1 项目环境3 2 nginx 服务器部署3 3 Tomcat 服务器部署3 4 客户端验证服务器状态3 5 动静分离配置3 6 验证动态配置 一 动静分离的原理 服务端接收来自
  • 数据门户是什么?

    数据门户可以通过配置导航菜单 xff0c 自由组合报表 屏 数据填报 外部链接等资源 xff0c 形成 个可通过 定义地址统一访问的资源 数据门户可 便用户对多个关联 进 集中查看 其主要应 用场景为 制作主题性数据 网站或主题性报表 xf
  • 踏入OpenStack大门,Nova计算服务讲解

    文章目录 一 Nova计算服务概述1 1 Nova简介1 2 Nova系统架构1 3 Nova 部署 Cell 二 Nova组件详细介绍2 1 API xff08 通信接口 xff09 2 2 Scheduler xff08 调度器 xff