1.2 OpenStack的结构
OpenStack包含了许多组件。有些组件会首先出现在孵化项目中,待成熟以后进入下一个OpenStack发行版的核心服务中。同时也有部分项目是为了更好地支持OpenStack社区和项目开发管理,不包含在发行版代码中。
OpenStack的核心服务包括:
Nova计算服务(Compute as a Service)
Neutron网络服务(Networking as a Service)
Swift对象存储服务(Object Storage as a Service)
Cinder块存储服务(Block Storage as a Service)
OpenStack的公共服务包括:
Glance镜像服务(Image as a Service)
Keystone认证服务(Identity as a Service)
Horizon仪表盘服务(Dashboard as a Service)
OpenStack的依赖库项目包括:Oslo基础设施代码共享依赖库(Common Lab as a Service)。
OpenStack的孵化项目包括:
Ceilometer计费&监控服务
Heat编排服务
Ironic物理设备服务(Bare Metal as a Service)
Marconi消息队列服务(Message Queue as a Service)
Savanna大数据处理(MapReduce as a Service)
Trove数据库服务(DataBase as a Service)
OpenStack的其他项目涉及:
Infrastructure OpenStack社区建设项目
Documentation OpenStack文档管理项目
TripleO OpenStack部署项目
DevStack OpenStack开发者项目
QA OpenStack质量管理项目
Release Cycle Management版本控制项目
这些OpenStack项目有一些共同点,比如:
OpenStack项目组件由多个子组件组成,子组件有各自的模块。
每个项目都会选举PTL(Project Technical Leader)。
每个项目都有单独的开发人员和设计团队。
每个项目都有具有优良设计的公共API,API基于RESTful,同时支持JSON和XML。
每个项目都有单独的数据库和隔离的持久层。
每个项目都可以单独部署,对外提供服务,也可以在一起协同完成某项工作。
每个项目都有各自的后端驱动,所有的驱动都可以以plugin方式加载。
每个项目都有各自的client项目,如Nova有nova-client作为其命令行调用RESTful的实现。
除了以上项目,OpenStack的其他项目或多或少也会需要Database(数据库)、Message Queue(消息队列)进行数据持久化、通信。