Openstack学习

Openstack有什么用?

  Openstack可以提供计算服务、存储服务、网络服务。这些资源使用需要权限的控制,需要计费功能。

Openstack项目有哪些组成?

openstack 有状态服务_对象存储

 Openstack核心项目

openstack 有状态服务_openstack 有状态服务_02

 Openstack架构

openstack 有状态服务_身份验证_03

 Nova-计算服务

(1)实例生命周期管理

(2)提供基于REST API

(3)Hypervisor屏蔽,支持KVM、Ken、Hyper-v,docker

(4)支持大规模水平伸缩

 Neturon-网络服务

(1)虚拟网路管理

(2)面向租户的网络管理(SDN)

(3)高度可配置的plug-in架构

(4)基于REST的API

 

openstack 有状态服务_openstack 有状态服务_04

 

 Keystone-身份认证服务

(1)认证与授权

(2)用户,租户和角色管理

(3)服务目录管理

(4)支持多认证机制(Mysql,Ladp,AD)

openstack 有状态服务_身份验证_05

 Glance-镜像服务

(1)镜像注册、查询

(2)基于角色的访问控制

(3)支持多格式的镜像(raw,qcow2)

(4)支持多种后端存储(S3,Swift,File system)

openstack 有状态服务_API_06

 

Horizon-控制面板服务

用户自助管理界面

openstack 有状态服务_身份验证_07

 

 

 Cinder-块存储服务

(1)提供类似EBS(弹性)的块存储

(2)减少Nova的复杂性,降低Nova的负载

(3)支持多种后端存储

openstack 有状态服务_openstack 有状态服务_08

 Swift-对象存储服务

(1)可靠对象存储

(2)没有容器限制

(3)无单点故障

(4)支持S3 API

openstack 有状态服务_API_09

 Heat-编排服务

(1)模板定义环境

(2)云资源拓扑与编排服务

(3)兼容AWS CloudFormation

openstack 有状态服务_身份验证_10

 Ceilometer-计量服务

资源监控与度量

openstack 有状态服务_对象存储_11

 流行的部署模式

openstack 有状态服务_openstack 有状态服务_12

 

 Openstack基本概念

用户:用于身份验证,一个用户可以属于多个租户

租户:相当于一个用户组的概念,一个租户包含多个用户

角色:系统权限集合的概念,一般默认有admin和member

什么是Keystone?

Keystone是Openstack的组件之一,用于为Openstack家族中的其它组件成员提供统一的认证服务,包括身份验证、令牌发放和校验、服务列表、用户权限定义等。

Keystione在Openstack中的结构图

openstack 有状态服务_API_13

 

 

Keystone基本概念

用户(User):用于身份验证,一个用户可以关联到多个租户

租户(Tenant):相当于用户组的概念。一个租户可以容纳多个用户

角色(Role):关联到“用户-租户对”的元数据。可以关联到多个“用户-租户对”

令牌(Token):用于验证用户或者“用户-租户对”的请求是否合法

服务(Service):服务类型和名称

端点(Endpoint):服务的实例(URL入口)

用户-角色-服务交互关系

openstack 有状态服务_openstack 有状态服务_14

 

Keystone基本架构图

openstack 有状态服务_API_15

 Keystone验证流程

openstack 有状态服务_对象存储_16

 

创建虚拟机流程

openstack 有状态服务_openstack 有状态服务_17

 

 

创建虚拟机keystone认证流程

(1)用户向keystone发送用户名和密码,通过验证后,keystone会返回一个临时token和一个service catalog的列表

(2)用户用这个临时token向catalog列表中keystone的endpoint请求用户对应的tenant(租户)信息,keystone验证token通过后会返回用户对应的tenant(租户)列表。

(3)用户从列表中选取tenant(租户),再次向keystone请求,keystone验证通过后,返回与该tenant(租户)相关的catalog(目录)信息和token。

(4)用户用该token以及tenant/user信息向catalog中的nova服务器端点请求开启虚拟机服务。nova向keystone请求验证:a.token是否合法?b.这个租户/用户是否有权限来向nova请求服务?

(5)keystone返回给nova:a、租户-用户具备访问nova的权限。b、token合法。c、token属于该租户-用户。

(6)nova根据自己的规则判断用户的是否具备开机虚拟机的权限。如果具备,启动虚拟机。并向用户报告状态。