---
title: 组件原理
description: "Nova提供一个工具来部署云，包括运行实例、管理网络以及控制用户和其他项目对云的访问。与运行在主机操作系统上潜在的虚拟化机制交互的驱动，暴露基于Web API的功能。Nova对外提供API服务，为所有API查询提供一个端点，初始化绝大多数的部署活动，以及实施一些策略。Nova部署支持单节点、双节点和多节点，实际应用推荐使用多节点。由于Nova是无共享、基于消息的架构，可以安装每个nova-service在单独的服务器上，但Dashboard必须安装在nova-api服务器上。Nova在OpenStack框架中的位置如图1。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengcpfs/twp/kunpengcpfs_19_0011.html
sourcePath: /source/zh/kunpengcpfs/twp/kunpengcpfs_19_0011.html
indexId: c9d3ee4c18d67dd8190ded281b53782c598fac6c24c9b735099f2c29861895c751
---
# 组件原理

#### Nova

Nova提供一个工具来部署云，包括运行实例、管理网络以及控制用户和其他项目对云的访问。与运行在主机操作系统上潜在的虚拟化机制交互的驱动，暴露基于Web API的功能。Nova对外提供API服务，为所有API查询提供一个端点，初始化绝大多数的部署活动，以及实施一些策略。Nova部署支持单节点、双节点和多节点，实际应用推荐使用多节点。由于Nova是无共享、基于消息的架构，可以安装每个nova-service在单独的服务器上，但Dashboard必须安装在nova-api服务器上。Nova在OpenStack框架中的位置如图1。

图1 Nova组件架构图

Nova服务可部署到控制节点和计算节点上，nova-api提供Web API服务，接口采用REST API；nova-scheduler根据CPU和内存权重，选择放置VM；nova-database数据库操作代理；nova-compute管理虚拟机生命周期。


#### Cinder

Cinder是一个块存储服务，向虚拟机提供可用于持久存储块存储服务，架构图如图2所示。

- Cinder Client封装Cinder提供的REST接口，以CLI形式供用户使用。
- Cinder API对外提供REST API，对操作需求进行解析，对API进行路由。寻找相应的处理方法。包含卷的增删改查（包括从源卷、镜像、快照创建）、快照增删改查、备份、volume type管理、挂载/卸载等。
- Cinder scheduler负责收集backend上报的容量、能力信息，根据设定的算法完成卷到指定cinder-volume的调度。
- Cinder volume多节点部署，使用不同的配置文件、接入不同的backend设备，由各存储厂商插入driver代码与设备交互完成设备容量和能力信息收集、卷操作。
- Cinder backup实现将卷的数据备份到其他存储介质。
- SQL DB提供存储卷、快照、备份、service等数据，支持MySQL、PostgreSQL等SQL数据库。

图2 Cinder组件架构图


#### Neutron

Neutron是一个虚拟网络管理系统，服务包括REST API、DHCP、二层网络等，通过插件式架构支持大量网络厂商设备及网络技术，架构图如图3所示。

- neutron-server
  提供REST API服务，后端使用关系数据库。


- Message Queue
  neutron-server使用Message Queue与其他Neutron agents进行交换消息，但是这个Message Queue不会用于neutron-server与其他OpenStack组件如nova进行交换消息。


- L2 Agent
  负责连接端口（ports）和设备，使它们处于共享的广播域（broadcast domain）。L2 Agent通常运行在Hypervisor上。


- DHCP agent
  用于配置虚拟机主机的网络，某些情况可能不需要DHCP agent，例如使用config drive来配置虚拟主机的情况。


- L3 Agent
  负责连接tenant网络到数据中心，或连接到Internet。在真实的部署环境中，一般都需要多个L3 Agent同时运行。

- Adv Services
  负责提供负载均衡、VPN网络和防火墙等高阶网络服务。


图3 Neutron组件架构图
