计算(Compute):Nova
提供虚拟主机,对应亚马逊的EC2,包括虚拟机、弹性云硬盘等服务。
对象存储(Object):Swift
俗称为云存储,对应亚马逊的S3,通过简单的key/value的方式实现对象文件的存储读取,适用于“一次写入,多次读取,无须修改”的情况,例如图片、视频、邮件附件等海量数据的存储。
镜像(Image):Glance
提供虚拟磁盘镜像的目录分类管理以及镜像库的存储管理,用于OpenStack虚拟机
身份(Identity):Keystone
为OpenStack所有的系统提供统一的授权和身份验证服务
自助门户(Dashboard):Horizon
基于OpenStack API接口开发的WEB呈现。
网络&地址管理:Quantum & Melange
实现了虚拟机的网络资源管理,包括网络连接、子网IP管理、L3的公网映射、后续的负载均衡等
块存储(Block Storage):Cinder
实现了对块存储的管理,与亚马逊的EBS弹性云硬盘类似,为虚拟机提供云硬盘(块设备)服务。
界面展示(Dashboard):horizon
Amazon | OpenStack |
---|---|
EC2弹性虚拟机 | Nova |
S3云存储 | Swift |
EBS弹性云存储 | Nova-volume/Cinder |
ELB负载均衡 | Atlas-LB OpenStack外围项目 |
Console控制台 | Dashboard Horizon |
VPC虚拟私有云 | Quantum网络即服务 |
IAM认证鉴权 | Keystone |
服务器节点划分
计算节点 Compute Node:提供CPU、内存的物理服务器,指安装了nova-compute服务的物理机
存储节点Storage Node:提供存储能力的服务,指安装了nova-volume或者事cinder-volume的服务器
网络节点Network Node:提供网络服务,指安装了nova-network / quantum server的服务器
控制节点Control Node:一般安装了nova-api、调度等模块的服务器统称为控制节点
Openstack采用了职责拆分的设计理念,根据职责不同拆分7个核心子系统,每个子系统都可以独立部署和使用。在每个子系统中,又根据分层layer设计理念,拆分为API、逻辑处理(含数据库存储)、底层驱动适配3个层次。
nova-api就是这个Nova的入口,它接收用户请求,将指令发送到消息队列AMQP指定的主题Topic,由订阅相应主题的Topic的守护进程接收和执行相关指令消息。nova-api包括:WSGI API(公众服务接口),包括数据封装格式转换和数据校验;RPC API(内部),后者是标准化服务的内部实现,包括数据库操作消息传递等,比如compute-api、network-api、volume-api,统称API Server。
nova-compute 是主要的执行守护进程,职责是基于各类虚拟化技术Hyperivisor实现创建和终止虚拟机。nova-compute有两个工作:接收消息队列中的执行指令并执行,如部署KVM虚拟机,维护数据库相关模型的状态数据。
nova-volume/Cinder的职责是创建、挂载和卸载持久化的磁盘虚拟机,运行机制类似nova-compute。一句话,就是为虚拟机增加块设备存储(硬盘)。
nova-network的职责是实现网络资源池的管理,包括IP池、VLAN、网桥接口、防火墙等的管理。
nova-schedule的职责是调度虚拟机在哪个物理宿主机上的部署。
最核心的AMQP通过消息中间件实现各模块之间的消息通信。
也转载一个陈沙克对openstack的组件介绍
http://www.chenshake.com/openstack-component-introduction-2/
官方文档(icehouse版)的各个组件的英文介绍
Service | Project name | Description |
---|---|---|
Dashboard | Horizon | Provides a web-based self-service portal to interact with underlying OpenStack services, such as launching an instance, assigning IP addresses and configuring access controls. |
Compute | Nova | Manages the lifecycle of compute instances in an OpenStack environment. Responsibilities include spawning, scheduling and decommissioning of virtual machines on demand. |
Networking | Neutron | Enables network connectivity as a service for other OpenStack services, such as OpenStack Compute. Provides an API for users to define networks and the attachments into them. Has a pluggable architecture that supports many popular networking vendors and technologies. |
Storage | ||
Object Storage | Swift | Stores and retrieves arbitrary unstructured data objects via a RESTful, HTTP based API. It is highly fault tolerant with its data replication and scale out architecture. Its implementation is not like a file server with mountable directories. |
Block Storage | Cinder | Provides persistent block storage to running instances. Its pluggable driver architecture facilitates the creation and management of block storage devices. |
Shared services | ||
Identity service | Keystone | Provides an authentication and authorization service for other OpenStack services. Provides a catalog of endpoints for all OpenStack services. |
Image Service | Glance | Stores and retrieves virtual machine disk images. OpenStack Compute makes use of this during instance provisioning. |
Telemetry | Ceilometer | Monitors and meters the OpenStack cloud for billing, benchmarking, scalability, and statistical purposes. |
Higher-level services | ||
Orchestration | Heat | Orchestrates multiple composite cloud applications by using either the native HOT template format or the AWS CloudFormation template format, through both an OpenStack-native REST API and a CloudFormation-compatible Query API. |
Database Service | Trove | Provides scalable and reliable Cloud Database-as-a-Service functionality for both relational and non-relational database engines. |