了解Openstack中的Nova计算架构基础知识(流程图)

时间:2020-02-23 14:40:12  来源:igfitidea点击:

本文将介绍nova计算体系结构以及nova computing中的所有服务如何相互通信。
新星计算下每个服务的作用是什么?
OpenStack中的nova-api,nova-scheduler,nova-console,nova-conductor,nova-console-auth,nova-compute服务的作用是什么?

了解nova计算架构

计算服务由各种服务和守护程序组成,其中包括" nova-api service",该服务接受API请求并将其转发给服务的其他组件。

下图显示了"各种进程和守护程序如何协同工作以形成计算服务"(Nova)以及它们之间的相互链接:

了解nova计算服务

以下是新星计算服务一部分的服务列表:

nova-api服务

  • OpenStack中的所有服务都有至少一个API进程,该进程接受并响应最终用户API调用,对其进行预处理,然后将请求传递给服务中的相应进程。

  • 对于OpenStack计算服务,我们具有nova-api服务,该服务侦听并响应最终用户的计算API调用。
    " nova-api"服务负责启动大多数编排活动,例如供应新的虚拟机。

nova-api-metadata服务

  • 元数据服务将特定于实例的数据传递到虚拟机实例。
    特定于实例的数据包括hostname,instance-id,ssh-keys等。
    虚拟机通过位于http://169.254.169.254的特殊IP地址访问元数据服务。

nova计算服务

  • 在底层,虚拟机的整个生命周期都由管理程序管理。
    每当最终用户向" nova-api"服务提交实例创建API调用时," nova-api"服务都会对其进行处理,并将请求传递给" nova-compute"服务。
    nova-compute服务处理" nova-api"调用以创建新实例,并以底层虚拟机管理程序可以理解的方式触发相应的API请求以创建虚拟机。

  • 例如,如果我们选择在OpenStack设置中使用KVM虚拟机管理程序,则当最终用户通过OpenStack仪表板提交虚拟机创建请求时,nova-api调用将被发送到nova-api服务。
    " nova-api"服务会将创建实例的API传递给" nova-compute"服务。
    " nova-compute"服务知道底层KVM虚拟机管理程序将支持哪种API。
    现在,指向基础KVM虚拟机管理程序,nova-compute将触发用于创建虚拟机的libvirt-api。
    然后,KVM管理程序处理" libvirt-api"请求并创建一个新的虚拟机。

  • OpenStack可以灵活地在同一设置中使用多管理程序环境,也就是说,我们可以在同一OpenStack设置中配置不同的管理程序,例如KVM和VMware。
    nova-compute服务将负责触发适用于虚拟机管理程序的API,以管理虚拟机生命周期。

新星调度程序服务

  • 当我们在OpenStack环境中拥有多个计算节点时," nova-scheduler"服务将负责确定新虚拟机将在何处进行配置。
    基于各种资源过滤器,例如RAM/CPU /磁盘/可用区,nova-scheduler将为新实例过滤合适的计算主机:

nova导体模块

  • 在计算主机上运行的nova-compute服务无法直接访问数据库,因为如果计算节点之一遭到破坏,则攻击者(几乎)可以完全访问数据库。
    使用nova-conductor守护程序,受感染的节点无法直接访问数据库,并且所有通信只能通过nova-conductor守护程序进行。
    因此,受损害的节点现在仅限于导体API允许的范围。

  • 不应将" nova-conductor"模块部署在任何计算节点上,否则删除" nova-compute"的直接数据库访问权限将变得无效。

nova-consoleauth守护程序

nova-consoleauth守护程序负责为最终用户授权令牌,以访问由以下控制代理提供的来宾虚拟机的远程控制台:

  • nova-novncproxy守护进程提供了一个代理,用于通过VNC连接访问正在运行的实例。

  • nova-spicehtml5proxy守护进程通过SPICE连接提供代理。

nova-cert模块

  • 用于为euca-bundle-image生成X509证书,只有EC2 API才需要。

队列(AMQP消息代理)

  • 通常,AMQP消息队列是使用RabbitMQ或者ZeroMQ实现的。
    在OpenStack中,AMQP消息代理用于一项服务的进程和守护程序之间的所有通信。
    但是,OpenStack中两个不同服务之间的通信使用服务端点。

  • 例如," nova-api"和" nova-scheduler"将通过AMQP消息代理进行通信。
    但是," nova-api"服务和" cinder-api"服务之间的通信将通过服务端点进行。

数据库

  • 大多数OpenStack服务都使用SQL数据清单(Inventory)储云基础架构的构建时间和运行时状态,例如实例状态,网络,项目以及列表等。
    简而言之,我们可以说数据库是OpenStack的大脑。

  • 在OpenStack中使用最受测试且最可取的数据库是MySQL,MariaDB和PostgreSQL。