Nova系统架构

 Nova 是建立在无共享,基于消息推送的架构。Nova的所有组件可以分别构建在多个服务器上,组件之间通过消息队列来通信。为了避免组件等待一个消息响应引起堵塞,openstack采用延迟对象机制,当有组件响应时则会触发一个回调。
       Nova现阶段是采用以SQL为各个组件的核心共享数据存储。对于小型部署而言这种方式足以应付,但是对于大型部署而言,特别是对安全高要求的情况,Nova倾向通过聚合系统实现多重数据存储。
各组件的关系:
Nova系统架构

DB :存储各组件数据的数据库
Web Dashboard : 调用组件api的潜在的外部组件
api : 接收http请求,转发命令并通过消息队列或http(对象存储采用http方式)与其他组件通信
Auth Manager : 对用户、工程、角色能访问DB或系统文件目录进行鉴权,它不是一个进程,而是系统中大部分组件使用的一个python对象
objectstore :仿制s3 api的对象备份http server,运行存储和检索镜像
scheduler : 决定哪个计算节点启动虚拟机实例,即决定哪台服务器获得VM
network : 管理ip转发,桥接和vlan(虚拟网络)
compute : 管理与hypervisor(超级监视器)和虚拟机通信。

转载于:https://my.oschina.net/OQKuDOtsbYT2/blog/119989

<think>嗯,用户现在转向了OpenStack的另一个核心组件Nova,询问其系统架构组成。从对话历史看,用户之前已经了解了Neutron的网络拓扑类型,现在显然是在系统性地探索OpenStack的各个模块。 用户提供的引用材料很有价值:[2]详细描述了Nova的架构分层和工作流程,[3]则点明了Nova与其他组件的协作关系。特别值得注意的是[2]中提到的"setup.cfg文件"和"rpc通信机制",这是理解Nova模块化设计的关键。不过引用[1][4][5]与当前问题关联度较低,尤其是[5]讨论网络配置问题,可以暂时忽略。 用户可能正在搭建OpenStack环境,或是准备相关认证考试。考虑到ta连续追问架构细节,应该具备一定虚拟化基础。需要特别注意Nova的分布式特性——这是与传统单体架构最大的区别,例如scheduler和compute服务的分离设计。 在架构描述时应当突出三个重点:首先是API层作为唯一入口的RESTful设计,其次是各组件通过AMQP/RPC的解耦通信,最后是DB和Conductor的协作模式。特别要解释清楚为什么需要nova-conductor这个中间层(安全隔离和版本兼容性)。 技术细节上需要明确几个易混淆点:1)nova-novncproxy与传统vnc的区别;2)cell架构如何解决规模扩展问题;3)scheduler的filter/weigher机制。这些在引用[2]的目录结构里都有线索,但需要进一步展开。 最后生成的问题要延续用户的学习路径:从架构原理自然延伸到部署配置(如服务启动顺序)、运维要点(如日志分析)和扩展机制(如自定义scheduler)。避免突然跳转到不相关主题,比如网络配置问题。</think>OpenStack Nova系统架构采用分布式、模块化设计,各组件通过消息队列(如 RabbitMQ)和数据库协同工作。其核心架构组成如下: --- ### **一、核心服务组件** 1. **nova-api** - **功能**:接收并处理所有 REST API 请求(如创建虚拟机、调整配置),是用户与 Nova 交互的唯一入口。 - **特点**:支持 OpenStack API、EC2 API 等兼容接口,并验证用户权限[^2][^4]。 2. **nova-scheduler** - **功能**:根据资源策略(CPU、内存、可用域等)选择合适的主机部署虚拟机。 - **调度机制**: - **Filtering**:过滤不符合条件的主机(如资源不足)。 - **Weighting**:对候选主机评分(如负载最低优先)[^2]。 3. **nova-compute** - **功能**:在计算节点上执行虚拟机生命周期管理(启动/停止/迁移)。 - **依赖**:通过 Hypervisor(如 KVM、Xen)直接操作虚拟机[^3]。 4. **nova-conductor** - **功能**:作为数据库访问代理,隔离 `nova-compute` 与数据库的直接交互,提升安全性与扩展性。 - **作用**:处理复杂操作(如虚拟机迁移的协调)[^4]。 5. **nova-consoleauth** - **功能**:验证虚拟机控制台(如 VNC、Spice)的访问令牌,确保安全连接[^4]。 6. **nova-novncproxy** - **功能**:提供基于 Web 的 VNC 代理,允许用户通过浏览器访问虚拟机控制台[^4]。 --- ### **二、支撑组件** 1. **消息队列(如 RabbitMQ)** - **作用**:实现各组件间异步通信(如 `nova-api` 将创建虚拟机请求发送至 `nova-scheduler`)[^2]。 2. **数据库(如 MySQL)** - **作用**:存储所有状态信息(虚拟机配置、主机资源、网络映射等)[^2]。 3. **依赖服务** - **Neutron**:提供虚拟机网络连接(如 IP 分配、安全组)[^3]。 - **Glance**:提供虚拟机镜像存储[^3]。 - **Cinder/Swift**:提供块存储与对象存储支持[^3]。 --- ### **三、工作流程示例(创建虚拟机)** ```mermaid graph LR A[用户请求] --> B[nova-api] B --> C[消息队列] C --> D[nova-scheduler] D --> E[选择主机] E --> F[消息队列] F --> G[nova-compute] G --> H[调用Hypervisor] H --> I[创建虚拟机] ``` --- ### **四、架构特点** 1. **无状态服务** `nova-api` 等组件可水平扩展,通过负载均衡提升可用性。 2. **松耦合设计** 各组件通过消息队列解耦,故障隔离性强。 3. **分布式调度** `nova-scheduler` 支持自定义策略(如反亲和性部署)[^2]。 4. **安全隔离** `nova-conductor` 代理数据库访问,防止计算节点直接操作敏感数据[^4]。 > **注**:实际部署中需启用所有核心服务(如 `systemctl enable openstack-nova-api`)[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值