云计算管理的是网络资源、存储资源、服务器资源等物理硬件资源。可以使客户在任何时间任何地点,通过网络,获取所需要的资源或服务,并且按需分配,按用量进行收费。
IaaS: Infrastructure-as-a-Service
基础设施即服务:用户通过网络获取虚机、存储、网络,然后用户根据自己的需求操作获取的资源
PaaS: Platform-as-a-Service
平台即服务:将软件研发平台作为一种服务, 如Eclipse/Java编程平台,服务商提供编程接口/运行平台等
SaaS: Software-as-a-Service
软件即服务 :将软件作为一种服务通过网络提供给用户,如web的电子邮件、HR系统、订单管理系统、客户关系系统等。用户无需购买软件,而是向提供商租用基于web的软件,来管理企业经营活动
[OpenStack官网架构图(https://www.openstack.org/software/)
消息队列:常用的三种类型,包括rabbitmq、 rocketmq、kafka,是两个独立的服务之间,消息传递的载体,解决消息在传输是请求的高并发问题,会以容器的方式,存储消息列表(包括请求、交互、报文),划分重要等级放入队列中,逐个处理,处理完的会自动删除。
服务 | 项目名称 | 方法描述 |
---|---|---|
UI 界面 Dashboard |
Horizon | 提供了一个基于web的自服务门户,与OpenStack底层服务交互,诸如启动一个实例,分配IP地址以及配置访问控制 |
计算 Compute |
Nova | 在OpenStack环境中计算实例的生命周期管理。按需响应包括生成、调度、回收虚拟机等操作。 |
网络&地址管理 Networking |
Neutron | 确保为其它OpenStack服务提供网络连接即服务 “Quantum”–>Neutron |
身份服务 Identity Management |
Keystone | 为其他OpenStack服务提供认证和授权服务,为所有的OpenStack服务提供一个端点目录。 |
对象存储 Object Storage |
Swift | 通过一个 RESTful,基于HTTP的应用程序接口存储和任意检索的非结构化数据对象。它拥有高容错机制,基于数据复制和可扩展架构。它的实现并像是一个文件服务器需要挂载目录。在此种方式下,它写入对象和文件到多个硬盘中,以确保数据是在集群内跨服务器的多份复制 |
块存储 Block Storage |
Cinder | 为运行实例而提供的持久性块存储。它的可插拔驱动架构的功能有助于创建和管理块存储设备 |
镜像服务 Image Service |
Glance | 存储和检索虚拟机磁盘镜像,OpenStack计算会在实例部署时使用此服务。 |
Telemetry | Ceilometer | 为OpenStack云的计费、基准、扩展性以及统计等目的提供监测和计量。 |
数据库服务 Database Service |
Trove | 提供管理数据库即服务配置关系和非关系数据库引擎节点的Trove相关,同时提供Trove在Horizon中的管理面板 |
Bare Metal Provisioning | Ironic | 提供裸金属管理服务,Nova Baremetal驱动程序 |
部署编排 Orchestration |
Heat | 提供了基于模板来实现云环境中资源的初始化,依赖关系处理,部署等基本操作,也可以解决自动收缩,负载均衡等高级特性。 |
Data Processing Service | Sahara | 使用用户能够在Openstack平台上便于创建和管理Hadoop以及其他计算框架集群 |
整个OpenStack是由控制节点,计算节点,网络节点,存储节点四大部分组成。(这四个节点也可以安装在一台机器上,单机部署)其中:
定位:运维人员通过控制节点从而控制整个openstack架构。
控制节点包括支持服务,基础服务,扩展服务和网络接口服务,外部的裸金属服务提供物理资源支撑。
支持服务:包括数据库支持和通信支持,为整个节点提供数据存储服务和服务之间消息队列的通信服务。
基础服务:为虚拟机提供基础的镜像、网络、计算资源;keystone负责整个架构的认证和授权,运维人员通过horizon可视化的界面进行管理。
扩展服务:主要针对虚拟机的数据管理,heat进行数据的编排和管理。计量服务在此获取虚拟机的数据源,进行资源监控和计量,并记录。
网络接口:专门管理节点的网络服务,用于联系控制其他节点。
基础服务
扩展服务
计算节点包括最少两个网络端口:eth0和eth1。eth0是与控制节点进行通信,受控制节点统一调配。eth1是与网络节点,存储节点进行通信
上图的核心为虚拟机,所有组件围绕虚拟机,为它提供服务。可将上图的架构分为三个部分:
红色方框为全局组件
keystone:为所有服务模块提供认证与授权
ceilometer:度量、监控所有数据资源
horizon :UI平台管理,提供一个web管理页面,与底层交互
紫色方框为外部辅助组件
ironic 提供裸金属环境
trove 提供管理数据库服务(控制关系型和非关系型数据库)
heat,sahara 提供对数据管理和编排
蓝色方框为内部核心组件
glance:Glance是Open Stack的镜像服务,提供了磁盘和服务器虚拟镜像的查询、注册和传输的功能。
neutron:提供网络连接服务
swift:对象存储通过一个 RESTful,基于HTTP的应用程序接口存储和任意检索的非结构化数据对象
cinder:提供块从存储服务。
nova:管理实例的生命周期,并负责调取以上四个资源给虚拟机使用。
消息队列:常用的三种类型,包括rabbitmq、 rocketmq、kafka,是两个独立的服务之间,消息传递的载体,解决消息在传输是请求的高并发问题,会以容器的方式,存储消息列表(包括请求、交互、报文),划分重要等级放入队列中,逐个处理,处理完的会自动删除。
用于每个项目内部各个组件之间的通信。
用于各个项目内部的数据库通信。
通过各项目的API建立的通信关系,API都是RESTful Web API。
OpenStack各组件和第三方软硬件之间的通信。
Keystone (OpenStack Identity Service)是OpenStack中的一个独立的提供安全认证的模块,主要负责openstack用户的身份认证、令牌管理、提供访问资源的服务目录、以及基于用户角色的访问控制。
Keystone类似一个服务总线,或者说是整 个Openstack框架的注册表,其他服务通过keystone来注册其服务的Endpoint (服务访问的URL),任何服务之间相互的调用,需要经过Keystone的身份验证,来获得目标服务的Endpoint来找到目标服务。
身份认证:负责令牌的发放和校验
用户授权:授权用户有指定的可执行动作的范围
用户管理:管理用户的账户
服务目录:提供可用服务的API端点位置
用户(user)
证书(credentials)
用于确认用户身份的凭证,证明自己是自己,包括用户的用户名和密码,或是用户名和API密钥,或者身份管理服务提供的认证令牌。
认证(authentication)
定用户身份的过程。
项目(project)
租户,可以理解为一个人、项目或者组织拥有的资源的合集。在一个租户中可以拥有很多个用户,这些用户可以根据权限的划分使用租户中的资源。
项目是各个服务中的一些可以访问的资源集合,用来分组或隔离资源或身份对象。不同服务中,项目所涉及的资源不同。在Nova服务中项目可以是云主机,在 Swift和 Glance中项目可以是镜像存储,在 Neutron中项目可以是网络资源。默认情况下,用户总是被绑定到项目中。一个项目中可以有多个用户,一个用户可以属于一个或多个项目。
角色(role)
角色,用于分配操作的权限。角色可以被指定给用户,使得该用户获得角色对应的操作权限。安全包含两部分:Authentication(认证)和 Authorization(鉴权)
角色是一组用户可以访问的资源权限集合,这些资源包含虛拟机、镜像、存储资源等。
用户既可以被添加到全局的角色,也可以被添加到指定项目内的角色中。其区别是,全局的角色适用于所有项目中的资源权限,而项目内的角色只适用于某个项目内的资源权限。
服务(service)
可以理解为一个人、或服务所拥有的 资源集合 。在一个Project(Tenant)中可以包含多个User,每一个User都会根据权限的划分来使用Project(Tenant)中的资源。比如通过Nova创建虚拟机时要指定到某个Project中,在Cinder创建卷也要指定到某个Project中。User访问Project的资源前,必须要与该Project关联,并且指定User在Project下的Role。
令牌(token)
指的是一串比特值或者字符串,用来作为访问资源的令牌。Token中含有可访问资源的范围和有效时间。
是一串数字字符串,用于访问0 penStock服务的API以及资源。一个令牌可以在特定的时间内生效,并可以在任意时间释放。在 keystone中主要是引入令牌机制来保护用户对资源的访问。
端点(endpoint)
一个可以通过网络来访问和定位某个openstack service的地址,即用户创建一个项目过程中需要的各个服务资源的位置Endpoint该使用对象分为三类:
Admin URL:给admin用户使用,被从常规的访问中分离。
Internal URL:Openstack内部服务使用来跟别的服务通信,只能被局域网访问。
Public URL:其它用户可以访问的地址,可以被全局访问。
User 通过 Endpoint 访问资源和执行操作
所谓端点,是指用于访问某个服务的网络地址或URL。如果需要访问一个服务,则必须知道该服务的端点。在 keystone中包含一个端点模板,这个模板提供了所有已存在的服务的端点信息。一个端点模板包含一个URL列表,列表中的每个URL都对应一个服务实例的访问地址,并且具有 public、 private和 admin这三种权限。其中 public类型的端点可以被全局访问, private类型的端点只能被 OpenStack内部服务访问, admin类型的端点只能被管理员访问。
OpenStack身份认证服务将管理认证、授权以及服务目录整合为一个访问点,同时也是用户需要和OpenStack进行交互的第一个服务。一旦认证通过,终端用户使用其身份访问OpenStack其他服务。同样的,其他服务也将利用身份认证服务确认来访用户身份是否合法以及是否具备相应的权限。此外, OpenStack身份认证服务可以集成其他的身份认证管理系统