NOVA
使用OpenStack计算服务去运行和管理云操作系统。OpenStack计算服务是IAAS服务的一个主要组成部分。主要的模块都是由python编写的。
OpenStack计算服务与OpenStack身份服务交互处理认证的工作,与镜像服务处理磁盘和镜像相关的工作,dashboard则作为用户和管理的接口。对镜像的访问受限于project和用户,配额(如实例的数量)对于每个租户也是有限的.OpenStack计算服务可以在标准硬件上水平扩展及下载镜像用于启动实例。
OpenStack计算服务由以下内容和组件组成:
API:
nova-api服务:接受和响应终端用户的计算API请求,这个服务支持着OpenStack计算服务API,AMazon EC2 API和一个特殊的Admin API提供给特权用户执行管理操作。它执行一些策略和初始化大多数编配活动,例如运行一个实例。nova-apt-metadata服务:接受来自实例的元数据请求。当你运行nova-network的多节点模式中,nova-api-metadata服务常常被使用。
在Debian系统中,它被包含在nova-api包中,可以通过debconf选择。
计算核心:
nova-compute服务:一个通过hypervisor API创建和终止虚拟机实例的工作者进程。例如:XenServer/XCP的XenAPI:KVM或QEMU的libvirt和VMware的VMwareAPI。 尽管过程是非常复杂的,但是,基本内容无非就是守护进程接收从队列中的的消息并执行一系列命令比如:启动一个KVM实例并把它的状态保存到数据库中。
nova-scheduler服务:从队列中获取虚拟机实例请求,并负责决定把实例运行在哪个计算服务器上。
nova-conductor模块:调度nova-compute服务和数据库的交互。避免nova-compute服务对云数据库的直接访问。nova-conductor模块可以水平扩展。但是,不要把它部署在nova-compute服务所运行的节点上。
所有的 nova 服务使用一个 AMQP 来相互沟通。nova-compute 需要经常访问DB。nova-conductor 是一个在 nova-compute 上的一个层次,避免数据库被暴露,最好把 nova-conductor 和 nova-compute 不要安装到一个节点上。
nova-conductor 可以像 nova-api、nova-scheduler 一样能横向扩展,可以运行在多个机器上运行多个 nova-conductor 来达到扩展的目的.
以后会从 nova-compute 上移植越来越多的功能到 nova-conductor 上。VM的网络:
nova-network工作者进程:类似于nova-compute服务,从队列中获取网络任务并操作网络。执行一些像设置桥接接口或改变iptables的规则的任务。
控制台接口:
nova-consoleauth守护进程:对控制台代理为用户提供的令牌进行认证,比如nova-novncproxy和nova-xvpnvcproxy。这个服务必须为控制台代理的工作而运行。你可以在一个集群配置中,运行任意的对应单独一个nova-consoleauth服务的代理。
nova-novncproxy守护进程:通过VNC连接,为访问正在运行的实例提供代理。支持基于浏览器的的novnc客户端。
nova-xvpnvncproxy守护进程:通过VNC连接为访问运行中的实例提供代理。支持特定的OpenStack Java客户端。
nova-cert守护进程:x509证书。
在Debian中,一个独特的nova-consoleproxy包提供了nova-novncproxy,nova-spicehtml5proxy和nova-xvpvncproxy包。想要选择不同的包,编辑/etc/default/nova-consoleproxy文件或使用debconf接口。你也可以手动编辑/etc/default/nova-consoleproxy文件和停止、启动控制台进程镜像管理(EC2方案):
nova-objectstore守护进程:一个S3接口用于与OpenStack镜像服务注册镜像。主要用于安装,必须支持euca2ools。euca2ools工具使用S3语言与nova-objectstore沟通,而nova-objectstore把S3请求转换为镜像服务的请求。euca2ools客户端:一系列的命令行解释器命令用于管理云资源。尽管这不是一个OpenStack模块,你可以通过配置nova-api去支持这个EC2接口。
命令行客户端和其他接口:
**nova客户端**:允许以租户管理员或终端用户身份提交命令。
其他组件:
消息队列:在进程间作为消息传递的中心,一般选用RabbitMQ,但也可以用任何支持AMPQ的消息队列。例如Apache Qpid或ZeroMQ。 SQL数据库:为云基础设施储存大多数的构建和运行时的状态。包含:可用的实例种类;正在使用的实例,可用的网络和project。理论上,OpenStack支持任何支持SQL-Alchemy的数据库。但一般广泛使用SQLite(用于开发和测试),MySQL,PostgreSQL。