Nova系统架构
Nova构建在无共享(shared-nothing),基于消息的架构之上。nova所有主要组件可运行在多个服务器上,也就意味着组件与组件之间的通信必须通过消息队列来实现。为了避免组件在等待响应时阻塞,Nova使用延迟(deferred)对象,当接收到响应时触发回调函数(回调函数是由defferred对象来实现的)。
现在Nova改为使用基于sql的中央(central)数据库,数据被所有组件共享。数据量及深度可以很好的保存在sql数据库,对于小型部署来说貌似是最优的方案,对于大型部署,尤其是对于安全有要求时,nova趋向于多重数据存储,这些数据存储可以使各种聚集系统(aggregation system)来实现。
组件:
/- ( LDAP ) [ Auth Manager ] --- | \- ( DB ) | | [ Web Dashboard ] -> [ api ] -- < AMQP > ------ [ network ] - ( Flat/Vlan ) | \ < HTTP > [ scheduler ] - [ compute ] - ( libvirt/xen ) | | [ objectstore ] < - retrieves images
下面是各种组件的简要说明:
DB:基于sql的数据存储(即关系型数据库),使用在所有组件中(相关链接并没有在此列出)
Web Dashboard:可能的(potential)的外部组件,用于API调用(talk to api)
API:该组件用于接收http请求,转换成命令以及通过队列或http(在使用objectsotre的情况下)与其他组件通信。
Auth Manager:该组件负责users、projets、roles。后端可以是DB或者LDAP。这并非二进制的分离(separate binary),而是用一个Python类实现可用于系统的很多组件中。
objectstore:http server 复制了 S3 API(http server that replicates s3 api),允许镜像的存储和检索。
scheduler:调度器用于决定VM 部署在哪台物理主机
network:网络负责IP转发(ip forwarding),桥(bridge)和vlan。
compute:compute负责hypervisor与虚拟机之间的通信
翻译不妥之处望指出,共同进步。
原文:http://docs.openstack.org/developer/nova/devref/architecture.html