• 学习OpenStack-Nova计算服务


    一、Nova计算服务的概念

    ·计算服务是OpenStack最核心的服务之一,负责维护和管理云环境的计算资源,它在OpenStack项目中代号是Nova

    ·Nova自身并没有提供任何虚拟化能力,它提供计算服务,使用不同的虚拟化驱动来与底层支持的Hypervisor(虚拟机管理器)进行交互。所有的计算实例(虚拟服务器)由Nova进行实例生命周期(从创建到销毁/释放)的调度管理(启动、挂起、停止、删除等)

    ·Nova需要Keystone、glance、neutron、cinder和swift等其他服务的支持,能与这些服务集成,实现如加密磁盘、裸金属计算实例等

    Nova服务和其他服务的区别,例如Glance镜像服务

    Glance服务:对自己服务范围提供管理,提供自己的服务

    Nova服务:本身不能提供服务,需要和其他核心服务集成,进行调用,最终实现需求

    二、Nova系统架构

    DB:用于数据存储的sql数据库

    API:用于接收HTTP请求、转换命令、通过消息队列或HTTP与其他组件通信的nova组件

    Scheduler:用于决定哪台计算节点承载计算实例的nova调度器

    Network:管理IP转发、网桥或虚拟局域网的nova网络组件

    Compute:管理虚拟机管理器(KVM)与虚拟机之间通信的nova计算组件

    Conductor:处理需要协调(构建虚拟机或调整虚拟机大小)的请求,或者处理对象转换,避免越权

    ·只要跟虚拟机生命周期相关的操作,nova-api都可以相应

    ·Nova-api对接收到的HTTP API请求做以下处理:

    1)检查客户端传入的参数是否合法有效

    2)调用nova其他服务来处理客户端HTTP请求

    3)格式化nova其他子服务返回结果并返回给客户端

    ·Nova-api是外部访问并使用nova提供的各种服务的唯一途径,也是客户端和nova之间的中间层

    三、Nova组件-API

    ·API是客户访问nova的http接口,它由nova-api服务实现,nova-api服务接收和响应来自最终用户的计算api请求。作为openstack对外服务的最主要接口,nova-api提供了一个集中的可以查询所有api 的端点。

    ·所有对nova的请求都首先由nova-api处理。API提供REST标准调用服务,便于与第三方系统集成。

    ·最终用户不会直接改送RESTful API请求,而是通过openstack命令行、dashboard和其他需要跟nova交换的组件来使用这些API。

    ·只要跟虚拟机生命周期相关的操作,nova-api都可以相应

    ·Nova-api对接收到的HTTP API请求做以下处理:

    1) 检查客户端传入的参数是否合法有效

    2) 调用nova其他服务来处理客户端HTTP请求

    3) 格式化nova其他子服务返回结果并返回给客户端

    ·Nova-api是外部访问并使用nova提供的各种服务的唯一途径,也是客户端和nova之间的中间层

    四、Nova组件-Scheduler

    ·Scheduler可译为调度器,由nova-scheduler服务实现,主要解决的是如何选择在哪个计算节点上启动实例的问题。它可以应用多种规则,如果考虑内存使用率、CPU负载率、CPU构架(intel/amd)等多种因素,根据一定的算法,确定虚拟机实例能够运行在哪一台计算服务器上。Nova-scheduler服务会从队列中接收一个虚拟机实例的请求,通过读取数据库的内容,从可用资源池中选择最合适的计算节点来创建新的虚拟机实例。

    ·创建虚拟机实例时,用户会提出资源需求,如CPU、内存、磁盘各需要多少。OpenStack将这些需求定义在实例类型中,用户只需指定使用哪个实例类型

    调度器的类型:

    ·随机调度器:从所有正常运行nova-compute服务的节点中随机选择

    ·缓存调度器:是随机调度器的一种特殊类型,在随机调度器的基础上,将主机资源信息缓存在本地内存中,然后通过后台的定时任务,定时从数据库中获取最新的主机资源信息,周期性同步而不是实时获取主机资源信息。

    ·过滤器调度器:根据指定的过滤条件以及权重选择最佳的计算节点,又称为筛选器。

    过滤器调度器调度过程:

    ·通过指定的过滤器选择满足条件的计算节点,比如内存使用率,可以使用多个过滤器依次进行过滤。

    ·对过滤之后的主机列表进行权重计算并排序,选择最优的计算节点来创建虚拟机实例。

    调度器与DB的交互过程:

    ·scheduler组件决定的是虚拟机实例部署在哪台计算节点上并调度,在调度之前,会先向数据库获取宿主机资源信息作为依据;

    ·之后可通过过滤器和权重选择最合适的节点调度,或者指定节点直接调度;

    ·计算节点的 libvirt 工具负责收集宿主机的虚拟化资源,根据已创建的实例再次统计资源,将资源信息更新到数据库中,整个更新资源信息的过程是周期性执行的,而不是实时的;

    ·所以存在一个问题,当刚创建完一个实例,随即又需要创建时,数据库还未来得及更新宿主机的最新状态,那么调度器依据的信息就不正确,有可能所选的节点资源并不够用,而导致调度失败。

    ·这同时也是缓存调度器的缺陷,无法实时获取租主机资源信息。我们可在调度完成时,直接将资源信息返回给数据库,更新数据库状态,解决这个问题。

    过滤器

    ·当过滤调度器需要执行调度操作时,会让过滤器对计算节点进行判断,返回ture或false,按照主机列表中的顺序依次过滤。

    ·scheduler_available_filters 选项用于配置可用过滤器,默认是所有nova自带的过滤器都可以使用。

    ·scheduler_default_filters 选项用于指定nova-schedule 服务真正使用的过滤器。

    过滤器类型:

    ·RetryFilter(再审过滤器)
    主要作用是过滤掉之前已经调度过的节点(类比污点)。如A、B、C都通过了过滤,A权重最大被选中执行操作,由于某种原因,操作在A上失败了。Nova-filter 将重新执行过滤操作,再审过滤器直接过滤掉A,以免再次失败。

    ·AvailabilityZoneFilter(可用区域过滤器)
    主要作用是提供容灾性,并提供隔离服务,可以将计算节点划分到不同的可用区域中。Openstack默认有一个命名为nova的可用区域,所有计算节点一开始都在其中。用户可以根据需要创建自己的一个可用区域。创建实例时,需要指定将实例部署在那个可用区域中。通过可用区过滤器,将不属于指定可用区的计算节点过滤掉。

    ·RamFilter(内存过滤器)
    根据可用内存来调度虚拟机创建,将不能满足实例类型内存需求的计算节点过滤掉,但为了提高系统资源利用率, Openstack在计算节点的可用内存允许超过实际内存大小,可临时突破上限,超过的程度是通过nova.conf配置文件中ram_ allocation_ ratio参数来控制的, 默认值是1.5。(但这只是临时的)
    Vi /etc/nova/nova . conf
    Ram_ allocation_ ratio=1 .5

    ·DiskFilter(硬盘过滤器)
    根据磁盘空间来调度虚拟机创建,将不能满足类型磁盘需求的计算节点过滤掉。磁盘同样允许超量,超量值可修改nova.conf中disk_ allocation_ ratio参数控制,默认值是1.0,(也是临时的)
    Vi /etc/nova/nova.conf
    disk_ allocation_ ratio=1.0

    ·CoreFilter(核心过滤器)
    根据可用CPU核心来调度虚拟机创建,将不能满足实例类型vCPU需求的计算节点过滤掉。vCPU也允许超量,超量值是通过修改nova.conf中cpu_ allocation_ratio参数控制,默认值是16。
    Vi /etc/nova/nova. conf
    cpu_allocation_ ratio=16.0

    ·ComputeFilter(计算过滤器)
    保证只有nova-compute服务正常工作的计算节点才能被nova-scheduler调度,它是必选的过滤器。

    ·ComputeCapabilitiesFilter(计算能力过滤器)
    根据计算节点的特性来过了,如不同的架构。

    ·ImagePropertiesFilter(镜像属性过滤器)
    根据所选镜像的属性来筛选匹配的计算节点,通过元数据来指定其属性。如希望镜像只运行在KVM的Hypervisor上,可以通过Hypervisor Type属性来指定。

    ·服务器组反亲和性过滤器
    要求尽量将实例分散部署到不同的节点上,设置一个服务器组,组内的实例会通过此过滤器部署到不同的计算节点。适用于需要分开部署的实例。

    ·服务器组亲和性过滤器
    此服务器组内的实例,会通过此过滤器,被部署在同一计算节点上,适用于需要位于相同节点的实例服务

  • 相关阅读:
    Mvc+三层(批量添加、删除、修改)
    js中判断复选款是否选中
    EF的优缺点
    Git tricks: Unstaging files
    Using Git Submodules
    English Learning
    wix xslt for adding node
    The breakpoint will not currently be hit. No symbols have been loaded for this document."
    Use XSLT in wix
    mfc110ud.dll not found
  • 原文地址:https://www.cnblogs.com/Xing88/p/14186111.html
Copyright © 2020-2023  润新知