1 nova 的结构 :
/- ( LDAP )
[ Auth Manager ] ---
| \- ( DB )
|
|
|
[ Web Dashboard ] -> [ api ] -- < AMQP > ------ [ network ] - ( Flat/Vlan )
| \
< HTTP > [ scheduler ] - [ compute ] - ( libvirt/xen )
| |
[ objectstore ] < - retrieves images
- DB: 所有组件的数据存储
- Web Dashboard:和api沟通的潜在外部组件
- api: 接收http请求,转化命令,通过队列或者http和其他组件进行沟通。
- Auth Manager: 负责 users/projects/and roles.支持 DB 或者 LDAP.
- objectstore: 并且接收存储和获取镜像
- scheduler: 决定每一个vm放在哪一个主机上
- network: 管理IP映射,网桥和虚拟局域网
- compute: 负责和管理者还有虚拟机之间的通信
AMQP 是一种信息传送协议,rabbitMQ是这中协议的一个开源实现, 可以让nova组件之间采取一种低耦合的方式实现RPC通信。
nova 采用的信息交互的方式有三种:直接,分列,基于主题 3 种方式
nova 通过提供一个适配器来封装和解封发送消息,实现了RPC(rpc.call 和 rpc.cast) 。每一种nova服务(Compute,Scheduler,cert,conductor,consoleauth,)在初始化的时候,初始化两个队列1 接收‘NODE-TYPE.NODE-ID’ 类型路由key消息的队列 ;2 接收‘NODE-TYPE’ 类型路由key消息队列
3 nova RPC 映射
每个nova组件连接到rabbitMQ,可能会将消息队列来当做一个invoker 或者是一个worker。Invoker通过rpc.call或者rpc.cast的方式向队列当中发消息,worker接收队列当中的消息来应答。
本文深入探讨了Nova架构中的关键组件及其工作流程,包括数据库、WebDashboard、AuthManager、API、Scheduler、Compute、Network和ObjectStore,并详细解释了AMQP协议如何在这些组件间实现低耦合的RPC通信。同时,介绍了Nova通过适配器封装消息发送和接收机制,以及如何利用队列系统来实现高效的消息传递。
628

被折叠的 条评论
为什么被折叠?



