openstack有很多模块,其中有计算模块nova, 存储模块cinder, 身份认证模块keystone,计费和监控模块cellomater, 镜像模块glance,网络模块neutron,操作界面模块horizon以及镜像和数据备份模块swift(对象存储服务)。而keystone主要分为身份认证和权限鉴别。
一:keystone
1.1 基础理论
在openstack中,有一个endpoint的名词,它是一个网络上可访问的地址,通常是一个 URL。Service 通过 Endpoint 暴露自己的 API。 Keystone 负责管理和维护每个 Service 的 Endpoint。
1. 可以使用以下命令来查看endpoint
每一个用户user也可能是一个项目,一个项目有多个角色role,也就是说一个user可能存在多个role.
2. 查看role的命令
3. 查看特定role的用户对应的操作权限可以在/etc/nova/policy.json文件中查看
1.2 keystone工作过程
在身份认证阶段,当用户输入用户名密码,点击connnect的时候,openstack平台内部其实发生了如下过程:
- 用户向keystone发送登录请求;
- keystone收到请求之后,认证通过之后,生成一个包含了用户的角色信息的token;
- 将token发送给用户,完成登录,准备界面展示;
- 用户向keystone发送请问,问其可以访问哪些项目;
- keystone收到请求之后,查询到对应项目信息,返回给用户,展示到界面,开始进行instance,volume,image等列表信息展示;
- 用户向keystone发送请求,问请告诉自己各个服务的endpoint;
- keystone查询到各个服务的endpoint之后,返回给用户,展示到界面上。
- 当再要查看具体的列表信息的时候,就由用户去发送请求到对应的服务模块,由对应服务模块请求keystone验证用户身份是否有效,服务模块查询policy,json文件查看该用户是否具有查看对应请求的权限,若有,返回本模块的endpoint。
1.3 日志
Keystone 主要有两个日志: keystone.log 和 keystone_access.log,保存在 /var/log/apache2/ 目录里。
二:glance
2.1 基础理论
1.glance架构图:
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.查看当前的镜像列表
3. 查看镜像保存目录
每个 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,中间的横杠也没有了,如:
当然对于nova来说,操作对象是实例instance,因此这里的xx可以省略。如nova boot,nova list,nova show instance_id,nova delete instance_id等。