openstack有很多模块,其中有计算模块nova, 存储模块cinder, 身份认证模块keystone,计费和监控模块cellomater, 镜像模块glance,网络模块neutron,操作界面模块horizon以及镜像和数据备份模块swift(对象存储服务)。而keystone主要分为身份认证和权限鉴别。

一:keystone

1.1 基础理论

在openstack中,有一个endpoint的名词,它是一个网络上可访问的地址,通常是一个 URL。Service 通过 Endpoint 暴露自己的 API。 Keystone 负责管理和维护每个 Service 的 Endpoint。

 1. 可以使用以下命令来查看endpoint

OpenStack nova中launch和start instance的区别 openstack endpoint_keystone


  每一个用户user也可能是一个项目,一个项目有多个角色role,也就是说一个user可能存在多个role.

  2. 查看role的命令 

OpenStack nova中launch和start instance的区别 openstack endpoint_glance_02


  3. 查看特定role的用户对应的操作权限可以在/etc/nova/policy.json文件中查看  

OpenStack nova中launch和start instance的区别 openstack endpoint_openstack_03

1.2 keystone工作过程

在身份认证阶段,当用户输入用户名密码,点击connnect的时候,openstack平台内部其实发生了如下过程:

  1. 用户向keystone发送登录请求;
  2. keystone收到请求之后,认证通过之后,生成一个包含了用户的角色信息的token;
  3. 将token发送给用户,完成登录,准备界面展示;
  4. 用户向keystone发送请问,问其可以访问哪些项目;
  5. keystone收到请求之后,查询到对应项目信息,返回给用户,展示到界面,开始进行instance,volume,image等列表信息展示;
  6. 用户向keystone发送请求,问请告诉自己各个服务的endpoint;
  7. keystone查询到各个服务的endpoint之后,返回给用户,展示到界面上。
  8. 当再要查看具体的列表信息的时候,就由用户去发送请求到对应的服务模块,由对应服务模块请求keystone验证用户身份是否有效,服务模块查询policy,json文件查看该用户是否具有查看对应请求的权限,若有,返回本模块的endpoint。

1.3 日志

  Keystone 主要有两个日志: keystone.log 和 keystone_access.log,保存在 /var/log/apache2/ 目录里。 

OpenStack nova中launch和start instance的区别 openstack endpoint_Endpoint_04

二:glance

2.1 基础理论

 1.glance架构图:

    

OpenStack nova中launch和start instance的区别 openstack endpoint_身份认证_05


  glance-api 是系统后台运行的服务进程。 对外提供 REST API,响应 image 查询、获取和存储的调用。glance-api 不会真正处理请求。 如果操作是与 image metadata(元数据)相关,glance-api 会把请求转发给 glance-registry; 如果操作是与 image 自身存取相关,glance-api 会把请求转发给该 image 的 store backend。

  glance-registry 是系统后台运行的服务进程。 负责处理和存取 image 的 metadata,例如 image 的大小和类型。在控制节点上可以查看 glance-registry 进程。

  Image 的 metadata 会保持到 database 中,默认是 MySQL。 在控制节点上可以查看 glance 的 database 信息。

  Glance 自己并不存储 image。 真正的 image 是存放在 backend 中的。 Glance 支持多种 backend,具体使用哪种 backend,是在 /etc/glance/glance-api.conf 中配置的。

  

 2.查看当前的镜像列表 

OpenStack nova中launch和start instance的区别 openstack endpoint_Endpoint_06


3. 查看镜像保存目录

OpenStack nova中launch和start instance的区别 openstack endpoint_keystone_07


每个 image 在目录下都对应有一个文件,文件以 image 的 ID 命名。

三: openstack 命令行

  一般情况下,命令行一般为cmd + xx-list,cmd+xx-show,cmd+xx-create param,cmd+xx-delete param,cmd+xx-update param等,这里的cmd表示服务,比如glance,xx表示对象,比如image,但有些已经被废弃,比如keystone的user-list的cmd要用openstack,在比如网络neutron的cmd是openstack,对象也由原来的net变成了network,中间的横杠也没有了,如: 

OpenStack nova中launch和start instance的区别 openstack endpoint_身份认证_08


  

当然对于nova来说,操作对象是实例instance,因此这里的xx可以省略。如nova boot,nova list,nova show instance_id,nova delete instance_id等。