要想学习OpenStack,首先就要弄清OpenStack相关概念,将OpenStack的整体构图,印于脑海之中,本文接续上一篇文章《初识OpenStack(一)》继续讲解OpenStack相关内容,其中详细内容可点击每个小标题进入相关页面,希望本人的一点理解能帮助正在读该文章的你快速了解OpenStack。
OpenStack体系结构
OpenStack目前的七个核心组件,分别是计算(Compute)、对象存储(Object Storage)、认证(Identity)、用户界面(Dashboard)、块存储(Block Storage)、网络(Network)和镜像服务(Image Service)。每个组件都是多个服务的集合,一个服务意味着运行着的一个进程,根据部署OpenStack的规模,决定了你是选择将所有服务运行在同一个机器上还是多个机器上。
Compute的项目代号是Nova,它根据需求提供虚拟机服务,比如创建虚拟机或对虚拟机做热迁移等。
(2)Object Storage(Swift)
Object Storage 的项目代号是Swift,它允许存储或检索对象,也可以认为它允许存储或检索文件,它能以低成本的的方式通过RESTful API 管理大量无结构数据。
(3)Identity(Keystone)
Identity的项目代号是Keystone,为所有OpenStack服务提供身份验证和授权,跟踪用户以及他们的权限,提供一个可用服务以及API列表。
(4)Dashboard(Horizon)
Dashboard 的项目代号是Horizon,它为所有OpenStack的服务提供一个模块化的基于Django的界面,通过这个界面,不论是最终用户还是运维人员都可以完成大多数的操作,比如启动虚拟机、分配IP地址、动态迁移等。
(5)Block Storage(Cinder)
Block Storage 的项目代号是Cinder,它提供存储服务。Cinder最早是由nova-volume演化而来的,当时由于Nova已经变得非常庞大并拥有众多功能,也由于volume服务的需求会进一步增加nova-volume的复杂度,比如,增加volume调度,允许多个volume driver 同时工作,同时考虑到需要nova-volume跟其他OpenStack项目交互,比如将Glance中的镜像模板转成可启动的volume,所以Openstack 新成立了一个项目Cinder来扩展nova-volume的功能。
(6)Network(Neutron)
Network的项目代号是Neutron,用于提供网络连接服务,允许用户创建自己的虚拟网络并连接各种网络设备接口。
(7)Image Service(Glance)
Image Service 的项目代号是Glance,它是OpenStack的镜像服务组件,相对于其他组件来说,Glance功能比较单一代码量也比较少,而且由于新功能的开发数量越来越少,近来社区的活跃度也没有其他组件那么高,但它仍是OpenStack核心项目之一。
Glance主要提供一个虚拟机镜像的存储,查询和检索服务,通过提供一个虚拟磁盘映像的目录和存储库,为Nova的虚拟机提供镜像服务。
我们以创建虚拟机为例,简述这些核心组件是如何配合完成工作的。用户首先接触到的是界面,也就是Horizon。通过Horizon上的简单界面操作,一个穿件虚拟机的请求被发送到OpenStack系统后端。
既然,要启动一个虚拟机,就必须指定虚拟机操作系统是什么类型,就必须下载启动镜像以供虚拟机启动使用,这件事情就是由Glance来完成的,而此时Glance所管理的镜像是有可能存储在Swift上的,所以需要与Swift交互得到需要的镜像文件。
在创建虚拟机的时候,自然而然的需要Cinder提供块服务和Neutron提供网络服务,以便该虚拟机有volume可以使用,能被分配到IP地址与外界网络连接,而且之后该虚拟机资源的访问要经过Keystone的认证后才可以继续。至此,OpenStack的所有核心组件都参与了这个创建虚拟机的操作。
未完待续。。。