为了实现云计算的各项功能,OpenStack实现每个项目的既定目标,将存储、计算、监控和网络服务划分为几个项目来进行开发,每个项目也是对应的OpenStack中的一个或多个组件,如图5-3-3所示为OpenStack的整体架构。
OpenStack各个组件之间耦合是非常松的。其中,Keystone是各个组件之间的通信核心,它依赖自身REST(基于Identity API)对所有的OpenStack组件提供认证和访问策略服务,每个组件都需要向Keystone进行注册,主要目的是对云平台各个组件进行认证与授权,对云平台用户进行管理,注册完成后才能获取相对应的组件通信的地址,其中包括通信的端口和IP地址,然后实现组件之间和内部子服务之间的通信。
- Nova
Nova是OpenStack计算的弹性控制器,也是整个云平台最重要的组件。其功能包括运行虚拟机实例、管理网络以及通过用户和项目来控制对云的访问。OpenStack云实例生命期所需的各种动作都将由Nova进行处理和支撑,这就意味着Nova以管理平台的身份登场,负责管理整个云的计算资源、网络、授权及测度。虽然Nova本身并不提供任何虚拟能力,但是它将使用libvirt API与虚拟机的宿主机进行交互。Nova通过自身的API对外提供处理接口,而且这些接口与Amazon的Web服务接口是兼容的。
计算服务(Nova)是云平台的工作负载的核心。如果有些云服务的工作中不包括计算,那么它们充其量只代表静态存储,所有动态活动都会涉及一些计算元素。OpenStack的其他组件依托Nova,与Nova协同工作,组成了整个OpenStack云平台。 - Glance
OpenStack镜像服务器是一套虚拟机镜像发现、注册和检索系统,用户可以将镜像存储到以下任意一种存储中。
本地文件系统(默认)。
S3直接存储。
S3对象存储(作为S3访问的中间渠道)。
OpenStack对象存储。
镜像服务Glance主要提供两个服务。
① Glance-API:主要负责接收响应镜像管理命令的Restful请求,分析消息请求信息并分发其所带的命令(如新增、删除、更新等)。默认绑定端口是9292。
② Glance-Registry:主要负责接收响应镜像元数据命令的Restful请求。分析消息请求信息并分发其所带的命令(如获取元数据、更新元数据等)。默认绑定的端口是9191。 - Neutron
Neutron网络目的是为OpenStack云更灵活地划分物理网络,在多租户环境下提供给每个租户独立的网络环境。另外,Neutron提供API来实现这种目标。Neutron中用户可以创建自己的网络对象,如果要和物理环境下的概念映射的话,这个网络对象相当于一个巨大的交换机,可以拥有无限多个动态可创建和销毁的虚拟端口。 - Horizon
Horizon是一个用以管理、控制OpenStack服务的Web控制面板,它可以管理实例、镜像、创建密钥对,对实例添加卷、操作Swift容器等。除此之外,用户还可以在控制面板中使用终端(console)或VNC直接访问实例。 - Cinder
Cinder是OpenStack Block Storage(OpenStack块存储)的项目名称,Cinder的核心功能是对卷的管理,允许对卷、卷的类型、快照进行处理。然而,它并没有实现对块设备的管理和实际服务(提供逻辑卷),而是通过后端的统一存储接口,支持不同块设备厂商的块存储服务,实现其驱动支持并于OpenStack进行整合。Cinder可以支持如NetAPP、SolidFire、华为、EMC和IBM等知名存储厂商以及众多开源块存储系统。 - Swift
Swift为OpenStack提供一种分布式、持续虚拟对象存储,它类似于Amazon Web Service的S3简单存储服务。Swift具有跨节点百级对象的存储能力。Swift内建冗余和失效备援管理,也能够处理归档和媒体流,特别是对大数据(千兆字节)和大容量(多对象数量)的测度非常高效。
Swift构筑在比较便宜的标准硬件存储基础设施之上,无需采用RAID(磁盘冗余阵列),通过在软件层面引入一致性散列技术提高数据冗余性、高可用性和可伸缩性,支持多租户模式、容器和对象读写操作,适合解决互联网的应用场景下非结构化数据存储问题。在OpenStack中,Swift主要用于存储虚拟机镜像,用于Glance的后端存储。在实际运用中,Swift的典型运用是网盘系统,代表是“Dropbox”,存储类型大多为图片、邮件、视频和存储备份等静态资源。



