云计算openstack核心组件-nova计算服务_第1页
云计算openstack核心组件-nova计算服务_第2页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 、nova介绍:Nova是 OpenStack最核的服务,负责维护和管理云环境的计算资源。OpenStack作为 IaaS的云操作系统,虚拟机命周期管理也就是通过 Nova来实现的。途与功能 :1)实例命周期管理2)管理计算资源3)络和认证管理4)REST 风格的 API5)异步的致性通信6)Hypervisor透明:持Xen,XenServer/XCP,KVM, UML,VMware vSphere and Hyper-V在上图中可以看到,Nova 处于 Openstak架构的中,其他组件都为Nova提供持: Glance为 VM提供 image Cinder 和 Swift分别为VM提供

2、块存储和对象存储Neutron为 VM提供络连接。Nova 架构如下:Nova 的架构较复杂,包含很多组件。这些组件以服务(后台deamon进程)的形式运,可以分为以下类:APInova-api是整个 Nova组件的门户,接收和响应客户的API调。所有对Nova的请求都先由nova-api处理。nova-api 向外界暴露若HTTPREST API 接在 keystone中我们可以查询nova-api的 endponits。客户端就可以将请求发送到endponits指定的地址,向nova-api请求操作。当然,作为最终户的我们不会直接发送RestAP 请求。OpenStack ,Dashboa

3、rd 和其他需要跟Nova交换的组件会使这些API。Nova-api 对接收到的 HTTP API 请求会做如下处理:1.检查客户端传的参数是否合法有效2.调 Nova其他服务的处理客户端HTTP 请求3.格式化 Nova其他服务返回的结果并返回给客户端nova-api 接收哪些请求?简单的说,只要是跟虚拟机命周期相关的操作,nova-api 都可以响应。部分操作都可以在Dashboard上找到。打开Instance管理界除了提供 OpenStack的API,nova-api 还持 Amazon EC2 API。 也就是说,如果客户以前使Amazon EC2,并且 EC2 的 API开发了些具

4、来管理虚机,那么如果现在要换成OpenStack,这些具可以缝迁移到OpenStack,因为 nova-api兼容 EC2 API,需做任何修改。Compute Corea)nova-scheduler:1虚机调度服务,负责决定在哪个计算节点上运虚机。创建Instance时,户会提出资源需求,例如CPU、内存、磁盘各需要多少。OpenStack将这些需求定义在flavor中,户只需要指定哪个flavor就可以了。可的 flavor在 System-Flavors中管理。下介绍 nova-scheduler是如何实现调度的。在/etc/nova/nova.conf中,nova通过 driver=

5、filter_scheduler这个参数来配置nova-scheduler。driver=filter_schedulerFilter schedulerFilter scheduler 是 nova-scheduler默认的调度器,调度过程分为两步:1.通过过滤器(filter)选择满条件的计算节点(运nova-compute)2.通过权重计算(weighting)选择在最优(权重值最)的计算节点上创建Instance。Nova 允许使第三scheduler,配置 scheduler_driver即可。这次体现了OpenStack的开放性。Scheduler 可以使多个filter依次进过滤

6、,过滤之后的节点再通过计算权重选出最适合的节点。上图是调度过程的个例:1.最开始有 6个计算节点 Host1-Host62.通过多个 filter层层过滤,Host2和 Host4没有通过,被刷掉了3. Host1,Host3,Host5,Host6计算权重,结果Host5得分最,最终选当 Filter scheduler需要执调度操作时,会让filter对计算节点进判断,filter返回 True或 False。经过前堆filter的过滤,nova-scheduler 选出了能够部署instance的计算节点。如果有多个计算节点通过了过滤,那么最终选择哪个节点呢?Scheduler 会对每个

7、计算节点打分,得分最的获胜。打分的过程就是weight,翻译过来就是计算权重值,那么scheduler是根据什么来计算权重值呢?前 nova-scheduler的默认实现是根据计算节点空闲的内存量计算权重值:空闲内存越多,权重越,instance 将被部署到当前空闲内存最多的计算节点上。b)nova-compute:nova-compute是管理虚机的核服务,在计算节点上运。通过调Hypervisor API实现节点上的instance的命周期管理。OpenStack对 instance的操作,最后都是交给nova-compute来完成的。 nova-compute与 Hypervisor起实

8、现 OpenStack对 instance命周期的管理。Openstack中虚机默认的保存路径在:/var/lib/nova/instances通过Driver架构持多种HypervisorHypervisor是计算节点上跑的虚拟化管理程序,虚机管理最底层的程序。不同虚拟化技术提供的Hypervisor。 常的 Hypervisor有KVM,Xen, VMWare等。nova-compute为这些 Hypervisor定义了统的接,Hypervisor 只需要实现这些接,就可以Driver的形式即插即到 OpenStack系统中。下是Nova Driver的架构意图:c)nova-conduc

