赞
踩
一、什么是openstack
OpenStack 是一系列开源工具(或开源项目)的组合,主要使用池化虚拟资源来构建和管理私有云及公共云。其中的六个项目主要负责处理核心云计算服务,包括计算、网络、存储、身份和镜像服务。还有另外十多个可选项目,用户可把它们捆绑打包,用来创建独特、可部署的云架构。
二、云计算模式
①IaaS:基础设施即服务(个人比较习惯的):用户通过网络获取虚机、存储、网络,然后用户根据自己的需求操作获取的资源
②PaaS:平台即服务:将软件研发平台作为一种服务, 如Eclipse/Java编程平台,服务商提供编程接口/运行平台等
③SaaS:软件即服务 :将软件作为一种服务通过网络提供给用户,如web的电子邮件、HR系统、订单管理系统、客户关系系统等。用户无需购买软件,而是向提供商租用基于web的软件,来管理企业经营活动
三、OpenStack 中有哪些项目?
OpenStack 架构由大量开源项目组成。其中包含 8个稳定可靠的核心服务,用于处理计算、网络、存储、身份和镜像; 同时,还为用户提供了十多种开发成熟度各异的可选服务。OpenStack 的 8 个核心服务主要担纲系统的基础架构,其余项目则负责管理控制面板、编排、裸机部署、信息传递、容器及统筹管理等操作。
四、OpenStack核心组件、可选组件以及其他组件介绍
分类 | 服务 | 项目名称 | 功能 |
---|---|---|---|
核心组件 | Compute (计算服务) | Nova | 管理虚拟机的整个生命周期:创建、运行、挂起、调度、关闭、销毁等。这是真正的执行部件。接受 DashBoard 发來的命令并完成具体的动作。但是 Nova 不是虛拟机软件,所以还需要虚拟机软件(如 KVM、Xen、Hyper-v 等)配合 |
Network(网络服务) | Neutron | 管理网络资源,提供/一组应用编程接口(API),用户可以调用它们来定义网络(如 VLAN ),并把定义好的网络附加给租户。Networking 是一个插件式结构,支持当前主流的网络设备和最新网铬技术 | |
Object Storage(对象存储服务) | Swift | 是 NoSQL 数据库,类似 HBase,为虚拟机提供非结构化数据存储,它把相同的数据存储在多台计箅机上,以确保数据不会丢失。用户可通过 RESTful 和 HTTP 类型的 API 来和它通信。这是实际的存储项目,类似 Ceph,不过在 OpcnStack 具体实施时,人们更愿意采用 Ceph | |
Block Storage(块存储服务) | Cinder | 管理块设备,为虚拟机管理 SAN 设备源。但是它本身不是块设备源, 需要一个存储后端来提供实际的块设备源(如 iSCSI、FC等)。Cinder 相当于一个管家,当虚拟机需要块设备时,询问管家去哪里获取具体的块设备。它也是插件式的,安装在具体的 SAN 设备里 | |
Identity(身份认证服务) | Keystone | 为其他服务提供身份验证、权限管理、令牌管理及服务名册管理。要使用云计算的所有用户事先需要在 Keystone 中建立账号和密码,并定义权限(注意:这里的“用户”不是指虚拟机里的系统账户,如 Windows 7 中的 Administrator )。另外,OpenStack 服务(如 Nova、Neutron、Swift、Cinder 等)也要在里面注册,并且登记具体的 API,Keystone 本身也要注册和登记 API | |
Image Service(镜像服务) | Glance | 存取虚拟机磁盘镜像文件,Compute 服务在启动虚拟机时需要从这里获取镜像文件。这个组件不同于上面的 Swift 和 Cinder,这两者提供的 存储是在虚拟机里使用的 | |
Dashboard(控制面板服务) | Horizon | 提供了一个网页界面,用户登录后可以做这些操作:管理虚拟机、配置权限、分配 IP 地址、创建租户和用户等。本质上就是通过图形化的 操作界面控制其他服务(如 Compute、Networking 等)。当然,如果你熟悉命令,也可以直接采用命令来完成相应的任务 | |
Telemetry(计量服务) | Ceilometer | 结合 Aodh、CloudKitty 两个组件,完成计费任务,如结算、消耗的 资源统计、性能监控等。OpenStack 之所以能管理公共云,一是因为 Ceilometer 的存在,二是因为引人了租户的概念 |
分类 | 服务 | 项目名称 | 功能 |
---|---|---|---|
可选组件 | Heat | 如果要在成千上万个虚拟机里安装和配置同一个软件,该怎么办?采用 Orchestrates 是一个不错的主意,它向每个虚拟机里注人一个名叫 heat-cfntools 的客户端工具,然后就能同时操作很多虚拟机 | |
Sahana | 使用户能够在 OpenStack 平台上(利用虚拟机)一键式创建和管理 Hadoop 集群,实现类似 AWS 的 EMR(Amazon Elastic MapReduce Service)功能。用户只需要提供简单的配置参数和模板,如版本信息(CDH 版本)、集群拓扑(几个 Slave、几个 Datanode)、节点配置信息(CPU、内存)等,Sahara 服务就能够在几分钟内根据提供的模板快速 部署 Hadoop、Spark 及 Storm 集群。Sahana 是一个大数据分析项目 | ||
Ironic | 把裸金属机器(与虚拟机相对)加人到资源池中 | ||
Zaqar | Zaqar 为 Web 和移动开发者提供多租户云消息和通知服务,开发人员可以通过 REST API 在其云应用的不同组件中通过不同的通信模式(如 生产者/消费者或发布者/订阅者)来传递消息 | ||
Barbican | 是 OpenStack 的密钥管理组件,其他组件可以调用 Barbican 对外暴露的 REST API 来存储和访问密钥 | ||
Manila | 为虚拟机提供文件共享服务,不过需要存储后端的配合 | ||
其他组件 | Congress(策略服务)、Designate(DNS 服务)、Freezer(备份及还原服务)、Magnum(容器支持)、Mistral(工作流服务)、Monasca(监控服务)、Searchlight(索引和搜索)、Senlin(集群服务)、Solum(APP集成开发平台)、Tacker(网络功能 虚拟化)、Trove(数据库服务) |
五、Openstack优势
①模块松耦合:与其他开源软件相比,OpenStack模块分明。添加独立功能的组件非常简单。有时候,不需要通读整个OpenStack的代码,只需要了解其接口规范及API使用,就可以轻松地添加一个新的模块
②组件配置较为灵活:OpenStack也需要不同的组件。但是OpenStack的组件安装异常灵活。可以全部都装在一台物理机上,也可以分散至多个物理机中,甚至可以把所有的结点都装在虚拟机中。
③二次开发容易:OpenStack发布的OpenStack API是Rest-full API。其他所有组件也是采种这种统一的规范。因此,基于OpenStack做二次开发,较为简单。而其他3个开源软件则由于耦合性太强,导致添加功能较为困难。
④兼容性:OpenStack兼容其他公有云,方便用户进行数据迁移。
⑤可扩展性:模块化设计,可以通过横向扩展,增加节点、添加资源。
六、OpenStack架构
OpenStack是由一系列具有RESTful接口的Web服务所实现的,是一系列组件服务集合。如下图为OpenStack的概念架构,我们看到的是一个标准的OpenStack项目组合的架构。这是比较典型的架构,但不代表这是OpenStack的唯一架构,我们可以选取自己需要的组件项目,来搭建适合自己的云计算平台,设计的基本原则如下:
①按照不同的功能和通用性来划分不同项目并拆分子系统
②按照逻辑计划、规格子系统之间的通信
③通过分层设计整个系统架构
④不同的功能子系统间提供统一的API接口
概念架构图
云平台用户在经过Keystone服务认证授权后,通过Horizon或者Reset API模式创建虚拟机服务,创建过程中包括利用Nova服务创建虚拟机实例,虚拟机实例采用Glance提供镜像服务,然后使用Neutron为新建的虚拟机分配IP地址,并将其纳入虚拟网络中,之后再通过Cinder创建的卷为虚拟机挂载存储块,整个过程都在Ceilometer模块资源的监控下,Cinder产生的卷(Volume)和Glance提供的镜像(Image)可以通过Swift的对象存储机制进行保存。
逻辑架构图
①虽然上面这幅图看上去很复杂,但是分层去看的话,就可以较为容易的去了解它,OpenStack包括若干个服务的独立组件,像之前我们提到的核心组件以及一些可选组件都是在这幅图里面的,比如nova、keystone、Horizon等,我们先去找到这些组件,然后再去分析下一层
②每个组件里有各自的一些服务,所有服务都需要通过keystone进行身份验证,每个服务之间又可以关联若干个组件,每个服务至少有一个API进程,通过去监听API的请求,并对这些请求进行预处理,并将它们发送到相对于该服务的其他组件,服务之间可以通过公共API进行交互
③服务之间的通信使用AMQP消息代理,将服务的状态信息存储在数据库中
OpenStack组件通信关系:
①基于HTTP协议进行通信:通过各项目的API建立的通信关系,API都是RESTful Web API
②基于SQL的通信:用于各个项目内部的通信
③基于AMQP协议的通信:用于每个项目内部各个组件之间的通信
④通过Native API实现通信:Openstack各组件和第三方软硬件之间的通信
OpenStack物理架构
整个OpenStack是由控制节点,计算节点,网络节点,存储节点四大部分组成。
控制节点负责对其余节点的控制,包含虚拟机建立,迁移,网络分配,存储分配等等
计算节点负责虚拟机运行
网络节点负责对外网络与内网络之间的通信
存储节点负责对虚拟机的额外存储管理等等
①控制节点
控制节点包括支持服务、基础服务、扩展服务以及管理网络
1)因为控制节点是管理整个OpenStack进行运作的,所有需要keystone身份认证服务以及Harizon控制面板服务这样的全局组件来对OpenStack进行管控和操作
2)为虚拟机提供一些相对应的基础资源,比如glance镜像服务为虚拟机提供磁盘镜像文件、network网络服务对网络资源进行管理,提供/一组应用编程接口(API),用户可以调用它们来定义网络以及nova计算服务管理虚拟机的整个生命周期
3)数据的存储以及通信支持,我们使用到的是Mysql与RabbitMQ,后续我们需要对数据进行管理需要使用Cinder、Swift以及trove服务,并且提供对物理资源以及虚拟资源的监控,并记录这些数据,对该数据进行分析,在一定条件下触发相应动作的ceilometer计量服务,而且还需要基于模板来实现云环境中资源的初始化,依赖关系处理,部署等基本操作,也可以解决自动收缩,负载均衡等高级特性的heat服务
4)管理私有网段与公有网段的通信,以及管理虚拟机网络之间的通信/拓扑,所以需要网络接口和外面进行连通
②网络节点
只有一个基础服务,Neutron网络服务。负责整个openstack架构的网络通信。整个网络接口又可分为管理网络、数据网络、外部网络。管理网络负责关联其他节点的网络,让控制节点可管控其他节点的网络。数据网络负责整个架构的数据通信。外部网络负责架构与外部物理网络的连接通信。
③计算节点
计算节点包括基础服务、扩展服务、网络接口。基础服务有Nova Hypervisor 和网络插件代理。扩展服务为ceilometer agent 计量代理服务。网络接口为管理网络和数据网络。
④存储节点
存储节点包括cinder和swift两个基础的存储服务和网络接口。网络接口为管理网络和数据网络。
七、核心服务概述
7.1、Keystone身份认证服务
7.1.1、Keystone概念
Keystone (OpenStack Identity Service)是OpenStack中的一个独立的提供安全认证的模块,主要负责openstack用户的身份认证、令牌管理、提供访问资源的服务目录、以及基于用户角色的访问控制。
Keystone类似一个服务总线,或者说是整 个Openstack框架的注册表,其他服务通过keystone来注册其服务的Endpoint (服务访问的URL),任何服务之间相互的调用,需要经过Keystone的身 份验证,来获得目标服务的Endpoint来找到目标服务。
7.1.2、主要功能
身份认证:负责令牌的发放和校验
用户授权:授权用户有指定的可执行动作的范围
用户管理:管理用户的账户
服务目录:提供可用服务的API端点位置
7.1.3、Keystone的管理对象
Keystone服务贯穿整个架构,在进行身份认证服务的整个流程中,有几个重要的概念。
①用户(user):指的是使用openstack架构的用户。
②证书(credentials):用于确认用户身份的凭证,证明自己是自己,包括用户的用户名和密码,或是用户名和API密钥,或者身份管理服务提供的认证令牌。
③认证(authentication):确定用户身份的过程。
④项目(project):可以理解为一个人,或服务所拥有的资源的集合。
⑤角色(role):用于划分权限,通过给user指定role,使user获得role对应操作权限
⑥服务(service):openstack架构的组件服务,如nova、neutron、cinder、swift、glance等。
⑦令牌(token):由字符串表示,作为访问资源的凭证,是用户的身份/权限证明文件;token决定了用户的权限范围,在指定的权限内进行操作;也包括令牌的有效期,在指定的时间范围内用户才有这些权限。
⑧端点(endpoint):一个可以通过网络来访问和定位某个openstack service的地址,即用户创建一个项目过程中需要的各个服务资源的位置
Keystone工作流程
①用户通过命令行或者horizon控制面板的方式登录openstack,凭借自己的证书(credentials)给keystone验证。
②Keystone对用户的证书验证,验证通过则会发布一个令牌(token)和用户所需服务的位置点(endpoint)给用户。
③用户得到了位置点(endpoint)之后,携带自己的令牌,向nova发起请求,请求创建虚拟机。
④nova会拿着用户的token向keystone进行认证,看是否允许用户执行这样的操作。
⑤keystone认证通过之后,返回给nova,nova即开始执行创建虚拟机的请求。首先需要镜像资源,nova带着令牌(token)和所需要的镜像名向glance提出镜像资源的请求。
⑥glance会拿着token去向keystone进行认证,看是否允许提供镜像服务。keystone认证成功后,返回给glance。glance向nova提供镜像服务。
⑦创建虚拟机还需要网络服务,nova携带token向neutron发送网络服务的请求
⑧neutron拿着nova给的token向keystone进行认证,看是否允许向其提供网络服务。keystone认证成功后,返回给nuetron。nuetron则给nova提供网络规划服务。
⑨nova获取了镜像和网络之后,开始创建虚拟机,通过hypervisior可调用底层硬件资源进行创建。创建完成返回给用户,成功执行了用户的请求。
八、Glance镜像服务
8.1Glance的作用
Glance是openstack的镜像服务。它提供了虚拟镜像的查询、注册和传输等服务。Glance本身并不实现对镜像的存储的存储功能。Glance只是一个代理。它充当了镜像存储服务与Openstack的其他组件之间的纽带。Glance共支持两种镜像存储机制:简单文件系统和Swift服务存储镜像机制。简单文件系统是指将镜像保存在Glance节点的文件系统中。这种机制相对比较简单,但是存在不足。比如,由于没有备份机制,当文件系统损伤是麻将导致所有的镜像不可用。Swift服务存储镜像机制,是指将镜像以对象的形式保存在Swift对象存储服务器中,由于Swift具有非常健壮的备份还原机制,因此可以降低因为文件系统损伤而造成的镜像不可用情况。
Glance服务支持多种格式的虚拟磁盘镜像。其中包括raw/qcow2、VHD、VDI、VMDK、OVF、kernel和ramdisk。
可以把Glance当做一个对象存储代理服务。可以通过Glance存储任何其他格式的文件。
8.2 Glance镜像服务定义
它在OpenStack中的项目名称为Glance。在早期的OpenStack版本中,Glance只有管理镜像的功能,并不具备镜像存储功能。现在,Glance已发展成为集镜像上传、检索、管理和存储等多种功能的OpenStack核心服务
8.3 镜像服务
镜像服务就是用来管理镜像的,让用户能够发现、获取和保存镜像。在OpenStack中提供镜像服务的是Glance,其主要功能如下:
①查询和获取镜像的元数据和镜像本身
②注册和上传虚拟机镜像,包括镜像的创建、上传、下载和管理
③维护镜像信息,包括元数据和镜像本身
④支持多种方式存储镜像,包括普通的文件系统、Swift、Amazon S3等
⑤对虚拟机实例执行创建快照命令来创建新的镜像,或者备份虚拟机的状态
8.4 mage API的版本
Glance提供的RESTful API目前只有两个版本:API v1和API v2
v1只提供基本的镜像和成员操作功能,包括镜像创建、删除、下载、列表、详细信息查询、更新,以及镜像租户成员的创建、删除和列表
v2除了支持v1的所有功能外,主要增加了镜像位置的添加、删除、修改、元数据和名称空间操作,以及镜像标记操作
两个版本对镜像存储支持相同,v1从N版开始已经过时,迁移路径使用v2进行替代
8.5 镜像格式
虚拟机镜像文件磁盘格式
raw:无结构的磁盘格式
vhd:改格式通用于VMware、Xen、VirtualBox以及其他虚拟机管理程序
vhdx:vhd格式的增强版本,支持更大的磁盘尺寸
vmdx:一种比较通用的虚拟机磁盘格式
vdl:由VirtualBox虚拟机监控程序和QEMU仿真器支持的磁盘格式
iso:用于光盘(CD-ROM)数据内容的档案格式
ploop:由Virtualzzo支持,用于运行OS容器的磁盘格式
qcow2:由QEMU仿真支持,可动态扩展,支持写时复制(Copy on Write)的磁盘格式
aki:在Glance中存储的Amazon内核格式
ari:在Glance中存储的Amazon虚拟内存盘(Ramdisk)格式
ami:在Glance中存储的Amazon机器格式
虚拟机镜像文件容器格式
bare:没有容器或元数据“信封”的镜像
ovf:开放虚拟化格式
ova:在Glance中存储的开放虚拟化设备格式
aki:在Glance中存储的Amazon内核格式
ari:在Glance中存储的Amazon虚拟内存盘(Ramdisk)格式
Docker:在Glance中存储的容器文件系统的Docker的tar档案
如果不能确定选择哪种容器格式,那么简单地容器格式指定为bare是最安全地
8.6 镜像状态
镜像从上传到识别的过程:
queued:初始化过程,镜像文件刚被创建,在Glance数据库只有其元数据,镜像数据还没有上传至数据库中
saving:导入数据库过程,是镜像地原始数据在上传到数据库中地一种过渡状态,表示正在上传镜像
uploading:提交给服务识别过程,指示已进行导入数据提交调用,此状态下不允许调用PUT/file(saving状态会执行PUT/file,这是另外一种上传的方法)
importing:准使用状态,指示已经完成导入调用,但是镜像还未准备好使用
镜像上载完成后的状态
active:表示可使用
deactivated:表示只对管理员开放的权限
killed:表示镜像上传中发生错误
deleted:镜像将在不久后自动删除,镜像不可用(保留数据)
pending_delete:与deleted类似,但是删除后无法恢复
8.7 访问权限
Public(公共的):可以被所有的项目使用
Private(私有的):只有被镜像所有者所在的项目使用
Shared(共享的):一个非共有的镜像可以共享给其他项目,这是通过项目成员(member-*)操作来实现的
Protected(受保护的):这种镜像不能被删除
8.8 架构图
①glance-api 是 glance服务后台运行的服务进程,是进入glance的入口,对外提供REST API ,负责接收外部客户端的服务请求,如响应镜像查询、获取和存储的调用。
②glance-registry 是服务后台远程的镜像注册服务,负责处理与镜像的元数据相关的外部请求,如镜像大小、类型等信息。glance-api 接收外部请求,若与元数据相关,则将请求转发给glance-registry,glance-registry会解析请求的内容,并与数据库交互,进行存储、处理、检索镜像的元数据,元数据所有信息即存储在后端的数据库中。
③glance的DB模块存储的是镜像的元数据,可以选用MySQL、mariaDB、SQLite等数据库。镜像的元数据是通过glance-registry存放在数据库中。镜像本身(chunk 块数据)是通过glance的存储驱动存储在后端的各种存储系统中。
④存储后端(store backend)将镜像本身的数据存放在后端存储系统,存储系统有多种存储方式,支持本地文件系统存储、对象存储、RBD块存储、Cinder块存储、分布式文件存储等。具体使用哪种backend,可以在glance的配置文件 /etc/glance/glance-api.conf 中配置 [glance-store] 模块。
8.9、流程解析
①红色方框是对客户端的请求进行认证和授权的服务流程:openstack的操作都需要经过keystone进行身份认证,并授权,glance也不例外,授权成功再去请求glance服务,glance服务接收到外部请求后,会去keystone进行认证,此请求是否已授权,认证通过后,才会将请求传到后端。
1)Auth(授权):用来控制镜像的访问权限,决定镜像信息是否可以修改
②黄色方框的glance domain controller 是主用的中间件,相当于调度器,作用是将glance 内部服务的操作分发到下面的各个功能层
1)Policy(规则定义):定义镜像操作的访问规则
2)Quota(配额限制):管理员对用户定义了镜像大小的镜像上传上限
3)Location(定位):通过glance_store与后台进行交互,在该层新位置添加进行时检查位置URI是否正确,防止镜像位置重复
③蓝色方框里镜像的元数据是通过glance-registry存放在数据库中。镜像本身(chunk 块数据)是通过glance的存储驱动存储在后端的各种存储系统中。
1)Registry Layer(注册层):通过使用单独的服务控制Glance Controller与Glance DB之间的安全交互
2)Glance DB:存储镜像的元数据信息
3)Glance Store:用来处理Glance和各种存储后端的交互,提供了一个统一接口来访问后端的存储
④绿色方框是存储后端(store backend)将镜像本身的数据存放在后端存储系统
1)DB(数据库):实现与数据库进行交互的API,将镜像转换为响应的格式存储在数据库中
好文要顶 关注我 收藏该文
九、Nova系统架构
Nova由多个服务器进程构成,每个进程执行不同的功能,下面介绍各个组件的功能
①DB:用于数据存储的sql数据库
②API:用于接收HTTP请求、通过消息队列或HTTP与其他组件通信
1)API是访问nova的接口,nova-api服务接收和处理来自用户的所有计算api请求,它是openstack对外服务最主要的接口并且提供了可以查询所有api的端点,也是外部访问并使用nova提供的各种服务的唯一途径,nova-api对接收到的api请求有以下几个步骤,首先检查客户端传过来的参数是否合法,如果合法则调用其他服务来处理客户端的HTTP请求,最后格式化nova其他子服务返回结果并返回给客户端
2)API提供REST标准调用服务,便于与第三方系统集成,只要与虚拟机生命周期相关的操作,nova-api都会响应
3)用户不会直接发送RESTful API请求,而是通过命令行、控制台和其他需要跟nova交换的组件来使用这些API
③Scheduler:用于决定那台计算节点承载计算实例的nova调度器
简介
1)调度器,它主要由nova-scheduler服务实现,它可以解决如何选择在哪个节点上启动实例,并通过调度算法来确定虚拟机具体创建在哪一个计算服务器上,nova-scheduler服务会通过读取数据库的内容,从可用的资源中选择最合适的计算节点来吃新的虚拟机实例
2)创建虚拟机的过程中,用户会提出各种各样的资源要求,比如Cpu、内存以及磁盘各需要多少,openstack会根据用户的需求,来确定具体使用哪个实例
调度器的类型
1)随机调度器:从所有正常运行nova-compute服务的节点中随机选择
2)缓存调度器:是随机调度器的一种特殊类型,在随机调度器的基础上,将主机资源信息缓存在本地内存中,然后通过后台的定时任务,定时从数据库中获取最新的主机资源信息,周期性同步而不是实时获取主机资源信息。
3)过滤器调度器:根据指定的过滤条件以及权重选择最佳的计算节点,又称为筛选器。
过滤器调度器的调度过程
主要分为两个阶段:
1)通过指定的过滤器选择满足条件的计算节点,比如内存使用率,可以使用多个过滤器依次进行过滤。(预选)
2)对过滤之后的主机列表进行权重计算并排序,选择最优的计算节点来创建虚拟机实例。(优选)
调度器与DB的交互过程:
1)scheduler组件决定的是虚拟机实例部署在哪台计算节点上并调度,在调度之前,会先向数据库获取宿主机资源信息作为依据;
2)之后可通过过滤器和权重选择最合适的节点调度,或者指定节点直接调度;
3)计算节点的 libvirt 工具负责收集宿主机的虚拟化资源,根据已创建的实例再次统计资源,将资源信息更新到数据库中,整个更新资源信息的过程是周期性执行的,而不是实时的;
4)所以存在一个问题,当刚创建完一个实例,随即又需要创建时,数据库还未来得及更新宿主机的最新状态,那么调度器依据的信息就不正确,有可能所选的节点资源并不够用,而导致调度失败。
5)这同时也是缓存调度器的缺陷,无法实时获取租主机资源信息。我们可在调度完成时,直接将资源信息返回给数据库,更新数据库状态,解决这个问题。
过滤器
1)当过滤调度器需要执行调度操作时,会让过滤器对计算节点进行判断,返回ture或false,按照主机列表中的顺序依次过滤。
2)scheduler_available_filters 选项用于配置可用过滤器,默认是所有nova自带的过滤器都可以使用。
3)scheduler_default_filters 选项用于指定nova-schedule 服务真正使用的过滤器。
过滤器类型
1)RetryFilter(再审过滤器)
主要作用是过滤掉之前已经调度过的节点(类比污点)。如A、B、C都通过了过滤,A权重最大被选中执行操作,由于某种原因,操作在A上失败了。Nova-filter 将重新执行过滤操作,再审过滤器直接过滤掉A,以免再次失败。
2)AvailabilityZoneFilter(可用区域过滤器)
主要作用是提供容灾性,并提供隔离服务,可以将计算节点划分到不同的可用区域中。Openstack默认有一个命名为nova的可用区域,所有计算节点一开始都在其中。用户可以根据需要创建自己的一个可用区域。创建实例时,需要指定将实例部署在那个可用区域中。通过可用区过滤器,将不属于指定可用区的计算节点过滤掉。
3)RamFilter(内存过滤器)
根据可用内存来调度虚拟机创建,将不能满足实例类型内存需求的计算节点过滤掉,但为了提高系统资源利用率, Openstack在计算节点的可用内存允许超过实际内存大小,可临时突破上限,超过的程度是通过nova.conf配置文件中ram_ allocation_ ratio参数来控制的, 默认值是1.5。(但这只是临时的)Vi /etc/nova/nova . conf
Ram_ allocation_ ratio=1 .5
4)DiskFilter(硬盘过滤器)
根据磁盘空间来调度虚拟机创建,将不能满足类型磁盘需求的计算节点过滤掉。磁盘同样允许超量,超量值可修改nova.conf中disk_ allocation_ ratio参数控制,默认值是1.0,(也是临时的)
Vi /etc/nova/nova.conf
disk_ allocation_ ratio=1.0
5)CoreFilter(核心过滤器)
根据可用CPU核心来调度虚拟机创建,将不能满足实例类型vCPU需求的计算节点过滤掉。vCPU也允许超量,超量值是通过修改nova.conf中cpu_ allocation_ratio参数控制,默认值是16。
Vi /etc/nova/nova. conf
cpu_allocation_ ratio=16.0
6)ComputeFilter(计算过滤器)
保证只有nova-compute服务正常工作的计算节点才能被nova-scheduler调度,它是必选的过滤器。
7)ComputeCapabilitiesFilter(计算能力过滤器)
根据计算节点的特性来过了,如不同的架构。
8)ImagePropertiesFilter(镜像属性过滤器)
根据所选镜像的属性来筛选匹配的计算节点,通过元数据来指定其属性。如希望镜像只运行在KVM的Hypervisor上,可以通过Hypervisor Type属性来指定。
9)服务器组反亲和性过滤器
要求尽量将实例分散部署到不同的节点上,设置一个服务器组,组内的实例会通过此过滤器部署到不同的计算节点。适用于需要分开部署的实例。
10)服务器组亲和性过滤器
此服务器组内的实例,会通过此过滤器,被部署在同一计算节点上,适用于需要位于相同节点的实例服务。
权重
1)在对计算节点进行过滤时,多个过滤器依次进行过滤,而不是并行,相当于一个个预选,避免重复对同一个节点进行所有过滤项检验。过滤之后的节点再通过计算权重选出最终的计算节点。
2)所有权重位于nova/scheduler/weights 目录下,目前默认是RAMweighter,根据计算节点空闲的内存计算权重,内存空闲越多权重越大,实例将被部署到内存空闲最大的计算节点。
④Network:管理IP转发、网桥或虚拟局域网的nova网络组件
⑤Compute:管理Hypervisor与虚拟机之间通信的nova计算组件
⑥Conductor:处理需要协调的虚拟处理对象转换
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。