OpenStack Nova 系统架构

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


猜你喜欢

转载自liuzhijun.iteye.com/blog/1735119