9、tor:nova-compute经常需要更新数据库,如更新和获取虚机的状态。出于安全性和伸缩性的考虑,nova-compute并不会直接访问数据库,是将这个任务委托给nova-conductor。这样做有两个显著好处:1.更的系统安全性2.更好的系统伸缩性Console Interfacenova-console: 户可以通过多种式访问虚机的控制台:nova-novncproxy: 基于 Web浏览器的 VNC 访问nova-spicehtml5proxy: 基于 HTML5浏览器的 SPICE 访问nova-xvpnvncproxy: 基于 Java客户端的 VNC 访问nova-conso

10、leauth: 负责对访问虚机控制台请求提供Token认证nova-cert: 提供 x509证书持DatabaseNova 会有些数据需要存放到数据库中,般使MySQL。数据库安装在控制节点上。Nova使命名为 “nova”的数据库。Message Queue在前我们了解到Nova包含众多的服务,这些服务之间需要相互协调和通信。为解耦各个服务,Nova 通过 Message Queue作为服务的信息中转站。所以在架构图上我们看到了服务之间没有直接的连线,是通过Message Queue联系的。OpenStack默认是 RabbitMQ作为 Message 。 MQ是 OpenStack的核基

11、础组件,我们后也会详细介绍。、Nova 组件如何协同作Nova 物理部署案前家已经看到Nova由很多服务组成,我们也知道OpenStack是个分布式系统,可以部署到若节点上,那么接下来家可能就会问:Nova 的这些服务在物理上应该如何部署呢?对于 Nova,这些服务会部署在两类节点上:计算节点和控制节点。计算节点上安装了Hypervisor,上运虚拟机。由此可知:1.只有 nova-compute需要放在计算节点上。2.其他服务则是放在控制节点上的。下我们可以看看实验环境的具体部署情况。通过在计算节点和控制节点上运ps -elf | grep nova来查看运的nova服务计算节点comput

12、e只运了nova-compute服务控制节点controller运了若nova-*服务RabbitMQ和 MySQL也是放在控制节点上的。可能细的同学已经发现我们的控制节点上也运了nova-compute。 这实际上也就意味着devstack-controller既是个控制节点,同时也是个计算节点,也可以在上运虚机。这也向我们展了OpenStack这种分布式架构部署上的灵活性:可以将所有服务都放在台物理机上,作为个All-in-One 的测试环境;也可以将服务部署在多台物理机上,获得更好的性能和可。另外,也可以nova service-list查看 nova-*服务都分布在哪些节点上从虚机创建

13、流程看nova-*服务如何协同作从学习 Nova的度看,虚机创建是个常好的场景,涉及的nova-*服务很全,下是流程图。1. 客户(可以是OpenStack最终户,也可以是其他程序)向API(nova-api)发送请求:帮我创建个虚机”2. API对请求做些必要处理后,向Messaging(RabbitMQ)发送了条消息:让 Scheduler 创建个虚机”3. Scheduler(nova-scheduler)从 Messaging获取到 API发给它的消息,然后执调度算法,从若计算节点中选出节点A4. Scheduler 向 Messaging发送了条消息:在计算节点 A上创建这个虚机”5

14、. 计算节点 A的 Compute(nova-compute)从 Messaging中获取到 Scheduler 发给它的消息,然后在本节点的Hypervisor上启动虚机。6. 在虚机创建的过程中,Compute如果需要查询或更新数据库信息,会通过Messaging向 Conductor(nova-conductor)发送消息,Conductor负责数据库访问。以上是创建虚机最核的步骤,这个步骤向我们展了nova-*服务之间的协作的式,也体现了OpenStack整个系统的分布式设计思想,掌握这种思想对我们深理解OpenStack会常有帮助。三、Nova 创建虚拟机详细过程1、界或命令通过RE

15、STful API向keystone获取认证信息。2、keystone通过户请求认证信息,并成auth-token返回给对应的认证请求。3、界或命令通过RESTful API向nova-api发送个boot instance的请求(携带auth-token)。4、nova-api接受请求后向keystone发送认证请求,查看token是否为有效户和token。5、keystone验证token是否有效,如有效则返回有效的认证和对应的(注:有些操作需要有权限才能操作)。6、通过认证后nova-api和数据库通讯。7、初始化新建虚拟机的数据库记录。8、nova-api通过rpc.call向nova

