云计算职业技能大赛组件介绍(二)
上文我们粗略的了解了open stack有哪些组件,具体是什么功能,接下来,我将带大家详细的了解一下keystone组件和glance组件的基础原理和基础运维样题。
一、Keystone组件
keyston组件功能
项目名称keystone,服务名称identify server,及身份认证服务。keystone为所有openstack组件提供认证和访问策略访问,它依赖自身REST(基于idntity API)系统进行工作,主要对(但不限于)Swift(对象存储)、Glance(镜像服务)、Nova(计算服务)等进行认证与授权。实际上,授权通过对动作消息来源者请求的合法性进行鉴定。
keystone相关概念:
名称 | 说明 |
---|---|
user | 一个普通用户或者系统服务在OpenStack中的数字表示。用于身份认证,也能够通过为登录到Openstack的用户分配令牌环,以此获得访问资源的权限,同一个用户可以背关联到给若干个租户,就像用户可以隶属若干个不同的组。 用户通过认证信息,如密码、API keys等进行验证 。 |
Tenant | 一个资源或对象的抽象表示,租户可以包含多个用户,不同租户之间相互隔离,根据service运行的需求,租户可以映射为账户、组织、项目或服务 。 |
Project(项目) | 是各个服务中的一些可以访问的资源集合,用来分组或隔离资源或身份对象。 |
Role | 可定制化的包含有特定用户权限的权限集合,这些资源包含虚拟机、镜像、存储资源等。同时可以关联到若干个User-Tenant对,来为User-Tenant对赋予权限。 用户既可以被添加到全局的角色,也可以被添加到指定项目内的角色中。其区别是,全局的角色适用于所有项目中的资源权限,而项目内的角色只适用于某个项目内的资源权限。 |
Token(令牌) | 用于限定User-Tenant对进行OpenStack API和资源访问的字符串表示。一个令牌会持续一段时间有效,也可以随时撤销。在keystone中主要是引入令牌机制来保护用户对资源的访问。 |
Credentials(凭证) | 用于确认用户身份的数据,例如:Username/Password 。 |
Authentication(校验) | 是确定用户身份的过程。 |
Service(服务) | OpenStack service,即OpenStack运行的组件服务 。 |
Keystone Client(keystone cli) | keystone的命令行工具,可以完成诸如创建用户、角色、服务和端点等大多数得leystone管理功能,是非常常用得CLI接口。 |
Endpoint(端点) | 一个可以通过网络来访问和定位某个OpenStack service得地址,通常是一个URL。简单得说,就是入口。在keystone中包含一个端点模板,这个模板提供了所有已存在的服务的端点信息。 |
keystone工作流程:
- 用户/API 想创建一个实例,首先会将自己的credentials(资格证书)发给keystone。认证成功后,keystone会颁给用户/API一个临时的令牌(Token)和一个访问服务的Endpoint。 PS:Token没有永久的 。
- 用户/API 把临时Token提交给keystone,keystone并返回一个Tenant(Project)
- 用户/API 向keystone发送带有特定租户的凭证,告诉keystone用户/API在哪个项目中,keystone收到请求后,会发送一个项目的token到用户/API PS:第一个Token是来验证用户/API是否有权限与keystone通信,第二个Token是来验证用户/API是否有权限访问我keystone的其它服务。用户/API 拿着token和Endpoint找到可访问服务
- 服务向keystone进行认证,Token是否合法,它允许访问使用该服务(判断用户/API中role权限)
- keystone向服务提供额外的信息。用户/API是允许方法服务,这个Token匹配请求,这个Token是用户/API的
- 服务执行用户/API发起的请求,创建实例
- 服务会将状态报告给用户/API。最后返回结果,实例已经创建。
二、Keyston运维样题
Keystone例题一
1.使用自行搭建的OpenStack私有云平台,修改普通用户权限,使普通用户不能对镜像进行创建和删除操作。
vim /etc/glance/policy.json
add_image: role:admin
delete_image: role:admin
解析:每一个组件下都有一个policy.json文件,例如上一步操作,add_image: role:admin表示,允许角色为admin的用户创建镜像,翻过来理解,只能允许admin角色创建,普通用户就不可以了。或者写role: not_user,表示不允许普通用户创建。(严谨格式可参考其余配置文件或官网)。
Keystone例题二
2.创建用户testuser,密码为xiandian,将 testuser 用户分配给 admin 项目,赋予用户 admin 的权限。
openstack user create testuser --password xiandian --project admin --role admin
解析:使用open stack命令,user模块,动作 create,–password表示密码,–project 表示项目 --role表示用户角色。open stack帮助手册可使用open stack user --help查看。创建用户也可以使用keystone提供的cli,使用user --help查询命令手册。
三、Glance组件
Glance组件功能
- Glance是OpenStack镜像服务,用来注册、登陆和检索虚拟机镜像。
- Glance服务提供了一个REST API,使你能够查询虚拟机镜像元数据和检索的实际镜像。
- 通过镜像服务提供的虚拟机镜像可以存储在不同的位置,从简单的文件系统对象存储到类似OpenStack对象存储系统。
- 提供了对虚拟机部署的时候所能提供的镜像的管理,包含镜像的导入,格式,以及制作相应的模板
GLance镜像状态
- Queued:初始化镜像状态,在镜像文件刚刚被创建,在glance数据库中已经保存了镜像标示符,但还没有上传至glance中,此时的glance对镜像数据没有任何描述,其存储空间为0。
- Saving:镜像的原始数据在上传中的一种过度状态,它产生在镜像数据上传至glance的过程中,一般来讲,glance收到一个image请求后,才将镜像上传给glance。
- Active:镜像成功上传完毕以后的一种状态,它表明glance中可用的镜像。
- Killed:镜像上传失败或者镜像文件不可读的情况下,glance将镜像状态设置成Killed。
- Deleted:镜像文件马上会被删除,只是当前glance这种仍然保留该镜像文件的相关信息和原始镜像数据。
- Pending_delete:镜像文件马上会被删除,镜像文件不能恢复。
Glance镜像格式
- RAW:RAW即常说的裸格式,它其实就是没有格式,最大的特点就是简单,数据写入什么就是什么,不做任何修饰,所以再性能方面很不错,甚至不需要启动这个镜像的虚拟机,只需要文件挂载即可直接读写内部数据。并且由于RAW格式简单,因此RAW和其他格式之间的转换也更容易。在KVM的虚拟化环境下,有很多使用RAW格式的虚拟机。
- QCOW2:它是QEMU的CopyOn Write特性的磁盘格式,主要特性是磁盘文件大小可以随着数据的增长而增长。譬如创建一个10GB的虚拟机,实际虚拟机内部只用了5GB,那么初始的qcow2磁盘文件大小就是5GB。与RAW相比,使用这种格式可以节省一部分空间资源。
- VHD:VHD也是一种通用的磁盘格式。微软公司的Virtual PC和Hyper-V使用的就是VHD格式。VirtualBox也提供了对VHD的支持。如果要在OpenStack上使用Hyper-V的虚拟化,就应该上传VHD格式的镜像文件。
- VMDK:VMware创建的一个虚拟机磁盘格式,目前也是一个开放的通用格式,除了VMware自家的产品外,QEMU和VirtualBox也提供了对VMDK格式的支持。
- VDI:Oracle公司的VirtualBox虚拟软件所使用的格式。
- ISO:ISO是指一种存档数据文件在光盘上的格式。
- AKI、ARI、AMI:Amazon公司的AWS所使用的镜像格式。
Glance架构
- Glance-api:接收REST API的请求,然后通过其他模块(glance-registry及image store)来完成诸如镜像的查找、获取、上传、删除等操作,默认监听端口9292。
- Glance-registry:用于与MariaDB数据库交互,用于存储或获取镜像的元数据(metadata),默认监听端口9191。
- Store Adapter:通过提供的存储接口来获取镜像
- Database:Image的metadata会保持到database中,主要使用MySQL和SQLite**。**
配置文件
- Glance-api.conf :Glance api 服务配置文件。
(1)Glance服务安装的日志和调试信息,例如:debug、日志文件路径log_file等参数。
(2)Glance服务的API服务器的相关信息。例如:服务绑定的IP地址、端口bind_port等参数
(3)Registry服务的相关信息,例如:Registry服务的网络地址、监听的端口号、glance与Registry间通信的协议等。
(4)系统消息相关参数,该部分主要配置glance与系统消息的收发。消息队列rabbitmq的IP地址、监听端口等参数
(5)镜像后端存储的相关配置,一般情况下,glance-api.config中包含普通文件存储、swift、S3、RBD等较为常见的存储设备的信息配置。
2. Glance-registry.conf :Glanceregistry服务配置文件,用户存储镜像有关的元数据。
3. glance-scrubber.conf :用于清理已删除的镜像的服务。
4. policy.json :镜像服务的访问控制。在这里,我们可以定义角色和策略,是OpenStack Glance中的安全特性。
工作流程图
四、Glance运维样题
Glance例题一
1.使用命令将提供的CentOS_7.5_x86_64_XD.qcow2镜像上传至平台,命名为centos7.5-1804。
openstack image create centos7.5-1804 --disk-formate qcow2 --file /opt/CentOS_7.5_x86_64_XD.qcow2 #课通过仪表盘操作
解析:此处上传镜像并执行相关操作属于基本操作,在web页面也依然可以执行相关操作
Glance例题二
2.创建一台云主机(镜像使用 CentOS7.5,flavor使用带临时磁盘 50G 的),配置该主机为 nfs 的 server 端,将该云主机中的/mnt/test 目录进行共享(目录不存在可自行创建)。然后配置 controller 节点为 nfs 的 client 端,要求将/mnt/test目录作为 glance 后端存储的挂载目录。
所有节点均关掉Firewalld和Selinux
#nfs_server and controller
yum install nfs-utils rpcbind -y
#nfs_server
vim /etc/exports
/mnt/test 172.128.11.0/24(rw,no_root_squash,sync) 设置共享目录#此处IP为controllerIP
exportfs -r
systemctl start rpcbind && systemctl enable rpcbind
systemctl start nfs && systemctl enable nfs
#nfs_server and controller
showmount -e 172.128.13 #查看共享情况 此处IP为nfs_serverIP
#controller
mount -t nfs 172.128.13:/mnt/test /var/lib/glance/images #共享挂载此处IP为nfs_serverIP
chown glance:glance /var/lib/glance/images #设置用户组