16、-scheduler请求是否有创建虚拟机的资源(Host 。9、nova-scheduler进程侦听消息队列,获取nova-api的请求。10、nova-scheduler通过查询nova数据库中计算资源的情况,并通过调度算法计算符合虚拟机创建需要的主机。11、对于有符合虚拟机创建的主机,nova-scheduler更新数据库中虚拟机对应的物理主机信息。12、nova-scheduler通过向nova-compute发送对应的创建虚拟机请求的消息。13、nova-compute会从对应的消息队列中获取创建虚拟机请求的消息。14、nova-compute通过rpc.call向nova-condu

17、ctor请求获取虚拟机消息。(Flavor)15、nova-conductor从消息队队列中拿到nova-compute请求消息。16、nova-conductor根据消息查询虚拟机对应的信息。17、nova-conductor从数据库中获得虚拟机对应信息。18、nova-conductor把虚拟机信息通过消息的式发送到消息队列中。19、nova-compute从对应的消息队列中获取虚拟机信息消息。20、nova-compute通过keystone的RESTfull API拿到认证的token,并通过HTTP请求glance-api获取创建虚拟机所需要镜像。21、glance-api向keys

18、tone认证token是否有效,并返回验证结果。22、token验证通过,nova-compute获得虚拟机镜像信息(URL)。23、nova-compute通过keystone的RESTfull API拿到认证k的token,并通过HTTP请求neutron-server获取创建虚拟机所需要的络信息。24、neutron-server向keystone认证token是否有效,并返回验证结果。25、token验证通过,nova-compute获得虚拟机络信息。26、nova-compute通过keystone的RESTfull API拿到认证的token,并通过HTTP请求cinder-api

19、获取创建虚拟机所需要的持久化存储信息。27、cinder-api向keystone认证token是否有效,并返回验证结果。28、token验证通过,nova-compute获得虚拟机持久化存储信息。29、nova-compute根据instance的信息调配置的虚拟化驱动来创建虚拟机。四、彻底删除nova-compute节点1、控制节点上操作查看计算节点,删除node11openstack host list2nova service-list2、将node1上的计算服务设置为down,然后disabled1systemctl stop openstack-nova-compute2nova

20、service-list1nova service-disable node1 nova-compute2nova service-list3、在数据库清理(nova库)(1)参看现在数据库状态123rootnode1 # mysql-u root -p4Enter password:5Welcome to the MariaDB monitor. Commands end with ; or g.6Your MariaDB connectionid is 907 Server version: 10.1.20-MariaDB MariaDB Server89 Copyright (c) 20

21、00, 2016, Oracle, MariaDB Corporation Ab and others.1011Typehelp;orhfor help. Typec toclear the current input statement.1213MariaDB (none) use nova;Reading table informationforcompletion of table and column names14You can turn off this feature to get a quicker startup with -A1516Database changed17Ma

22、riaDB novaselect host from nova.services;18+-+19| host|+-+| | |202122| node1 |23| node1 | node1 |24| node1 |25| node2 |26+-+277 rowsin set (0.00 sec)2829MariaDB novaselect hypervisor_hostname from compute_nodes;30+-+| hypervisor_hostname |31+-+32| node133| node2|34+-+352 rowsin set (0.00 sec)3637(2)

23、删除数据库中的node1节点信息123MariaDB nova delete from nova.services where host=node1;4 Query OK,4 rows affected (0.01 sec)5MariaDB nova delete from compute_nodes where hypervisor_hostname=node1;6Query OK,1 row affected (0.00 sec)78MariaDB nova9MariaDB nova10MariaDB nova11MariaDB novaselect host from nova.serv

24、ices;+-+12| host|13+-+14| |15| | node2 |16+-+173 rowsin set (0.00 sec)1819MariaDB novaselect hypervisor_hostname from compute_nodes;20+-+21| hypervisor_hostname |22+-+23| node2|24+-+1 rowinset (0.00 sec)2526MariaDB nova2728五、nova配置件:DEFAULTmy_ip=3use_neutron = Truefirewall_driver = nova.virt.firewal

25、l.NoopFirewallDriverenabled_apis=osapi_compute,metadatatransport_url =apiauth_strategy = keystoneapi_databaseconnection = mysql+barbicancachecellscinderos_region_name = RegionOnecloudpipeconductorconsoleconsoleauthcorscors.subdomaincryptodatabaseconnection = mysql+ephemeral_storage_encryptionfilter_

26、schedulerglanceapi_servers =guestfshealthcheckhypervimage_file_urlironickey_managerkeystone_authtokenauth_uri =auth_url =memcached_servers = controller:11211auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultproject_name = serviceusername = novapassword = novalibvirtvirt_type=qemumatchmaker_redismetricsmksneutron

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论